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

Minimum dependencies test job #1203

Closed
ivirshup opened this issue Oct 19, 2023 · 4 comments · Fixed by #1314
Closed

Minimum dependencies test job #1203

ivirshup opened this issue Oct 19, 2023 · 4 comments · Fixed by #1314
Assignees
Milestone

Comments

@ivirshup
Copy link
Member

Please describe your wishes and possible alternatives to achieve the desired result.

We should be testing against minimum versions of our dependencies. This is motivated by several recent issues related to pandas versions.

I propose we add a test job that grabs the minimum bounds of our dependencies and tests against it.

  • This should test against our minimum python version
  • This should run on main and release branches
  • This should include optional dependencies
  • We should figure out what the minimum version required is for our dependencies. I would propose:
    • Recently added and optional dependencies can have high lower bounds
    • Core dependencies should try and follow SPEC 0
  • Keeping the job up to date with the pyproject.toml must be automated.

Unfortunately, it doesn't look like there's a great way to automate the job:

We can probably just write a script to parse this from our pyproject.toml.

cc: @flying-sheep

@flying-sheep
Copy link
Member

We can probably just write a script to parse this from our pyproject.toml.

Very easily. If we run that job in Python 3.11, we don’t even have to add a test dependency, we can just use the built-in tomllib module to parse pyproject.toml and grab the list of version specifier strings with it.

Then parse it using packaging.specifiers.SpecifierSet and transform it into a list of == specs.

Then begins the “fun” of finding out what the real minimum versions are that we support.

@ivirshup
Copy link
Member Author

ivirshup commented Oct 25, 2023

This gets more complicated for cupy since:

  • You gotta specify the version of CUDA if you install cupy from pip
  • CUDA is installed for the system image, not via pip

So we may need to upgrade out GPU testing system to let us use other versions of CUDA, so that we can support older cupy to test against them.

I think we'll just skip this for now.

@ivirshup
Copy link
Member Author

Another potential solution is to use https://pypi.org/project/pypi-timemachine/, which would help with transitive dependencies. However, I think this raises some new questions like: "what date do we set it to" and "what if a particular dependency should be from a newer date".

@flying-sheep
Copy link
Member

Yeah, I feel like a PyPI time machine is more for “I can’t figure out how to get a working environment for this old thing anymore”, not our use case.

@flying-sheep flying-sheep modified the milestones: 0.10.3, 0.10.4 Oct 31, 2023
@flying-sheep flying-sheep modified the milestones: 0.10.4, 0.10.5 Jan 4, 2024
@ivirshup ivirshup mentioned this issue Jan 16, 2024
4 tasks
@flying-sheep flying-sheep linked a pull request Jan 18, 2024 that will close this issue
4 tasks
@ivirshup ivirshup modified the milestones: 0.10.5, 0.10.6 Jan 26, 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 a pull request may close this issue.

2 participants