summaryrefslogtreecommitdiff
path: root/git/cmd.py
diff options
context:
space:
mode:
authorSebastian Thiel <sebastian.thiel@icloud.com>2021-06-16 11:22:27 +0800
committerSebastian Thiel <sebastian.thiel@icloud.com>2021-06-16 11:22:36 +0800
commit820d3cc9ceda3e5690d627677883b7f9d349b326 (patch)
treeaf22cfab209f22bd825c700b0bc617d602c998c7 /git/cmd.py
parent4d86d883714072b6e3bbc56a2127c06e9d6a6582 (diff)
downloadgitpython-820d3cc9ceda3e5690d627677883b7f9d349b326.tar.gz
Revert "Remove support for Python 3.5" - fix CI for now.
This reverts commit 45d1cd59d39227ee6841042eab85116a59a26d22. See #1201 which will hopefully help to get a proper fix soon.
Diffstat (limited to 'git/cmd.py')
-rw-r--r--git/cmd.py9
1 files changed, 9 insertions, 0 deletions
diff --git a/git/cmd.py b/git/cmd.py
index 4f58b314..d8b82352 100644
--- a/git/cmd.py
+++ b/git/cmd.py
@@ -17,7 +17,9 @@ from subprocess import (
import subprocess
import sys
import threading
+from collections import OrderedDict
from textwrap import dedent
+import warnings
from git.compat import (
defenc,
@@ -1003,6 +1005,13 @@ class Git(LazyMixin):
def transform_kwargs(self, split_single_char_options: bool = True, **kwargs: Any) -> List[str]:
"""Transforms Python style kwargs into git command line options."""
+ # Python 3.6 preserves the order of kwargs and thus has a stable
+ # order. For older versions sort the kwargs by the key to get a stable
+ # order.
+ if sys.version_info[:2] < (3, 6):
+ kwargs = OrderedDict(sorted(kwargs.items(), key=lambda x: x[0]))
+ warnings.warn("Python 3.5 support is deprecated and will be removed 2021-09-05.\n" +
+ "It does not preserve the order for key-word arguments and enforce lexical sorting instead.")
args = []
for k, v in kwargs.items():
if isinstance(v, (list, tuple)):