Skip to content

adding pipenv support #14114

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

Closed
wants to merge 3 commits into from
Closed

Conversation

elreydetoda
Copy link
Contributor

@elreydetoda elreydetoda commented Dec 28, 2020

Thank you for this contribution! While pipenv was a good solution when this PR was created in 2020, the Python packaging ecosystem has evolved significantly since then.

We're closing this PR as the community has largely moved beyond pipenv to more modern solutions. We'll be exploring simpler packaging options that minimize setup requirements for non-developer users.

We appreciate your effort in improving Algo's developer experience!

@jauderho
Copy link
Contributor

jauderho commented Sep 1, 2021

+1 to this.

We can generate a matching requirements.txt from the Pipefile for folks that want to continue using that but in general, I've found that pipenv has been better at working out the constraints & dependencies.

@elreydetoda
Copy link
Contributor Author

It's been a bit since I have installed the deps for that branch, but I should easily be able to update this PR if someone from the project wants to accept it 🙂

@jauderho
Copy link
Contributor

jauderho commented Sep 1, 2021

I'd say to wait after #14272 is merged

@elreydetoda elreydetoda reopened this Nov 3, 2021
@elreydetoda
Copy link
Contributor Author

elreydetoda commented Nov 3, 2021

tl;dr: this has the exact same dependencies that the requirements.txt has in master currently.

So, this Pipfile & Pipfile.lock should be pinning to the exact dependencies inside the current requirements.txt.

I added an intermediary commit in there, so I could add "*" for all the dependencies. This will make upgrades in the future easier, but in the last commit you can see I reverted the hashes from the initial commit and updated the hash line specifically so Pipenv doesn't try to update the lock file again.

$ gd HEAD..5210bf4 | cat
diff --git a/Pipfile b/Pipfile
index 3926440..8002695 100644
--- a/Pipfile
+++ b/Pipfile
@@ -4,10 +4,10 @@ verify_ssl = true
 name = "pypi"
 
 [packages]
-ansible-core = "*"
-ansible = "*"
+ansible-core = "==2.11.3"
+ansible = "==4.4.0"
 netaddr = "*"
-Jinja2 = "*"
+Jinja2 = "~=3.0.1"
 
 [dev-packages]
 
diff --git a/Pipfile.lock b/Pipfile.lock
index d5b4e73..bed9528 100644
--- a/Pipfile.lock
+++ b/Pipfile.lock
@@ -1,7 +1,7 @@
 {
     "_meta": {
         "hash": {
-            "sha256": "0c3c627d43a80cad0a384a195031ecdf469cea355e4b4e878b0a5f089e925d25"
+            "sha256": "1277a5279f6bb88863ea7a08d9bf546dca26dab2c405640d45fc5b5f958f9ec8"
         },
         "pipfile-spec": 6,
         "requires": {

Speaking of updates, the way you should be able to update dependencies with pipenv is pipenv update command.

I say should, because ( like @glennschler had an issue with here ) sometimes ansible wants a fresh install. So, in that can I have had to run pipenv --rm && pipenv install --skip-lock && pipenv lock. This will essentially install all packages "fresh" and then pin the dependencies after the install.

Also, the way that @jauderho was mentioning about generating the requirements file you can run this:

$ pipenv lock -r    
#
# These requirements were autogenerated by pipenv
# To regenerate from the project's Pipfile, run:
#
#    pipenv lock --requirements
#

-i https://pypi.org/simple
ansible-core==2.11.6
ansible==4.8.0
cffi==1.15.0
cryptography==35.0.0; python_version >= '3.6'
jinja2==3.0.2
markupsafe==2.0.1; python_version >= '3.6'
netaddr==0.8.0
packaging==21.2; python_version >= '3.6'
pycparser==2.20; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'
pyparsing==2.4.7; python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'
pyyaml==6.0; python_version >= '3.6'
resolvelib==0.5.4

@dguido dguido closed this Aug 3, 2025
@elreydetoda
Copy link
Contributor Author

elreydetoda commented Aug 3, 2025

@dguido, next time would you mind just making your own comment at the bottom of the GitHub issue instead of directly editing my original comment? That was it keeps the context for anyone else if they stumble upon the issue. I personally know I can see the old version through the edit history, but that's not obvious to everyone.

Also, yes I completely understand that. I think a more modern solution would probably be like Astral's uv.
Has your team heard or considered that?

I see that the project already has a pyproject.toml, so it could just be an extension of that. I'd be happy to do a quick PoC if you'd like?

The nice thing about uv as well is that it's cross platform, as it is built on rust, so that makes it work under Windows or Linux.

@elreydetoda elreydetoda deleted the pipenv branch August 3, 2025 14:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants