build_in_directory was ~140 lines long which is a bit long for my taste.
It also has a bunch of nested if statements which I don't prefer.
The first ~60 lines are computing the platform, so I factored those out
into helper methods which have clearer intent and less indentation.
* Add structually typed GenericPythonConfiguration
Use structural typing for the return value of get_python_configurations
so that we don't have to specify a union of all possible PythonConfiguration
types
* address henryiii's comments
* Use Set in more places
* fix(style): use sub recommended replacement method
See https://docs.python.org/3/library/re.html#re.escape
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
* feat: add --build
* refactor: switch to using --only
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
* docs: cover --only
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
* docs: undo change to --plat for auditwheel
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
* (unrelated) speed up running the unit tests
based on a profile run, this speeds up the unit tests by 3x
* Remove `intercepted_build_args` reliance on `platform` fixture
* Add test that checks if 'only' overrides env var options
* Ensure that the --only command line option overrides env vars
* Fix UnboundLocalError
* Test cleanups
* style: typing.cast instead of plain cast
* feat: add only: to the GHA
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
Co-authored-by: Joe Rickerby <joerick@mac.com>
* chore: add PyLint and fix most issues
* fix: minor fixes after first push
* chore: remove reference to old toml lib
* chore: minor options cleanup
* ci: only fail with many pylint issues, annotate in GHA
* refactor: address review
* ci: force nox to report in CI
* refactor: use map instead of if chain
* refactor: simpler shell_with_arch
* refactor: even simpler shell_with_arch
* Restore if...elif...else blocks where guard-style is not intended
Co-authored-by: Joe Rickerby <joerick@mac.com>
* feature: allow local runs on windows/macOS
Cache python installations to a user cache folder using platformdirs.
The build environment is now a virtual environment to allow proper isolation.
Allows to run tests in parallel.
Co-authored-by: Joe Rickerby <joerick@mac.com>
* style(types): use new bracex static typing support
* style(types): add a bit more basic typing
* style(types): globally ignore ghapi
* style(types): include a bit more in the global ignores
* fix(types): line invalid on Python 3.6
* fix: require typing_extensions 3.10
* Add test for defaults, fix platform detection
* Improve correctness of reader.identifier with block
* Fix options test to be multiplatform
* 'Refactored by Sourcery'
docs: write a section on overrides
tests: test docker launches
feat: add identifiers to launches
test: add test for correct build step generation
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
* feat: support pypa build
fix: update `cibuildwheel.linux.troubleshoot` to know about build
Workaround issue with PyPy venv module by installing build[virtualenv]
fix: test_dependency_constraints_file when using build
fix: test/test_pep518.py
fix: use `strtobool` to parse `CIBW_PYPA_BUILD`
fix: update `cibuildwheel.linux.troubleshoot` to know about `python -m pip wheel`
test: use `build_mode` in `test/test_dependency_versions.py` tests
* refactor: use build-backend instead
* Apply suggestions from code review
Co-authored-by: Joe Rickerby <joerick@mac.com>
* refactor: use literal types for build_frontend
* refactor(tests): build_mode -> build_frontend_env
* Update test/test_before_build.py
Co-authored-by: Joe Rickerby <joerick@mac.com>
* feat: configuration support
* refactor: include manylinux, minor redesign
* "project global" overrides "default platform"
This allows overriding `repair-wheel-command` in the `[tool.cibuildwheel.global]` section.
* fix: add PyPy images
* refactor: remove global
* fix: support tables and arrays
* docs: add pyproject.toml config to docs
* docs: updates based on feedback
* fix: only join if sensible
* refactor: remove manylinux dict
* docs: examples headers and sections on each
* feat: support changing the config from the command line
* fix: use {package}
* tests: add a few tests and mention config one more place
* Restyle examples tabs to remove indent
* Unrelated docs improvements
* Absorb extra content into the tab
* Make the tabs smaller and to the right
* Copy edits to options
* Fix header ids
* Use fewer [tool.cibuildwheel] headers
* docs: minor additions/fixes
* feat: disallow options on some platforms
* docs: make the examples a tiny bit more tabby
* fix: enforce tables/lists are optionally separate
* Some unrelated fixes to the other tab styling
* Minor fix to tab styling
* Refactor to make code a bit more linear and immutable
* Minor docs changes
Co-authored-by: mayeut <mayeut@users.noreply.github.com>
Co-authored-by: Joe Rickerby <joerick@mac.com>
* Add CPython 3.10 support
* Fix logger displaying CPython 3.1 instead of 3.10
* Fix tests failing with CPython 3.10
* Use pytest instead of nose
* feat: --pre flag
Apply suggestions from code review
Co-authored-by: Matthieu Darbois <mayeut@users.noreply.github.com>
* fix: update Python update script to process beta versions
* refactor: prerelease-pythons
* Use `strtobool` to parse `CIBW_PRERELEASE_PYTHONS` env var
* Update python version filtering for universal2 & arm64
* Filter out CPython 3.10 and above for `test_manylinuxXXXX_only[manylinux1]` test
* Use CIBW_BUILD filtering rather than CIBW_SKIP for test_docker_images
* Use skip_patterns to filter out pre-releases
* Use `prerelease_pythons` instead of `pre`
* Reword `CIBW_PRERELEASE_PYTHONS` doc per review.
* Use `CIBW_PRERELEASE_PYTHONS: True` for usage example.
* Update `cibuildwheel --help` doc
* docs: add note on spec.filter
* Clean up the BuildSelector __repr__ by refactoring
* fix: remove platform variants for CIBW_PRERELEASE_PYTHONS
* docs: mention the flag
Co-authored-by: Henry Schreiner <henryschreineriii@gmail.com>
Co-authored-by: Joe Rickerby <joerick@mac.com>
* chore: rename joerick/cibuildwheel -> pypa/cibuildwheel
* Update Appveyor status badge markup
Note that it still has joerick/cibuildwheel - confusingly it's still within my appveyor account, but this is the new project that points to the pypa github repo
* Update Appveyor badge markup again
I went through a few passes to enable that project, here's the latest.
* Update Azure badge, also
* Update Travis badge to reference the .com
Co-authored-by: Joe Rickerby <joerick@mac.com>