-
-
Notifications
You must be signed in to change notification settings - Fork 306
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
Put fewer packages on PyPI #487
Comments
Another thing to think about is whether the package can be built using the limited API, it seems cython has some support and there are some hints for cibuildwheel. Then there would only be one wheel for all the python versions on a platform. |
Unless I'm missing something, I make it 122MB. Which seems a little more reasonable. Although smaller is obviously still better. I'd be reluctant to recommend Cython's limited API support yet (by all means try it and submit bug reports, but I wouldn't release it to actual users) |
Sorry, miscalculated. Fixing the comment |
The other approach that people sometimes use is to ship the Cython-generated C files rather than binaries (although obviously that then requires the user to have a C compiler, but doesn't require the user to have Cython). Obviously that could be combined with pure-Python mode as an additional fallback level. |
@mattip , this project had 360 000 downloads last month - https://pypistats.org/packages/dependency-injector You were looking at a wrong project with similar name. |
I shipped project as generated C code and it created some problems for the users. As you noted, with C sources everybody will need to install C compilers. And build time will be much higher. Also this spends much more resources in a global scope because of thousand of compilations vs a single one on CD server. Just removing the pre-compiled wheels from the project that already had ones doesn't seem to be a good solution. This will break people's software. |
@mattip , thank you, that's something to think about. The problem is that I'm stuck at the moment cause I can not make a single release. |
That makes more sense, thanks. Correct me if I am wrong, it seems this new release is for issue #477. Perhaps you could delay the release to the end of the month, and in the mean time shrink the release so it fits into the space you freed up by deleting older versions. I would expect the approval process for PyPI to take a few weeks anyway, they are very overburdened. |
@mattip Yeah, that's correct. You brought up a lot of interesting suggestions. I don't think I'll be able to apply all mentioned, but I should be able to make some improvements for sure. Thanks again for your input! |
This project requires an out-of-proportion amount of storage space on PyPI. This is problematic since the storage space is donated and the general assumption is that projects will not over-use the resources. In order to analyze what is going on, let's look at some data.
Each release of the project creates these artifacts (taken from the 4.35.1 release)
I think I left out the source tarball. This sums up to
122GB122MB per release. The project has had about 50 releases in the first half of 2021, sometimes multiple releases on a single day. This comes out to about12 TB12GB a year. It seems this project has under 2000 downloads a month. Scipy, by comparision, ships 18 wheels, each about 30MB, twice a year for 30GB of yearly storage and has about 30 million downloads a month (take those statistics with a grain of salt, they say the last version of this package is 1.2.0).So how can you reduce the resource requirements
by three orders of magnitude?pip install
will prefer binary wheels to pure python ones. You may be interested in refactoring the code to use the "pure python" mode available in cython 3.0, which will make supporting both modes in the codebase simpler.The text was updated successfully, but these errors were encountered: