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

Issue:
Release 2.1.86
On the docket:
+ [x] Support credentials in URLFetcher. #1754 


Discussion:
Split off from "Release 2.1.85 #1743" to make way for PEX interpreters supporting all underlying Python interpreter options in #1745 

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.85"
+__version__ = "2.1.86"


Test patch:
diff --git a/pex/testing.py b/pex/testing.py
--- a/pex/testing.py
+++ b/pex/testing.py
@@ -506,7 +506,7 @@ def ensure_python_distribution(version):
                 # with with `--disable-new-dtags`.
                 env["LDFLAGS"] = "-Wl,--disable-new-dtags"
             subprocess.check_call([pyenv, "install", "--keep", version], env=env)
-            subprocess.check_call([pip, "install", "-U", "pip"])
+            subprocess.check_call([pip, "install", "-U", "pip<22.1"])
 
     major, minor = version.split(".")[:2]
     python = os.path.join(
@@ -536,7 +536,7 @@ def ensure_python_venv(version, latest_pip=True, system_site_packages=False):
         subprocess.check_call(args=args)
     python, pip = tuple(os.path.join(venv, "bin", exe) for exe in ("python", "pip"))
     if latest_pip:
-        subprocess.check_call(args=[pip, "install", "-U", "pip"])
+        subprocess.check_call(args=[pip, "install", "-U", "pip<22.1"])
     return python, pip
 
 
diff --git a/tests/test_bdist_pex.py b/tests/test_bdist_pex.py
--- a/tests/test_bdist_pex.py
+++ b/tests/test_bdist_pex.py
@@ -34,8 +34,9 @@ def bdist_pex_venv():
         venv_dir = safe_mkdtemp()
         venv = Virtualenv.create(venv_dir)
         pip = venv.install_pip()
-        # N.B.: The setuptools version is not important.
-        subprocess.check_call(args=[pip, "install", "-U", "pip"])
+        # N.B.: The setuptools version is not important, but there is a break introduced by pip
+        # 22.1; so we must pin that low.
+        subprocess.check_call(args=[pip, "install", "-U", "pip<22.1"])
         subprocess.check_call(args=[pip, "install", pex_project_dir(), "setuptools==43.0.0"])
         BDIST_PEX_VENV = venv
     return BDIST_PEX_VENV
Repository: pex-tool/pex

Issue:
Release 2.1.87
On the docket:
+ [ ] A relative --tmpdir foils pex3 lock create. #1758


Discussion:
Split off from "Release 2.1.86 #1749" to make way for a fix for passing credentials when fetching lock artifacts from custom indexes and find links repos in #1754.

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.86"
+__version__ = "2.1.87"


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.88
On the docket:
+ [x] Just warn when ~/.netrc can't be loaded. #1763


Discussion:
Split off from "Release 2.1.87 #1755" to make way for a fix for `pex3 lock create` with a relative `--tmpdir` (#1758).

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.87"
+__version__ = "2.1.88"


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.89
On the docket:
+ [x] Decouple PEX runtime interpreter selection from buildtime interpreter selection. #1020
+ [x] Support PyPy latest (3.9). (#1767)
+ [x] Add 3.11 support. (#1766)


Discussion:
Split off from "Release 2.1.88 #1759" to make way for a fix for gracefully handling bad ~/.netrc files in #1763.

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.88"
+__version__ = "2.1.89"


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.90
On the docket:
+ [x] Ensure that lockfiles end in newlines. #1774
+ [x] Pex use of pip wheel to build sdists into wheels can be non-atomic. #1776


Discussion:
Split of from "Release 2.1.89 #1764" to make way for CPython 3.11 support, PyPy 3.9 support and at long last a fix for #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.89"
+__version__ = "2.1.90"


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.91
On the docket:
+ [x] Fix --sh-boot argv0. #1785


Discussion:
Split of from "Release 2.1.90 #1769" to make way for a fix for non-atomicity when building wheels from sdists (#1776).

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.90"
+__version__ = "2.1.91"


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.92
On the docket:
+ [ ]  Add support for local project locking. #1792



Discussion:
Split of from "Release 2.1.91 #1777" to make way for a fix for `--sh-boot` argv0 handling (#1785).

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.91"
+__version__ = "2.1.92"


Test patch:
diff --git a/tests/integration/cli/commands/test_issue_1667.py b/tests/integration/cli/commands/test_issue_1667.py
--- a/tests/integration/cli/commands/test_issue_1667.py
+++ b/tests/integration/cli/commands/test_issue_1667.py
@@ -31,6 +31,11 @@ def test_interpreter_constraints_range_coverage(
 ):
     # type: (...) -> None
 
+    # The traitlets 5.2.2 release breaks IPython.
+    constraints = os.path.join(str(tmpdir), "constraints.txt")
+    with open(constraints, "w") as fp:
+        fp.write("traitlets<5.2.2\n")
+
     # We lock with an unconstrained IPython requirement and we know IPython latest does not support
     # Python 3.7. If locking respects ICs it should not pick latest, but a version that supports at
     # least 3.7
@@ -46,6 +51,8 @@ def test_interpreter_constraints_range_coverage(
         ">=3.7,<3.11",
         "--python-path",
         py37.binary,
+        "--constraints",
+        constraints,
         "ipython",
         "-o",
         lock,
Repository: pex-tool/pex

Issue:
Release 2.1.93
On the docket:
+ [x] Support adding new requirements in a lock update. (#1797)
+ [x] Add `pex3 lock update --dry-run check` mode. (#1799)
+ [x] Universal locks no longer record a `platform_tag`. (#1800)
+ [x] Support python script file executable. (#1807)
+ [x] Fix PEX scrubbing to account for sys.excepthook. #1810
+ [x] zipapp mode drops tail log lines #1802 
+ [x] Surface pip download logging. #1808
+ [x] Use pip download instead or URLFetcher. #1811



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.92"
+__version__ = "2.1.93"


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.94
On the docket:
+ [x] Fix pex --lock ... handling of sdists. #1818


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.93"
+__version__ = "2.1.94"


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.95
On the docket:
+ [x] Lock creation should skip Windows-only requirements and / or allow selecting target platforms (OS classes). #1821
+ [x] Feature request: "universal" lock mode can reject unsupported platforms #1595
+ [x] Avoid ENOEXEC for --venv shebangs. #1828 
+ [x] pex3 lock export does't seem to respect the platform flag. #1826
+ [x] Clarify pex3 lock export command. #1645
+ [x] Support exporting PYTHONPATH before running user code #1825


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.94"
+__version__ = "2.1.95"


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.96
On the docket:
+ [x] PEX_EXTRA_SYS_PATH propagation can break subprocesses run against other venvs. #1836 




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.95"
+__version__ = "2.1.96"


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.97
On the docket:
+ [x] Avoid ENOEXEC for Pex internal --venvs. #1843



Discussion:
Moved from "Release 2.1.96 #1822" to clear space for the Pip upgrade.

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.96"
+__version__ = "2.1.97"


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.98
On the docket:
+ [x] Tags should be patched for --platform. #1846
+ [x] PEXes should be useable as sys.path entries. #1839
+ [x] Pex lock downloads fail for foreign platforms. #1849


Discussion:
Moved from "Release 2.1.97 #1835" to clear space for the final `ENOEXEC` fix in #1843.

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.97"
+__version__ = "2.1.98"


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.99
On the docket:
+ [x]  Fix `pex --lock ...` concurrent download errors. #1854 



Discussion:
Moved from "Release 2.1.98 #1840" to clear space for the abbreviated `--platform` tag patching fix in #1846.

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.98"
+__version__ = "2.1.99"


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.100
On the docket:
+ [x] Using --target-system linux --target-system mac can still lead to failed attempts to lock Windows requirements. #1856


Discussion:
Split off from " Release 2.1.99 #1847" to make way for a fix for #1852.

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.99"
+__version__ = "2.1.100"


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.101
On the docket:
+ [x] Pex fails to find RECORD for python-certifi-win32 1.6.1 #1861


Discussion:
Broken off "Release 2.1.100 #1853" to make way for a fix for #1856.

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.100"
+__version__ = "2.1.101"


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.103
On the docket:
+ [x] pex fails to build sdist when creating lockfile for local project #1872 


Discussion:
Broken off from "Release 2.1.102 #1862" to make way for a fix for #1866.

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.102"
+__version__ = "2.1.103"


Test patch:
Repository: pex-tool/pex

Issue:
PEXBuilder is not robust to ephemeral .pyc compiles.
The current code ignores the final `.pyc`, but not the intermediate form:
https://github.com/pantsbuild/pex/blob/d7890631620b231ad68a15d8bff23abf4884c185/pex/pex_builder.py#L589-L591

The code to handle this correctly is here:
https://github.com/pantsbuild/pex/blob/9901a05d0ec8aee9b8a6e05c6f2a00999df3bab6/pex/common.py#L60-L76 


Discussion:

Resolving patch:
diff --git a/pex/pex_builder.py b/pex/pex_builder.py
--- a/pex/pex_builder.py
+++ b/pex/pex_builder.py
@@ -13,6 +13,7 @@
     Chroot,
     atomic_directory,
     chmod_plus_x,
+    filter_pyc_files,
     is_pyc_temporary_file,
     safe_copy,
     safe_delete,
@@ -586,8 +587,8 @@ def _prepare_bootstrap(self):
             if root == package_root:
                 dirs[:] = bootstrap_packages
 
-            for f in files:
-                if f.endswith((".pyc", "testing.py")):
+            for f in filter_pyc_files(files):
+                if f.endswith("testing.py"):
                     continue
                 abs_src = os.path.join(root, f)
                 with open(abs_src, "rb") as fp:


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.104
On the docket:
+ [x] Pull in Pip fixes. #1805
+ [x] pex fails to overwrite zipapp pex with loose pex #1879
+ [x] Make lock update sensitive to artifacts. #1887 
+ [x] PEXBuilder is not robust to ephemeral .pyc compiles. #1889 


Discussion:
Broken off from "Release 2.1.103 #1868" to make way for a fix for #1872.

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.103"
+__version__ = "2.1.104"


Test patch:
Repository: pex-tool/pex

Issue:
AtomicDirectory masks UUID4 collisions
Right now, either with an exclusive lock where file locking fails or with a non-exclusive lock, two attempts at creating an atomic directory might collide in the case UUID4 hits a collision:
https://github.com/pantsbuild/pex/blob/9901a05d0ec8aee9b8a6e05c6f2a00999df3bab6/pex/common.py#L331-L335

If that ever happened, it would happen silently and the two processes would race each other filling out the work_dir leading to a final os.rename of the work_dir to the target_dir with unexpected contents:
https://github.com/pantsbuild/pex/blob/9901a05d0ec8aee9b8a6e05c6f2a00999df3bab6/pex/common.py#L469-L471

Even though this scenario is highly unlikely, it would be better to get an Exception raised than to get directory corruption.


Discussion:

Resolving patch:
diff --git a/pex/common.py b/pex/common.py
--- a/pex/common.py
+++ b/pex/common.py
@@ -466,7 +466,7 @@ def unlock():
             return
 
     try:
-        safe_mkdir(atomic_dir.work_dir)
+        os.makedirs(atomic_dir.work_dir)
         yield atomic_dir
         atomic_dir.finalize(source=source)
     finally:


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.106
On the docket:
+ [x] Providing a direct reference to a wheel with a local version fails to resolve #1919 


Discussion:
Broken off from "Release 2.1.105 #1897" to make way for a fix for `--sh-boot` build-time sh script creation.

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.105"
+__version__ = "2.1.106"


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.107
On the docket:
+ [x] `git` username replaced with `****` redaction in lockfile for `git+ssh` direct references #1918


Discussion:
Broken off from "Release 2.1.106 https://github.com/pantsbuild/pex/issues/1915" to make way for a fix for direct reference requirements with local versions failing to resolve in #1920.

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.106"
+__version__ = "2.1.107"


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.108
On the docket:
+ [x] Fix slow PEX boot time when there are many extras. #1929


Discussion:
Broken off from "Release 2.1.107 https://github.com/pantsbuild/pex/issues/1921" to make way for a fix for handling git+ssh VCS urls with credentials in locks.

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.107"
+__version__ = "2.1.108"


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.109
On the docket:
+ [x] pex does not support musllinux wheels #1933
+ [x] Empty string PEX_PATH="" env var causes CWD (.) to be added bootstrapped pex_path #1936


Discussion:
Broken off from "Release 2.1.108 #1924" to make way for a fix for slow PEX boot times for requirements with large extras sets.

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.108"
+__version__ = "2.1.109"


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.110
On the docket:
+ [x] PEX runtime sys.path scrubbing is imperfect. #1944


Discussion:
Broken off from "Release 2.1.109 #1930" to make way for a fix for resolving musllinux wheels.

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.109"
+__version__ = "2.1.110"


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.111
On the docket:
+ [x] Pex fails to resolve arbitrary equality requirements when candidate package uses unnormalized version number #1949
+ [x] Support injecting args and env vars in a PEX. #1948


Discussion:
Broken off from "Release 2.1.110 #1934" to make way for a fix for PEX runtime `sys.path` scrubbing.

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.110"
+__version__ = "2.1.111"


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.112
On the docket:
+ [x] Add support for --pip-version 22.3. #1953




Discussion:
Broken off from "Release 2.1.111 #1945" to make way for a fix for Pex handling of `===` detailed in #1949.

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.111"
+__version__ = "2.1.112"


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.113
On the docket:
+ [x] Restore AtomicDirectory non-locked good behavior. #1974


Discussion:
Moved from "Release 2.1.112 #1950" to make way for a Pip upgrade in #1953.

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.112"
+__version__ = "2.1.113"


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.114
On the docket:
+ [ ] Only insert "" to head of sys.path if a venv PEX runs in interpreter mode #1984
+ [x] venv_dir calculation doesn't correctly handle PEX_PYTHON_PATH with symlinks. #1885


Discussion:
Moved from "Release 2.1.113 #1958" to make way for a a fix to AtomicDirectory in #1974.

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.113"
+__version__ = "2.1.114"


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.115
On the docket:
+ [x] Allow for sorting the requirements when exporting requirements.txt #1988
+ [x] Exported requirements.txt using different (abbreviated) version from lock.json #1989


Discussion:
Moved from "Release 2.1.114 #1975" to make way for #1885 and #1984.

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.114"
+__version__ = "2.1.115"


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.116
On the docket:
+ [x] The --resolve-local-platforms option does not work with --complete-platforms #1899


Discussion:
Moved from "Release 2.1.115 #1986" to make way for #1988 and #1989.

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.115"
+__version__ = "2.1.116"


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.117
On the docket:
+ [x] Published pex on github no longer works with PyPy since 2.1.109 #1995


Discussion:
Moved from "Release 2.1.111 #1993" to make way for #1991.

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.116"
+__version__ = "2.1.117"


Test patch:
Repository: pex-tool/pex

Issue:
Release 2.1.119
On the docket:
+ [x] The PEX_TOOLS venv --compile option should ignore compile errors. #2001
+ [x] Add PEX_DISABLE_VARIABLES to lock down a PEX run. #2014


Discussion:
Moved from "Release 2.1.118 #1999" to make way for #2007.

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.118"
+__version__ = "2.1.119"


Test patch: