Suggestion: Release wheels of PyICU
Created by: SethMMorton
References: #118 and #117 (closed).
PyICU is attempting to be compatible with all 15 "active" versions of ICU. Attempting to keep one library compatible with 15 third-party library versions, 5 Python versions, and 3 OSs is asking for a LOT of work (135 permutations!), especially for a single developer. I do not really think that the open source community expects/should expect one developer to support such modularity.
If it were me, I would not attempt to support so many ICU versions. I would do both of the following:
- Compile the latest ICU as a static library, then release wheels for PyICU linked against that ICU version
- This has three huge benefits
- You only really need to test against the ICU version against which you ship
- The user does not need to install ICU themselves/ahead of time before installing/using PyICU, which lowers the barrier of entry to using the library (a bigger deal than you might think)
-
pip install pyicu
can be done without a compiler
- This has three huge benefits
- Specify in your README in the installation instructions section against which ICU versions the given PyICU version is valid with, so that folks that want to build from source (such as distro package maintainers) can be assure some level of compatibility
- You would add tests only against the listed versions in the CI
Creating/uploading wheels can be done through CI with a package like https://github.com/joerick/cibuildwheel, so it's not necessarily a whole lot of extra work once the CI configuration is done.