Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Python: add hook to check against dependencies in a requirements.txt file #71908

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

FRidh
Copy link
Member

@FRidh FRidh commented Oct 24, 2019

Python applications are often not distributed as installable packages
using setuptools/flit/..., but instead a requirements.txt file is
often given.

This commit adds a hook to check whether the listed deps are fullfilled.

To ignore a certain requirement, use substituteInPlace to
replace/remove it.

Motivation for this change
Things done
  • Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
  • Built on platform(s)
    • NixOS
    • macOS
    • other Linux distributions
  • Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
  • Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
  • Tested execution of all binary files (usually in ./result/bin/)
  • Determined the impact on package closure size (by running nix path-info -S before and after)
  • Ensured that relevant documentation is up to date
  • Fits CONTRIBUTING.md.
Notify maintainers

cc @

…file

Python applications are often not distributed as installable packages
using setuptools/flit/..., but instead a `requirements.txt` file is
often given.

This commit adds a hook to check whether the listed deps are fullfilled.

To ignore a certain requirement, use `substituteInPlace` to
replace/remove it.
Copy link
Member Author

@FRidh FRidh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note I haven't actually tested this yet.

echo "Error: no $requirementsCheckFile was given."
exit 1

@pythonCheckInterpreter@ @requirementsCheckScript@ $requirementsCheckFile
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hardcoding the interpreter I don't like very much because it makes it harder when testing a Python env. In that case, one would have to set PYTHONPATH or NIX_PYTHONPATH to include that env.

The only alternative I see is using that env's Python to execute this, but we can't automate that, which means users would have to copy in the check-requirements.py script instead.

@teto
Copy link
Member

teto commented Oct 24, 2019

Recently had to ask a developer to add a setup.py because of nix while he was
just using the requirements.txt so it's a welcome addition.

@jonringer
Copy link
Contributor

not sure how i feel about this, I've seen a lot of cases where people just do pip freeze > requirements.txt as a way to ensure everyone has exactly the same packages.

As far as i understand, a requirements.txt is aimed more at being a system (many project) construct rather than a per-package construct

@FRidh
Copy link
Member Author

FRidh commented Oct 24, 2019 via email

@jonringer
Copy link
Contributor

oh, if you strip the versioning info, then I would agree, at least you would have the full package set

@stale
Copy link

stale bot commented Jun 1, 2020

Thank you for your contributions.
This has been automatically marked as stale because it has had no activity for 180 days.
If this is still important to you, we ask that you leave a comment below. Your comment can be as simple as "still important to me". This lets people see that at least one person still cares about this. Someone will have to do this at most twice a year if there is no other activity.
Here are suggestions that might help resolve this more quickly:

  1. Search for maintainers and people that previously touched the
    related code and @ mention them in a comment.
  2. Ask on the NixOS Discourse. 3. Ask on the #nixos channel on
    irc.freenode.net.

@stale stale bot added the 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md label Jun 1, 2020
@stale stale bot removed the 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md label Oct 3, 2020
@stale
Copy link

stale bot commented Jun 4, 2021

I marked this as stale due to inactivity. → More info

@stale stale bot added the 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md label Jun 4, 2021
@wegank wegank marked this pull request as draft March 20, 2024 15:09
@stale stale bot removed the 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md label Mar 20, 2024
@wegank wegank added the 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md label Mar 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants