internlm/SWE-Fixer-Train-110K huggingface dataset:
Repository: pex-tool/pex

Issue:
Release 2.0.0
On the docket:
+ [x] Use pip for resolving and building distributions. #788
+ [x] Pex defaults to reproduceable builds. #791

That one issue closes out a slew of others, partially documented in #686.


Discussion:
Do we still want to flip the defaults to be `--no-use-system-time` and `--no-compile` for reproducible PEXes by default?

See the PR description https://github.com/pantsbuild/pex/pull/722#issue-275564603, which claims:

> We will default to --use-system-time for now to keep prior behavior, and then in a future release like 1.70 will switch over to default to reproducible builds.

This decision was made in https://github.com/pantsbuild/pex/pull/718.
> Do we still want to flip the defaults to be --no-use-system-time and --no-compile for reproducible PEXes by default?

Sounds good. I'll send up a small PR for that presently.

Resolving patch:
diff --git a/pex/version.py b/pex/version.py
--- a/pex/version.py
+++ b/pex/version.py
@@ -1,4 +1,4 @@
 # Copyright 2015 Pants project contributors (see CONTRIBUTORS.md).
 # Licensed under the Apache License, Version 2.0 (see LICENSE).
 
-__version__ = '1.6.12'
+__version__ = '2.0.0'


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.0.1
On the docket:

+ [x] pex --index-url=... fails in 2.0.0 #794


Discussion:
N.B.: There are two more issues on the API side left over from #790 but I'll push this one out to fix our more numerous CLI users quickly.

Resolving patch:
diff --git a/pex/version.py b/pex/version.py
--- a/pex/version.py
+++ b/pex/version.py
@@ -1,4 +1,4 @@
 # Copyright 2015 Pants project contributors (see CONTRIBUTORS.md).
 # Licensed under the Apache License, Version 2.0 (see LICENSE).
 
-__version__ = '2.0.0'
+__version__ = '2.0.1'


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.0.2
On the docket:

+ [x] Add a test of pypi index rendering. (#799)
+ [x] Fix `iter_compatible_interpreters` path biasing. (#798)
+ [x] Fix current platform handling. #801


Discussion:

Resolving patch:
diff --git a/pex/version.py b/pex/version.py
--- a/pex/version.py
+++ b/pex/version.py
@@ -1,4 +1,4 @@
 # Copyright 2015 Pants project contributors (see CONTRIBUTORS.md).
 # Licensed under the Apache License, Version 2.0 (see LICENSE).
 
-__version__ = '2.0.1'
+__version__ = '2.0.2'


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.0.3
On the docket:

+ [x] Pex should trust any host passed via `--index` or `--find-links`. #812
+ [x] A cache should always be used by `pex.resolver.resolve`. #809
+ [x] Use the resolve cache to skip installs. #815
+ [x] Parallelize resolve. #818
+ [x] Cache sdist & local project builds #817
+ [x] Unify resolve and runtime wheel caches. #820


Discussion:

Resolving patch:
diff --git a/pex/version.py b/pex/version.py
--- a/pex/version.py
+++ b/pex/version.py
@@ -1,4 +1,4 @@
 # Copyright 2015 Pants project contributors (see CONTRIBUTORS.md).
 # Licensed under the Apache License, Version 2.0 (see LICENSE).
 
-__version__ = '2.0.2'
+__version__ = '2.0.3'


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.0
On the docket:

The prime motivator:
+ [x] Pex does not download foreign abi3 wheels correctly #823

Changes to support the above as well as others:
+ [x] Fix pex resolving for foreign platforms. #835  
+ [x] Use pypa/packaging. #831
+ [x] Upgrade vendored setuptools to 42.0.2. #832
+ [x] De-vendor pex just once per version. #833
+ [x] Support VCS urls for vendoring. #834
+ [x] Support python 3.8 in CI. #829
+ [x] Fix pex resolution to respect --ignore-errors. #828
+ [x] Kill `pkg_resources` finders monkey-patching. #827
+ [x] Use flit to distribute pex. #826
+ [x] Cleanup extras_require. #825




Discussion:

Resolving patch:
diff --git a/pex/version.py b/pex/version.py
--- a/pex/version.py
+++ b/pex/version.py
@@ -1,4 +1,4 @@
 # Copyright 2015 Pants project contributors (see CONTRIBUTORS.md).
 # Licensed under the Apache License, Version 2.0 (see LICENSE).
 
-__version__ = '2.0.3'
+__version__ = '2.1.0'


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.1
On the docket:
+ [x] PEX 2.1.0 regression: pex file won't build inside a running docker image as user #850
+ [x] Fully pin vendored requirements. #853
+ [x] Fix `tox -epackage` to create pex supporting 3.8. #843
+ [x] Pex erroneously warns about needing to use vendored `pkg_resources` for distributions with empty `namespace_packages.txt` metadata files. #840
+ [x] Interpreter discovery and pyenv don't interact well #782
+ [x] ensure_python_interpreter() bootstrapping broken on pypy shard #477
+ [x] Resolve error checking does not account for environment markers. #851
+ [x] Ensure Pex PEX contraints match pex wheel / sdist. #863




Discussion:

Resolving patch:
diff --git a/pex/version.py b/pex/version.py
--- a/pex/version.py
+++ b/pex/version.py
@@ -1,4 +1,4 @@
 # Copyright 2015 Pants project contributors (see CONTRIBUTORS.md).
 # Licensed under the Apache License, Version 2.0 (see LICENSE).
 
-__version__ = '2.1.0'
+__version__ = '2.1.1'


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.2
On the docket:
+ [x] Isolating a pex chroot doesn't work from a zipped pex #882 


Discussion:

Resolving patch:
diff --git a/pex/version.py b/pex/version.py
--- a/pex/version.py
+++ b/pex/version.py
@@ -1,4 +1,4 @@
 # Copyright 2015 Pants project contributors (see CONTRIBUTORS.md).
 # Licensed under the Apache License, Version 2.0 (see LICENSE).
 
-__version__ = '2.1.1'
+__version__ = '2.1.2'


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.3
On the docket:
+ [x] Error eagerly if an interpreter binary doesn't exist #886 
+ [x] The pip-powered resolve in pex 2 will re-tokenize --find-links pages on each transitive requirement #887 


Discussion:

Resolving patch:
diff --git a/pex/version.py b/pex/version.py
--- a/pex/version.py
+++ b/pex/version.py
@@ -1,4 +1,4 @@
 # Copyright 2015 Pants project contributors (see CONTRIBUTORS.md).
 # Licensed under the Apache License, Version 2.0 (see LICENSE).
 
-__version__ = '2.1.2'
+__version__ = '2.1.3'


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.4
On the docket:
+ [x] Pex resolver API is not completely hermetic to PYTHONPATH. #892


Discussion:
I'm going to proceed with the 2.1.4 release as-is and move #898 and #899 to 2.1.5.

Resolving patch:
diff --git a/pex/version.py b/pex/version.py
--- a/pex/version.py
+++ b/pex/version.py
@@ -1,4 +1,4 @@
 # Copyright 2015 Pants project contributors (see CONTRIBUTORS.md).
 # Licensed under the Apache License, Version 2.0 (see LICENSE).
 
-__version__ = '2.1.3'
+__version__ = '2.1.4'


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.5
On the docket:
+ [x] Kill `Pip.spawn_install_wheel` `overwrite` arg. #907
+ [x] Silence pip warnings about Python 2.7. #908


Discussion:
Broken off from #893
Trimmed down the docket and moved undone items re top level requirements and markers to the 2.1.6 release tracked by #909.

Resolving patch:
diff --git a/pex/version.py b/pex/version.py
--- a/pex/version.py
+++ b/pex/version.py
@@ -1,4 +1,4 @@
 # Copyright 2015 Pants project contributors (see CONTRIBUTORS.md).
 # Licensed under the Apache License, Version 2.0 (see LICENSE).
 
-__version__ = '2.1.4'
+__version__ = '2.1.5'


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.6
On the docket:
+ [x] Don't delete the root `__init__.py` when devendoring. #915



Discussion:

Resolving patch:
diff --git a/pex/version.py b/pex/version.py
--- a/pex/version.py
+++ b/pex/version.py
@@ -1,4 +1,4 @@
 # Copyright 2015 Pants project contributors (see CONTRIBUTORS.md).
 # Licensed under the Apache License, Version 2.0 (see LICENSE).
 
-__version__ = '2.1.5'
+__version__ = '2.1.6'


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.7
On the docket:
+ [x] Top level requirements in PEX-INFO are missing needed environment markers. #898
+ [x] Improve error message when interpreters cannot be found #922
+ [x] Adding `--runtime-pex-root` option. #780
+ [x] The pex cache (PEX_ROOT) is not always controllable. #926
+ [x] Consider passing through `PEX_` env vars to PEXed Pex. #925
+ [x] Preserve PEX_ env variables after calling pex #180


Discussion:
Broken off from #902 
Moved "Top level environment markers are lost in built PEXes." (#899) to Release 2.1.8 (#933).

Resolving patch:
diff --git a/pex/version.py b/pex/version.py
--- a/pex/version.py
+++ b/pex/version.py
@@ -1,4 +1,4 @@
 # Copyright 2015 Pants project contributors (see CONTRIBUTORS.md).
 # Licensed under the Apache License, Version 2.0 (see LICENSE).
 
-__version__ = '2.1.6'
+__version__ = '2.1.7'


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.8
On the docket:
+ [x] Cache pip.pex. #937
+ [x] Ensure the interpreter path is a file #938
+ [x] Support an unzip toggle for PEXes. #939
+ [x] Better support unzip mode PEXes. #941


Discussion:
"Top level environment markers are lost in built PEXes." (#899) is now moved to the 2.1.9 release tracked in #944.

Resolving patch:
diff --git a/pex/version.py b/pex/version.py
--- a/pex/version.py
+++ b/pex/version.py
@@ -1,4 +1,4 @@
 # Copyright 2015 Pants project contributors (see CONTRIBUTORS.md).
 # Licensed under the Apache License, Version 2.0 (see LICENSE).
 
-__version__ = '2.1.7'
+__version__ = '2.1.8'


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.9
On the docket:
+ [x] Support for copying requirements from an existing pex. #948 



Discussion:
These are now moved to Release 2.1.10, tracked in #950:
+ Top level environment markers are lost in built PEXes. #899
+ Requirement resolution errors should provide enough information to resolve conflicts. #943

Resolving patch:
diff --git a/pex/version.py b/pex/version.py
--- a/pex/version.py
+++ b/pex/version.py
@@ -1,4 +1,4 @@
 # Copyright 2015 Pants project contributors (see CONTRIBUTORS.md).
 # Licensed under the Apache License, Version 2.0 (see LICENSE).
 
-__version__ = '2.1.8'
+__version__ = '2.1.9'


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.10
On the docket:
+ [x] Improve Pex packaging. (#961)
+ [x] Make the interpreter cache deterministic. (#960)
+ [x] Fix deprecation warning for `rU` mode (#956)
+ [x] Fix runtime resolve error message generation. (#955)
+ [x] Kill dead code. (#954)
+ [x] Many Pex tests fail under Python 2.7 in CI #967
+ [x] Add a `--local` mode for packaging the Pex PEX. #971
+ [x] Split Pex resolve API. (#970)
+ [x] Can't run PEX file when a dependency's wheel includes a build tag #964
+ [x] Expose network configuration in pex options. #803



Discussion:

Resolving patch:
diff --git a/pex/version.py b/pex/version.py
--- a/pex/version.py
+++ b/pex/version.py
@@ -1,4 +1,4 @@
 # Copyright 2015 Pants project contributors (see CONTRIBUTORS.md).
 # Licensed under the Apache License, Version 2.0 (see LICENSE).
 
-__version__ = '2.1.9'
+__version__ = '2.1.10'


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.11
A quick patch release to get: 
- [x] wheel cache should use relative path symlinks to allow for chroot environments #978 


Discussion:

Resolving patch:
diff --git a/pex/version.py b/pex/version.py
--- a/pex/version.py
+++ b/pex/version.py
@@ -1,4 +1,4 @@
 # Copyright 2015 Pants project contributors (see CONTRIBUTORS.md).
 # Licensed under the Apache License, Version 2.0 (see LICENSE).
 
-__version__ = '2.1.10'
+__version__ = '2.1.11'


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.12
On the docket:
- [x] A PEX_EXTRA_SYS_PATH runtime variable #989 


Discussion:

Resolving patch:
diff --git a/pex/version.py b/pex/version.py
--- a/pex/version.py
+++ b/pex/version.py
@@ -1,4 +1,4 @@
 # Copyright 2015 Pants project contributors (see CONTRIBUTORS.md).
 # Licensed under the Apache License, Version 2.0 (see LICENSE).
 
-__version__ = '2.1.11'
+__version__ = '2.1.12'


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.13
On the docket:
+ [x] vendored pip prompts for user input #983
+ [x] Add support for satisfying `--platform=X` with a local interpreter iff one is found. #996
+ [x] Feature Request : Syntax for --platform to refer to the current platform #997


Discussion:

Resolving patch:
diff --git a/pex/version.py b/pex/version.py
--- a/pex/version.py
+++ b/pex/version.py
@@ -1,4 +1,4 @@
 # Copyright 2015 Pants project contributors (see CONTRIBUTORS.md).
 # Licensed under the Apache License, Version 2.0 (see LICENSE).
 
-__version__ = '2.1.12'
+__version__ = '2.1.13'


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.16
On the docket:
+ [x] Zipped PEXes don't contain directory entries. #1021 
+ [x] Path scrubbing not working for python 3.8 package installed with homebrew #1025
+ [x] Improve UnsatisfiableInterpreterConstraintsError. #1028


Discussion:
Moved these to #1013:
+ Pex skipping pandas activation #1017
+ Invalid requirement, parse error at "'python_v' #940
+ Decouple PEX runtime interpreter selection from buildtime interpreter selection. #1020


Resolving patch:
diff --git a/pex/version.py b/pex/version.py
--- a/pex/version.py
+++ b/pex/version.py
@@ -1,4 +1,4 @@
 # Copyright 2015 Pants project contributors (see CONTRIBUTORS.md).
 # Licensed under the Apache License, Version 2.0 (see LICENSE).
 
-__version__ = "2.1.15"
+__version__ = "2.1.16"


Test patch:
Repository: pex-tool/pex

Issue:
Pex PEX perf regression
Pex ships a PEX of itself for those who wish to download a Pex binary instead of pip installing it. Pants is an important user of the Pex PEX and f07ae4704df40968918b6b4f80fcfafbee1c4327 (via git bisect) introduced a performance regression that induces ~300ms of startup overhead over a v2.1.16 baseline.

Tested with the following which emulates the simplest Pex PEX use case in Pants for interpreter selection for Pants tools:
```
$ python -mpex . -cpex --unzip -opex.pex
$ ./pex.pex --interpreter-constraint=">=3.6" -- -c 'import sys; print(sys.executable)'
$ multitime -n10 ./pex.pex --interpreter-constraint=">=3.6" -- -c 'import sys; print(sys.executable)'
```

v2.1.16
```
===> multitime results
1: ./pex.pex --interpreter-constraint=>=3.6 -- -c "import sys; print(sys.executable)"
            Mean        Std.Dev.    Min         Median      Max
real        0.861       0.007       0.851       0.859       0.874       
user        0.780       0.008       0.770       0.779       0.798       
sys         0.080       0.009       0.067       0.080       0.093 
```

f07ae4704df40968918b6b4f80fcfafbee1c4327
```
===> multitime results
1: ./pex.pex --interpreter-constraint=>=3.6 -- -c "import sys; print(sys.executable)"
            Mean        Std.Dev.    Min         Median      Max
real        1.184       0.013       1.170       1.182       1.217       
user        1.076       0.012       1.056       1.080       1.091       
sys         0.101       0.012       0.080       0.099       0.123
```





Discussion:

Resolving patch:
diff --git a/pex/pex_info.py b/pex/pex_info.py
--- a/pex/pex_info.py
+++ b/pex/pex_info.py
@@ -10,13 +10,14 @@
 from pex.common import can_write_dir, open_zip, safe_mkdtemp
 from pex.compatibility import PY2
 from pex.compatibility import string as compatibility_string
-from pex.interpreter import PythonInterpreter
 from pex.orderedset import OrderedSet
 from pex.typing import TYPE_CHECKING
 from pex.variables import ENV
 from pex.version import __version__ as pex_version
 
 if TYPE_CHECKING:
+    from pex.interpreter import PythonInterpreter
+
     from typing import Optional
 
 
@@ -56,6 +57,15 @@ class PexInfo(object):
 
     @classmethod
     def make_build_properties(cls, interpreter=None):
+        # This lazy import is currently needed for performance reasons. At PEX runtime PexInfo is
+        # read in the bootstrap to see if the PEX should run in `--unzip` mode. If so, it must
+        # re-exec itself to run against its unzipped contents. Since `make_build_properties` is only
+        # used at PEX buildtime and the transitive imports of PythonInterpreter are large and slow,
+        # we avoid this import cost for runtime-only use.
+        #
+        # See: https://github.com/pantsbuild/pex/issues/1054
+        from pex.interpreter import PythonInterpreter
+
         pi = interpreter or PythonInterpreter.get()
         plat = pi.platform
         platform_name = plat.platform


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.17
On the docket:
+ [x] TypeError when resolving local platforms. #1043
+ [x] No such file for interpreter's binary name #1009
+ [x] Pex resources leak while bootstrapping pants #1050
+ [x] Pex PEX perf regression #1054



Discussion:
hey @jsirois is there any way that I can already get a "bleeding-edge" version with #1009 ? Just wondering so I can go back into migrating to pants v2. 
We might want to cut this Pex release early so that we can do a Pants release this weekend. Thoughts, John?
Sounds good. I need to document and fix a perf regression 1st though that I've been working on.

Resolving patch:
diff --git a/pex/version.py b/pex/version.py
--- a/pex/version.py
+++ b/pex/version.py
@@ -1,4 +1,4 @@
 # Copyright 2015 Pants project contributors (see CONTRIBUTORS.md).
 # Licensed under the Apache License, Version 2.0 (see LICENSE).
 
-__version__ = "2.1.16"
+__version__ = "2.1.17"


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.18
On the docket:
+ [x] Control of the TMPDIR used by Pex and its subprocesses (notably Pip). #1067
+ [x] Add Python 3.9 support. #1064
+ [x] pex creation fails under pants w/ `No such file or directory` error #1051 
+ [x] Pex fails to consistently use https_proxy + --cert #1058
+ [x] Honor `sys.executable` unless macOS Framework. #1065


Discussion:
I broke out 2.1.19 in #1069 to take care of the rest. In particular #1031 which is a bit risky / large.

Resolving patch:
diff --git a/pex/version.py b/pex/version.py
--- a/pex/version.py
+++ b/pex/version.py
@@ -1,4 +1,4 @@
 # Copyright 2015 Pants project contributors (see CONTRIBUTORS.md).
 # Licensed under the Apache License, Version 2.0 (see LICENSE).
 
-__version__ = "2.1.17"
+__version__ = "2.1.18"


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.14
On the docket:

* [x] Add `--use-first-matching-interpreter` to speed up performance of builds at the expense of worse compatibility at runtime. This is an important optimization for Pants's use of Pex. https://github.com/pantsbuild/pex/pull/1008


Discussion:

Resolving patch:
diff --git a/pex/pex.py b/pex/pex.py
--- a/pex/pex.py
+++ b/pex/pex.py
@@ -4,7 +4,9 @@
 from __future__ import absolute_import, print_function
 
 import os
+import re
 import sys
+import warnings
 from distutils import sysconfig
 from site import USER_SITE
 from types import ModuleType
@@ -13,6 +15,7 @@
 from pex import third_party
 from pex.bootstrap import Bootstrap
 from pex.common import die
+from pex.compatibility import PY3
 from pex.environment import PEXEnvironment
 from pex.executor import Executor
 from pex.finders import get_entry_point_from_console_script, get_script_from_distributions
@@ -461,6 +464,17 @@ def execute(self):
             if not teardown_verbosity:
                 sys.stderr.flush()
                 sys.stderr = open(os.devnull, "w")
+                if PY3:
+                    # Python 3 warns about unclosed resources. In this case we intentionally do not
+                    # close `/dev/null` since we want all stderr to flow there until the latest
+                    # stages of Python interpreter shutdown when the Python runtime will `del` the
+                    # open file and thus finally close the underlying file descriptor. As such,
+                    # suppress the warning.
+                    warnings.filterwarnings(
+                        action="ignore",
+                        message=r"unclosed file {}".format(re.escape(str(sys.stderr))),
+                        category=ResourceWarning,
+                    )
                 sys.excepthook = lambda *a, **kw: None
 
     def _execute(self):


Test patch:
diff --git a/tests/test_pex.py b/tests/test_pex.py
--- a/tests/test_pex.py
+++ b/tests/test_pex.py
@@ -782,3 +782,18 @@ def test_pex_run_custom_pex_useable():
         assert process.returncode == 0
         assert old_pex_version == stdout.strip().decode("utf-8")
         assert old_pex_version != __version__
+
+
+def test_interpreter_teardown_dev_null_unclosed_resource_warning_suppressed():
+    # type: () -> None
+
+    # See https://github.com/pantsbuild/pex/issues/1101 and
+    # https://github.com/pantsbuild/pants/issues/11058 for the motivating issue.
+    with temporary_dir() as pex_chroot:
+        pex_builder = PEXBuilder(path=pex_chroot)
+        pex_builder.freeze()
+
+        output = subprocess.check_output(
+            args=[sys.executable, "-W" "all", pex_chroot, "-c", ""], stderr=subprocess.STDOUT
+        )
+        assert b"" == output
Repository: pex-tool/pex

Issue:
Release 2.1.21
On the docket:
+ [x] "FileNotFoundError: [Errno 2] No such file or directory" in pex #1098
+ [x] Unclosed resource warning for `/dev/null` in PEX teardown. #1101
+ [x] Remove `--sources-directory` / `--resources-directory` distinction. #1100
+ [x] Invalid requirement, parse error at "'python_v' #940
+ [x] Pex skipping pandas activation #1017
+ [x] Changing vendored versions does not fully clean up previous version #1096
+ [x] Pex discards the current interpreter's PATH entry when it is a directory entry. #1109


Discussion:
Broke out remaining issues to Release 2.1.21 in #1111. This release has enough including a few fixes desirable for Pants 2.{0,1}.

Resolving patch:
diff --git a/pex/version.py b/pex/version.py
--- a/pex/version.py
+++ b/pex/version.py
@@ -1,4 +1,4 @@
 # Copyright 2015 Pants project contributors (see CONTRIBUTORS.md).
 # Licensed under the Apache License, Version 2.0 (see LICENSE).
 
-__version__ = "2.1.20"
+__version__ = "2.1.21"


Test patch:
Repository: pex-tool/pex

Issue:
Variables.strip_defaults leads to misleading types
Variables currently typecheck, but the types do not reflect reality. This forces marking many properties as `Optional` that can never be in production use. Fix this.


Discussion:

Resolving patch:
diff --git a/pex/variables.py b/pex/variables.py
--- a/pex/variables.py
+++ b/pex/variables.py
@@ -147,6 +147,7 @@ def iter_help(cls):
         for variable_name, value in sorted(cls.__dict__.items()):
             if not variable_name.startswith("PEX_"):
                 continue
+            value = value._func if isinstance(value, DefaultedProperty) else value
             variable_type, variable_text = cls.process_pydoc(getattr(value, "__doc__"))
             yield variable_name, variable_type, variable_text
 


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.22
On the docket:
+ [x] Fix `--help-variables` docs. #1113
+ [x] pex binary hangs on startup at atomic_directory #1119
+ [x] pex vendoring does not (always) isolate itself from a colliding setuptools install in site-packages #1031
+ [x] Remove long deprecated support for _pex module. #1135



Discussion:
Truncating this docket over to #1138 to get out this release and 2.1.23 in #1134 with the Pip upgrade to unblock macOS Big Sur users.

Resolving patch:
diff --git a/pex/version.py b/pex/version.py
--- a/pex/version.py
+++ b/pex/version.py
@@ -1,4 +1,4 @@
 # Copyright 2015 Pants project contributors (see CONTRIBUTORS.md).
 # Licensed under the Apache License, Version 2.0 (see LICENSE).
 
-__version__ = "2.1.21"
+__version__ = "2.1.22"


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.23
On the docket:
+ [x] Upgrade Pex to Pip 20.3.1. #1133



Discussion:

Resolving patch:
diff --git a/pex/version.py b/pex/version.py
--- a/pex/version.py
+++ b/pex/version.py
@@ -1,4 +1,4 @@
 # Copyright 2015 Pants project contributors (see CONTRIBUTORS.md).
 # Licensed under the Apache License, Version 2.0 (see LICENSE).
 
-__version__ = "2.1.22"
+__version__ = "2.1.23"


Test patch: