Giter VIP home page Giter VIP logo

Comments (11)

aswinnnn avatar aswinnnn commented on June 2, 2024

can you show me the pyproject.toml that pyscan detects? like the content inside?

from pyscan.

jugmac00 avatar jugmac00 commented on June 2, 2024

Oh, does this imply that only projects with a full pyproject.toml are supported?

I am using setuptools with setup.py and setup.cfg and the pyproject.toml only for configuring the build backend a la...

[build-system]
requires = ["setuptools>=46.4.0", "wheel"]
build-backend = "setuptools.build_meta"

e.g. https://github.com/jugmac00/flask-reuploaded

It would be great to have a helpful error message 👍

from pyscan.

aswinnnn avatar aswinnnn commented on June 2, 2024

I see. Pyscan currently looks for the [dependencies] table on a pyproject.toml which seems to be the common way to convey dependencies, I'm not sure how exactly setuptools differs in specifying deps but this certainly seems interesting enough to be added support for.

from pyscan.

aswinnnn avatar aswinnnn commented on June 2, 2024

https://peps.python.org/pep-0631/

Here's the PEP from which the parser for pyproject.toml is partially based on.

from pyscan.

jugmac00 avatar jugmac00 commented on June 2, 2024

the common way to convey dependencies

I would not call it the "common way" - maybe it is the suggested way, but it is certainly not followed by all packaging tools.

You need to know that the lowest common denominator is that projects configure the build backend in the pyproject.toml, and from here on, it entirely depends on the build system how meta data is configured.

  • The currently probably still most widely used tool is setuptools, which has even its own configuration files - ie the config lives outside the pyproject.toml.
  • Poetry uses pyproject.toml, but stores the dependencies in tool.poetry.dependencies (and other keys), see https://python-poetry.org/docs/managing-dependencies/
  • Tools following your idea are probably hatch and flit, maybe others.

So, way to go :-)

P.S.: It is even not mandatory that Python projects use a pyproject.toml.

from pyscan.

aswinnnn avatar aswinnnn commented on June 2, 2024

I see. I was under the assumption that the PEP would be a little bit more popular than i thought. Its very weird that the build tools don't follow the PEP and each seems to have its own way of doing it, though. Looks like expanding the parsing of pyproject.toml is something that needs to be done, glad you pointed it out!

from pyscan.

jugmac00 avatar jugmac00 commented on June 2, 2024

Python exists for 30+ years, the pep 621 (which superseded the one you mentioned) was only accepted at the end of 2020 (and even only as provisional, see https://discuss.python.org/t/pep-621-round-3/5472/109 ) - so it will take time until most package managers will follow that, and probably a good part of Python projects won't update to use a modern package manager for a very long time.

from pyscan.

aswinnnn avatar aswinnnn commented on June 2, 2024

So support for the setuptools way of dependency spec in pyproject.toml is underway. Do you have any suggestions for other build systems which pyscan should support parsing from? My knowledge regarding them is limited

from pyscan.

jugmac00 avatar jugmac00 commented on June 2, 2024

The most common ones I encounter are:

  • setuptools
  • poetry
  • hatch
  • flit
  • pdm

from pyscan.

aswinnnn avatar aswinnnn commented on June 2, 2024

great, pyscan should be able to support them by the release of next version, thanks

from pyscan.

aswinnnn avatar aswinnnn commented on June 2, 2024

Looking at https://setuptools.pypa.io/en/latest/userguide/dependency_management.html#declaring-required-dependency

Looks like setuptools does follow the way pyscan scans for dependencies, but since you're using setup.py like in flask-reuploaded all the dependency spec goes into install_requires, so pyscan would need to implement a way to parse that as well. Looks like setup.py needs its own parse implementation.

from pyscan.

Related Issues (13)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.