Commit Graph
202 Commits
Author SHA1 Message Date
Joe Rickerby 420ef86679 Apply @henryiii's suggestion 2023-04-10 22:24:20 +01:00
Joe Rickerby ae0ac92167 Use the platform object itself as the interface 2023-04-10 22:20:04 +01:00
Hood Chatham 26dd3f399e chore: Add a platform_interface type to export from each platform
This avoids the repetition of the platform checks in __main__.py
by defining a dataclass with `get_python_configurations` and `build`.
2023-04-10 13:30:23 -07:00
Hood Chatham 0036ac5254 Fix lints 2023-04-07 13:56:49 -07:00
Hood Chatham 2f3949953a chore: factor out _compute_platform from build_in_directory
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.
2023-04-07 13:30:03 -07:00
Hood Chatham d018570bc4 chore: add structurally typed GenericPythonConfiguration (#1458)
* 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
2023-04-06 14:40:25 -04:00
Joe Rickerby 9850864851 Rename 'environ' to 'env' 2022-12-05 19:18:54 +00:00
Joe Rickerby b00547cd97 Workaround the Github forgetting styles bug 2022-12-04 13:51:56 +00:00
Joe Rickerby 8d05681491 Improve the formatting of the preamble 2022-11-26 17:16:54 +00:00
Henry Schreiner 7c4bbf8cb3 chore: minor cleanups from reverb (#1293)
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
2022-10-07 08:47:31 -04:00
Joe Rickerby f7669045f5 Merge pull request #1258 from henryiii/henryiii/chore/dev
chore: nicer tracebacks and dev improvements
2022-09-25 09:34:05 +01:00
Joe Rickerby 5e5fdd1b9a Fix win32 identifiers with --only 2022-09-24 23:12:32 +01:00
Henry Schreiner 534cada6a5 chore: cleaner exception tracebacks
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
2022-09-16 11:05:35 -04:00
Henry SchreinerandJoe Rickerby eb39da0b10 feat: add --only (#1098)
* 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>
2022-09-09 08:34:47 -04:00
Max Bachmann ed73b75efe avoid RecursionError on Windows 2022-09-04 10:27:05 +02:00
jack1142 67071395fa Add Cirrus CI to CIProvider enum 2022-08-17 15:47:39 +02:00
mayeut 6d27f05c7c chore: use from __future__ import annotations 2022-07-19 07:47:45 +02:00
Joe Rickerby 7c56b98331 Merge remote-tracking branch 'origin/main' into new_podman_support 2022-06-29 20:20:36 +01:00
Joe Rickerby d66c1e92bf Lots more naming changes to reflect that containers are not necessarily 'docker' 2022-06-27 18:30:49 +01:00
Joe Rickerby cdccbd1c46 Merge remote-tracking branch 'origin/main' into henryiii/refactor/namespace 2022-06-17 18:08:17 +01:00
Henry Schreiner 98fedb7e51 refactor: use dataclasses vs. NamedTuples 2022-04-28 11:41:47 -04:00
Henry Schreiner 35054666bb refactor: review comments 2022-04-27 17:18:01 -04:00
Henry Schreiner b1e8549bb1 fix: minor cleanup 2022-04-27 14:55:30 -04:00
Henry Schreiner 958a7c32c1 refactor: use single entry for SDist builds
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
2022-04-27 09:37:17 -04:00
Joe Rickerby 91fae8268e Add prog arguments to ArgumentParser to prevent the wrong inferred name
when calling like 'python -m cibuildwheel', we get errors like

usage: __main__.py [-h] [--platform {auto,linux,macos,windows}] [--archs ARCHS] [--output-dir OUTPUT_DIR] [--config-file CONFIG_FILE]
                   [--print-build-identifiers] [--allow-empty] [--prerelease-pythons]
                   [package_dir]
__main__.py: error: unrecognized arguments: --sad

With this change, we get error outputs like:

usage: cibuildwheel [-h] [--platform {auto,linux,macos,windows}] [--archs ARCHS] [--output-dir OUTPUT_DIR] [--config-file CONFIG_FILE]
                    [--print-build-identifiers] [--allow-empty] [--prerelease-pythons]
                    [package_dir]
cibuildwheel: error: unrecognized arguments: --asda
2022-04-27 01:01:31 -04:00
Henry SchreinerandJoe Rickerby d6dc3b7cd9 chore: add PyLint and fix most issues (#999)
* 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>
2022-02-27 14:16:37 -05:00
Matthieu DarboisandJoe Rickerby ab13f7a9de feature: allow local runs on windows/macOS (#974)
* 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>
2022-01-08 11:30:48 +01:00
Henry Schreiner 603a7b5bde style(types): use new bracex static typing support (#887)
* 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
2021-10-26 15:56:35 -04:00
Henry SchreinerandJoe Rickerby 12c64365e2 fix: add missing config-file option to the action (#883)
* fix: add missing config-file option to the action

* feat: empty config-file triggers default behavior

* Apply suggestions from code review

Co-authored-by: Joe Rickerby <joerick@mac.com>

Co-authored-by: Joe Rickerby <joerick@mac.com>
2021-10-22 22:34:38 -04:00
Joe Rickerby 4f53583801 Monkeypatch sys.argv instead of using an argument to main()
Just a style thing... didn't want to complicate the main func
for the sake of a couple tests
2021-10-17 21:24:03 +01:00
Joe Rickerby 08a694485d refactor: Override options redesign
* 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>
2021-10-16 21:39:55 -04:00
Henry Schreiner cd07697fe5 feat: adding overrides 2021-10-16 21:34:02 -04:00
Henry SchreinerandJoe Rickerby f511961b40 chore: adding extra checks, more scoping (#867)
* chore: adding extra checks, more scoping

* Remove 'manual' pre-commit checks from CI

Co-authored-by: Joe Rickerby <joerick@mac.com>
2021-10-16 21:31:20 -04:00
Henry Schreiner 3dc4c54a15 refactor: pull out more option computation to options.py 2021-09-22 11:18:52 -04:00
Henry Schreiner a7047a6955 refactor: pull out compute_options 2021-09-20 12:45:48 -04:00
Henry Schreiner a07edd9ddc refactor: pull repr out of BuildOptions 2021-09-20 12:39:51 -04:00
Matthieu DarboisandJoe Rickerby 803c5e46ce feat: add musllinux support (PEP 656) (#768)
* feat: add musllinux support (PEP 656)

Add musllinux support (PEP 656) allowing to build wheels for musl libc based distros (e.g. Alpine)

* feat: add musllinux support (PEP 656) doc

* doc: combine `CIBW_MANYLINUX_*_IMAGE` & `CIBW_MUSLLINUX_*_IMAGE` options

* fix: doc to be squashed

* doc: combine manylinux /musllinux in README

* Update docs/options.md

Co-authored-by: Joe Rickerby <joerick@mac.com>

Co-authored-by: Joe Rickerby <joerick@mac.com>
2021-09-20 08:12:35 +02:00
Henry Schreiner a665fb7746 fix: fallthrough empty manylinux images (#829)
* fix: fall through if empty for manylinux

* refactor: review cleanup
2021-09-17 15:52:43 -04:00
Henry SchreinerandJoe Rickerby 515e9be2c4 feat: support pypa build (#521)
* 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>
2021-06-23 10:47:18 -04:00
f62cbc303a feat: configuration support (#684)
* 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>
2021-06-21 12:26:46 -04:00
Henry SchreinerandMatthieu Darbois 768ecab3f8 feat: update deprecated option check (#700)
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
Co-authored-by: Matthieu Darbois <mayeut@users.noreply.github.com>
2021-05-29 14:20:19 +02:00
5b22fc636b feat: add CPython 3.10 pre-release support (#675)
* 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>
2021-05-28 18:26:55 -04:00
Matthieu Darbois 58b2dc367c Merge pull request #671 from YannickJadoul/pypy-7.3.5
Update PyPy to 7.3.5 and use PyPA's manylinux images with PyPy
2021-05-25 18:04:18 +02:00
Henry SchreinerandJoe Rickerby 3be2d0c356 chore: rename joerick/cibuildwheel -> pypa/cibuildwheel (#682)
* 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>
2021-05-24 10:21:03 -04:00
mayeut d84665491a Add i686 support for PyPy 2021-05-24 10:32:52 +02:00
mayeut c29a701ebc Add aarch64 support for PyPy 2021-05-24 10:32:51 +02:00
Henry Schreiner bda76b21cb style: activate string normalization 2021-05-03 13:12:36 -04:00
mayeut d1900f6a05 Fix misaligned triple-quote blocks 2021-05-03 13:12:36 -04:00
Henry Schreiner 178aaea6c7 style: apply black via pre-commit run -a 2021-05-03 13:12:36 -04:00
Henry Schreiner 9cbed6a9be chore: add black for all code, no string norm 2021-05-03 13:12:36 -04:00