Skip to content

Commit

Permalink
devopshqGH-467 (review): move version checking to compatibility module
Browse files Browse the repository at this point in the history
  • Loading branch information
miskeens committed Jan 13, 2025
1 parent a692e3f commit adc8f37
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 12 deletions.
10 changes: 4 additions & 6 deletions artifactory.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@
import pathlib
import platform
import re
import sys
import urllib.parse
from itertools import islice

Expand All @@ -50,6 +49,7 @@
from dohq_artifactory.admin import User
from dohq_artifactory.auth import XJFrogArtApiAuth
from dohq_artifactory.auth import XJFrogArtBearerAuth
from dohq_artifactory.compat import * # noqa: this helper only contains version flags
from dohq_artifactory.exception import ArtifactoryException
from dohq_artifactory.exception import raise_for_status
from dohq_artifactory.logger import logger
Expand Down Expand Up @@ -1497,9 +1497,7 @@ class ArtifactoryPath(pathlib.Path, PureArtifactoryPath):
on regular constructors, but rather on templates.
"""

if sys.version_info.major == 3 and sys.version_info.minor >= 10:
# see changes in pathlib.Path, slots are no more applied
# https://github.com/python/cpython/blob/ce121fd8755d4db9511ce4aab39d0577165e118e/Lib/pathlib.py#L952
if IS_PYTHON_3_10_OR_NEWER:
_accessor = _artifactory_accessor
else:
# in 3.9 and below Pathlib limits what members can be present in 'Path' class
Expand Down Expand Up @@ -1571,7 +1569,7 @@ def __reduce__(self):
pathlib_reduce = super().__reduce__()
# pathlib.Path in 3.10+ does not have __slots__, so self.__dict__ is available;
# in 3.9 and earlier there is no self.__dict__. return slots instead
if sys.version_info.major == 3 and sys.version_info.minor >= 10:
if IS_PYTHON_3_10_OR_NEWER:
attributes = self.__dict__
else:
attributes = {x: getattr(self, x) for x in self.__slots__}
Expand Down Expand Up @@ -1784,7 +1782,7 @@ def __rtruediv__(self, key):
obj.timeout = self.timeout
return obj

if sys.version_info < (3,):
if IS_PYTHON_2:
__div__ = __truediv__
__rdiv__ = __rtruediv__

Expand Down
9 changes: 5 additions & 4 deletions dohq_artifactory/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import jwt
from dateutil.parser import isoparse

from dohq_artifactory.compat import * # noqa: this helper only contains version flags
from dohq_artifactory.exception import ArtifactoryException
from dohq_artifactory.exception import raise_for_status
from dohq_artifactory.logger import logger
Expand Down Expand Up @@ -51,10 +52,10 @@ def _new_function_with_secret_module(pw_len=16):
return "".join(secrets.choice(string.ascii_letters) for i in range(pw_len))


if sys.version_info < (3, 6):
generate_password = _old_function_for_secret
else:
if IS_PYTHON_3_6_OR_NEWER:
generate_password = _new_function_with_secret_module
else:
generate_password = _old_function_for_secret


def deprecation(message):
Expand Down Expand Up @@ -656,7 +657,7 @@ def __truediv__(self, key):
def __rtruediv__(self, key):
return self.path.__truediv__(key)

if sys.version_info < (3,):
if IS_PYTHON_2:
__div__ = __truediv__
__rdiv__ = __rtruediv__

Expand Down
7 changes: 7 additions & 0 deletions dohq_artifactory/compat.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import sys

IS_PYTHON_2 = sys.version_info < (3,)
IS_PYTHON_3_6_OR_NEWER = sys.version_info >= (3, 6)
# see changes in pathlib.Path, slots are no more applied
# https://github.com/python/cpython/blob/ce121fd8755d4db9511ce4aab39d0577165e118e/Lib/pathlib.py#L952
IS_PYTHON_3_10_OR_NEWER = sys.version_info >= (3, 10)
3 changes: 2 additions & 1 deletion tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,13 @@
import pytest

from artifactory import ArtifactoryPath
from dohq_artifactory.compat import * # noqa: this helper only contains version flags
from dohq_artifactory import Group
from dohq_artifactory import PermissionTarget
from dohq_artifactory import RepositoryLocal
from dohq_artifactory import User

if sys.version_info[0] < 3:
if IS_PYTHON_2:
import ConfigParser as configparser
else:
import configparser
Expand Down
3 changes: 2 additions & 1 deletion tests/integration/test_integration_artifactory_path.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@
import artifactory
from artifactory import sha1sum
from artifactory import sha256sum
from dohq_artifactory.compat import * # noqa: this helper only contains version flags

if sys.version_info[0] < 3:
if IS_PYTHON_2:
import StringIO as io
else:
import io
Expand Down

0 comments on commit adc8f37

Please sign in to comment.