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

Allow changing the versioning scheme for python_distribution first-party dependencies #10977

Merged
merged 6 commits into from Oct 19, 2020

Conversation

Eric-Arellano
Copy link
Contributor

@Eric-Arellano Eric-Arellano commented Oct 16, 2020

Closes #10908.

Users can now choose between no version requirements, compatible versions (~=), and exact requirements (==). See https://www.python.org/dev/peps/pep-0440/#compatible-release.

[ci skip-rust]
[ci skip-build-wheels]

…ion` first-party dependencies

# Rust tests and lints will be skipped. Delete if not intended.
[ci skip-rust]

# Building wheels and fs_util will be skipped. Delete if not intended.
[ci skip-build-wheels]
src/python/pants/backend/python/goals/setup_py.py Outdated Show resolved Hide resolved
register(
"--exact-first-party-dependency-requirements",
type=bool,
default=False,
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should default to ~=, but curious what you all think.

Note that this is an API change. If this weren't 2.0, we would need to set the default to using == and use a deprecation cycle to be able to change the default.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I went back to using the prior default of ==, because imo the default should favor correctness over ergonomics. Users can loosen it if they are okay with the risk of less correctness.

Also, we avoid a deprecation cycle.

# Rust tests and lints will be skipped. Delete if not intended.
[ci skip-rust]

# Building wheels and fs_util will be skipped. Delete if not intended.
[ci skip-build-wheels]
@coveralls
Copy link

coveralls commented Oct 16, 2020

Coverage Status

Coverage remained the same at 0.0% when pulling 9af929a on Eric-Arellano:actual-setup-py into 9edbd82 on pantsbuild:master.

# Rust tests and lints will be skipped. Delete if not intended.
[ci skip-rust]

# Building wheels and fs_util will be skipped. Delete if not intended.
[ci skip-build-wheels]
@Eric-Arellano Eric-Arellano changed the title Allow using compatible release versions (~=) with python_distribution first-party dependencies Allow changing the versioning scheme for python_distribution first-party dependencies Oct 16, 2020
# Rust tests and lints will be skipped. Delete if not intended.
[ci skip-rust]

# Building wheels and fs_util will be skipped. Delete if not intended.
[ci skip-build-wheels]
We should probably default to the safest behavior, given that the purpose of a tool like Pants is correctness.

This also avoids making a breaking API change.

# Rust tests and lints will be skipped. Delete if not intended.
[ci skip-rust]

# Building wheels and fs_util will be skipped. Delete if not intended.
[ci skip-build-wheels]
class PythonDistributionSubsystem(Subsystem):
"""Options for packaging wheels/sdists from a `python_distribution` target."""

options_scope = "python-distribution"
Copy link
Sponsor Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this be python_distribution to match the target type name?

Related: I want to make a change that normalizes dashes in scope names to underscores, so that they behave similarly to the option name itself. (i.e., --sco-pe-na-me and [sco_pe].na_me both work, as well as, [sco-pe].na_me for backwards compat).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I had it as python_distribution before, but changed it because every single scope I've seen using -, so it seemed confusing to be inconsistent.

That flexibility would be nice. We will want to decide the canonical format used in documentation.

I don't think this is worth changing to python_distribution until we add the new flexibility you describe.

…p-py

# Conflicts:
#	src/python/pants/backend/python/goals/setup_py_test.py
@Eric-Arellano Eric-Arellano merged commit f6975ec into pantsbuild:master Oct 19, 2020
@Eric-Arellano Eric-Arellano deleted the actual-setup-py branch October 19, 2020 18:23
Eric-Arellano added a commit to Eric-Arellano/pants that referenced this pull request Oct 19, 2020
…party dependencies (Cherry-pick of pantsbuild#10977)

[ci skip-rust]
[ci skip-build-wheels]
# Conflicts:
#	src/python/pants/backend/python/goals/setup_py_test.py
Eric-Arellano added a commit that referenced this pull request Oct 19, 2020
…party dependencies (Cherry-pick of #10977) (#10989)

[ci skip-rust]
[ci skip-build-wheels]
@gshuflin gshuflin mentioned this pull request Oct 30, 2020
gshuflin added a commit that referenced this pull request Oct 31, 2020
Internal-only changes: 

* upgrade to cpython crate v0.5.1 (#11052)
  `PR #11052 <https://github.com/pantsbuild/pants/pull/11052>`_

* Prepare 2.0.0 (#11053)
  `PR #11053 <https://github.com/pantsbuild/pants/pull/11053>`_

* Revert "Add new EngineAware method metadata() (#11030)" (#11047)
  `PR #11030 <https://github.com/pantsbuild/pants/pull/11030>`_
  `PR #11047 <https://github.com/pantsbuild/pants/pull/11047>`_

* Remove deprecated `python_binary` target in favor of `pex_binary` (#11046)
  `PR #11046 <https://github.com/pantsbuild/pants/pull/11046>`_

* Prepare 2.0.0rc3 (#11044)
  `PR #11044 <https://github.com/pantsbuild/pants/pull/11044>`_

* Eagerly validate entry points for `setup_py().with_binaries()` (#11034)
  `PR #11034 <https://github.com/pantsbuild/pants/pull/11034>`_
  `PR #11021 <https://github.com/pantsbuild/pants/pull/11021>`_

* Use Ubuntu Bionic for CI (#11027)
  `PR #11027 <https://github.com/pantsbuild/pants/pull/11027>`_

* Prepare 2.0.0rc2 (#11017)
  `PR #11017 <https://github.com/pantsbuild/pants/pull/11017>`_

* Remove RunTrackerLogger (#11018)
  `PR #11018 <https://github.com/pantsbuild/pants/pull/11018>`_

* Upgrade Pex to 2.1.20 (#11014)
  `PR #11014 <https://github.com/pantsbuild/pants/pull/11014>`_

* Remove more unused code from RunTracker (#11012)
  `PR #11012 <https://github.com/pantsbuild/pants/pull/11012>`_

* Add type annotations to AggregatedTimings (#11009)
  `PR #11009 <https://github.com/pantsbuild/pants/pull/11009>`_

* Increase default `[python-setup].resolver_jobs` to `cpu_count / 2` (#11006)
  `PR #11006 <https://github.com/pantsbuild/pants/pull/11006>`_

* Include `<PYENV>` in `[python-setup].interpreter_search_paths` default (#10998)
  `PR #10998 <https://github.com/pantsbuild/pants/pull/10998>`_

* Remove PantsDaemonStats class wrapper (#11003)
  `PR #11003 <https://github.com/pantsbuild/pants/pull/11003>`_
  `PR #files#r508861045 <https://github.com/pantsbuild/pants/pull/11000/files#r508861045>`_

* Revert using libCST for dep inference due to performance (#10907) (#11001)
  `PR #10907 <https://github.com/pantsbuild/pants/pull/10907>`_
  `PR #11001 <https://github.com/pantsbuild/pants/pull/11001>`_


* Run tracker refactor (#11000)
  `PR #11000 <https://github.com/pantsbuild/pants/pull/11000>`_

* refactor Core::new including command runner setup (#10993)
  `PR #10993 <https://github.com/pantsbuild/pants/pull/10993>`_
  `PR #10960 <https://github.com/pantsbuild/pants/pull/10960>`_

* Allow changing the versioning scheme for `python_distribution` first-party dependencies (#10977)
  `PR #10977 <https://github.com/pantsbuild/pants/pull/10977>`_

* Remove tokio Handle type from Executor::new (#10980)
  `PR #10980 <https://github.com/pantsbuild/pants/pull/10980>`_

* Remove deprecated `Address.parse()` and `Address.reference()` (#10981)
  `PR #10981 <https://github.com/pantsbuild/pants/pull/10981>`_

* Remove project_ methods from the externs module (#10955)
  `PR #10955 <https://github.com/pantsbuild/pants/pull/10955>`_

* Prepare 2.0.0rc1 (#10972)
  `PR #10972 <https://github.com/pantsbuild/pants/pull/10972>`_

* Fix interpreter selection when building a PEX to use `[python-setup].interpreter_search_paths` (#10965)
  `PR #10965 <https://github.com/pantsbuild/pants/pull/10965>`_

* Delete `JsonReporter` (#10964)
  `PR #10964 <https://github.com/pantsbuild/pants/pull/10964>`_

* Fix log (#10959)
  `PR #10959 <https://github.com/pantsbuild/pants/pull/10959>`_

* Expose getattr method for Python-related APIs (#10953)
  `PR #10953 <https://github.com/pantsbuild/pants/pull/10953>`_

* Upgrade tokio package to 0.2.22 (#10949)
  `PR #10949 <https://github.com/pantsbuild/pants/pull/10949>`_

* Use `package` to build Pants's wheels, rather than `setup-py` (#10947)
  `PR #10947 <https://github.com/pantsbuild/pants/pull/10947>`_

* Simplify val_to_str and have it and val_to_log_level use PyObject (#10946)
  `PR #10946 <https://github.com/pantsbuild/pants/pull/10946>`_
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Allow for looser inter-project requirement versions in setup-py
4 participants