Title: Remove Python 2 compatibility shims by Harmon758 · Pull Request #979 · gitpython-developers/GitPython · GitHub
Open Graph Title: Remove Python 2 compatibility shims by Harmon758 · Pull Request #979 · gitpython-developers/GitPython
X Title: Remove Python 2 compatibility shims by Harmon758 · Pull Request #979 · gitpython-developers/GitPython
Description: 3.0.0 was supposed to have removed Python 2 support, but didn't actually remove any of the compatibility shims for Python 2. In fact, with 3b13c11 (#860), further shims were added for Python 2 and going so far as to add future as a dependency and check for Python <= 2.3 (when sys.getfilesystemencoding was added). I'm not sure why #860 was merged with those shims, especially since it was failing a test due to switching to Unicode strings in Python 2, but this commit that did so improperly merged requirements.txt as well, readding gitdb and ddt as dependencies when they had been removed with ce21f63 (#826), so that setup.py could use requirements.txt. gitdb itself had actually already been removed as a dependency over 2 years before requirements.txt was updated, with 2ca7c01 in v2.0.9. The commit was then reverted with cc664f0, referencing failing Travis CI tests due to future having been added as a dependency in requirements.txt and the Travis CI configuration installing dependencies from test-requirements.txt, rather than requirements.txt and/or setup.py. The changes were then reintroduced with 74a0507, adding installation of requirements.txt (despite what the commit summary says) to the Travis CI configuration. It was then again reverted with c9dbaab, referencing the failing Travis CI build for the previous commit due to the same failing test for the PR. Afterwards, for some reason, the changes were yet again reintroduced with dac619e, the very commit that dropped Python 2 support. This time, future wasn't even added to requirements.txt, so Python 2 would have failed to import the library even if the commit hadn't dropped support for it. The changes were again reverted with 913d806 (for the 3rd time) when Python 2 support was brought back after being dropped in a patch version. They were then introduced again (for the 4th time) with 2e7e82b and 3.0.0 was subsequently released with the readded dependencies from almost 3 years ago, leading to #908. #908 was closed with ca080bb in 3.0.1, only removing gitdb as a dependency, leading to #911. #911 was then merged with df5c941 and released as 3.0.2, resolving the dependency issues caused by the improper merge, but leaving the pointless and broken compatibility shims that caused this mess in place. This PR removes those and other compatibility shims for Python 2 and old Python 3 versions: Remove from builtins import str - This was never even in any release that supported Python 2 and no release ever included future as a dependency. Remove check for the existence of sys.getfilesystemencoding - It has existed since Python 2.3 as mentioned earlier. Remove and replace compat._unichr with chr, comapt.bchr with bytes([...]), compat.binary_type with bytes, compat.bytes_chr with bytes((...,)), compat.FileType with io.IOBase, compat.izip with zip, compat.MAXSIZE with sys.maxsize, compat.mviter with .values(), compat.string_types with str, compat.text_type with str, compat.unicode with str, compat.xrange with range, compat.UnicodeMixin subclass by using __str__ rather than __unicode__ Remove compat.byte_ord, compat.PY3, compat.range Remove surrogateescape error handler for Python 2 Remove Python 2 checks for compat.defenc, TestFun.test_tree_entries_from_data_with_failing_name_decode_py3, TestIndex.test_add_utf8P_path Remove Python 2 checks in Git.__unpack_args, compat.with_metaclass, Diff.__str__, TestRepo.test_untracked_files, Actor._main_actor Remove Python 3 checks in GitConfigParser._read, _octal_repl, run_commit_hook, git.objects.tree, RefLogEntry.__repr__, Repo._get_untracked_files, TestGit.test_call_unpack_args_unicode, TestGit.test_call_unpack_args Remove TestFun.test_tree_entries_from_data_with_failing_name_decode_py2 Python 2 test Remove attempt to import ConfigParser for Python 2 in git.config Remove Python 2.7 check in TestBase Remove check for logging.NullHandler for Python 2.6 in git.util Remove Python < 3.3 check for PermissionError in git.cmd This PR also fixes the formatting of the version specifier in requirements.txt (so as not to be in parentheses as #826 changed it to be with ce21f63) and improves setup.py's python_requires so as to succinctly specify >=3.4.
Open Graph Description: 3.0.0 was supposed to have removed Python 2 support, but didn't actually remove any of the compatibility shims for Python 2. In fact, with 3b13c11 (#860), further shims were added for Python 2 ...
X Description: 3.0.0 was supposed to have removed Python 2 support, but didn't actually remove any of the compatibility shims for Python 2. In fact, with 3b13c11 (#860), further shims were added for Pytho...
Opengraph URL: https://github.com/gitpython-developers/GitPython/pull/979
X: @github
Domain: github.com
| route-pattern | /:user_id/:repository/pull/:id/checks(.:format) |
| route-controller | pull_requests |
| route-action | checks |
| fetch-nonce | v2:0d825d3f-b96d-ec80-43eb-59bd9521b912 |
| current-catalog-service-hash | 87dc3bc62d9b466312751bfd5f889726f4f1337bdff4e8be7da7c93d6c00a25a |
| request-id | BAA0:8F8A3:531BCC:7199BD:6968A916 |
| html-safe-nonce | dbd944261f68b2e89142d85b536f7ae78657865a00e2d2dd713ae6824f2c3850 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCQUEwOjhGOEEzOjUzMUJDQzo3MTk5QkQ6Njk2OEE5MTYiLCJ2aXNpdG9yX2lkIjoiNTQwMDU5NTkwODE2MTc0MzEyNiIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | c2d056111da76be27fd0667ead14c2a68c053fc2b41cdb375a81c11576d5ef4e |
| hovercard-subject-tag | pull_request:372493483 |
| github-keyboard-shortcuts | repository,pull-request-list,pull-request-conversation,pull-request-files-changed,checks,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/gitpython-developers/GitPython/pull/979/checks |
| twitter:image | https://avatars.githubusercontent.com/u/9403740?s=400&v=4 |
| twitter:card | summary_large_image |
| og:image | https://avatars.githubusercontent.com/u/9403740?s=400&v=4 |
| og:image:alt | 3.0.0 was supposed to have removed Python 2 support, but didn't actually remove any of the compatibility shims for Python 2. In fact, with 3b13c11 (#860), further shims were added for Python 2 ... |
| og:site_name | GitHub |
| og:type | object |
| hostname | github.com |
| expected-hostname | github.com |
| None | fdc7c66bd36a6c12eb8e771e806db863266e573fc299e77f27505a768d4f8a98 |
| turbo-cache-control | no-preview |
| go-import | github.com/gitpython-developers/GitPython git https://github.com/gitpython-developers/GitPython.git |
| octolytics-dimension-user_id | 503709 |
| octolytics-dimension-user_login | gitpython-developers |
| octolytics-dimension-repository_id | 1126087 |
| octolytics-dimension-repository_nwo | gitpython-developers/GitPython |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 1126087 |
| octolytics-dimension-repository_network_root_nwo | gitpython-developers/GitPython |
| turbo-body-classes | logged-out env-production page-responsive full-width full-width-p-0 |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 3223a6503d318917691422cdadfbe16cd8fb21e5 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width