Skip to content

Commit

Permalink
remove support for python 3.4-5 add support for 3.11
Browse files Browse the repository at this point in the history
  • Loading branch information
liormizr committed Nov 17, 2022
1 parent 56798ac commit 60d0325
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 26 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/testing.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [3.5, 3.6, 3.7, 3.8, 3.9, "3.10"]
python-version: [3.6, 3.7, 3.8, 3.9, "3.10", 3.11]
steps:
- uses: actions/checkout@v2

Expand Down
38 changes: 15 additions & 23 deletions s3path.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,11 +100,8 @@ def _delayed_setup(self):
self.is_setup = True

def __repr__(self):
return '{name}(arguments={arguments}, resources={resources}, is_setup={is_setup})'.format(
name=type(self).__name__,
arguments=self.arguments,
resources=self.resources,
is_setup=self.is_setup)
return f'{type(self).__name__}' \
f'(arguments={self.arguments}, resources={self.resources}, is_setup={self.is_setup})'

def set_configuration(self, path, *, resource=None, arguments=None, glob_new_algorithm=None):
self._delayed_setup()
Expand Down Expand Up @@ -194,9 +191,7 @@ def __init__(self, **kwargs):
def stat(self, path, *, follow_symlinks=True):
if not follow_symlinks:
raise NotImplementedError(
'Setting follow_symlinks to {follow_symlinks} is '
'unsupported on S3 service.'.format(follow_symlinks=follow_symlinks)
)
f'Setting follow_symlinks to {follow_symlinks} is unsupported on S3 service.')
resource, _ = self.configuration_map.get_configuration(path)
object_summary = resource.ObjectSummary(path.bucket, path.key)
return StatResult(
Expand Down Expand Up @@ -361,7 +356,7 @@ def unlink(self, path, *args, **kwargs):
kwargs={"Bucket": bucket_name, "Key": key_name}
)
except ClientError:
raise OSError("/{0}/{1}".format(bucket_name, key_name))
raise OSError(f'/{bucket_name}/{key_name}')

def iter_keys(self, path, *, prefix=None, full_keys=True):
resource, _ = self.configuration_map.get_configuration(path)
Expand Down Expand Up @@ -737,9 +732,9 @@ def _deep_count(self, tree):

def register_configuration_parameter(path, *, parameters=None, resource=None, glob_new_algorithm=None):
if not isinstance(path, PureS3Path):
raise TypeError('path argument have to be a {} type. got {}'.format(PurePath, type(path)))
raise TypeError(f'path argument have to be a {PurePath} type. got {type(path)}')
if parameters and not isinstance(parameters, dict):
raise TypeError('parameters argument have to be a dict type. got {}'.format(type(path)))
raise TypeError(f'parameters argument have to be a dict type. got {type(path)}')
if parameters is None and resource is None and glob_new_algorithm is None:
raise ValueError('user have to specify parameters or resource arguments')
_s3_accessor.configuration_map.set_configuration(
Expand Down Expand Up @@ -802,7 +797,7 @@ def from_bucket_key(cls, bucket, key):
"""
bucket = cls(cls._flavour.sep, bucket)
if len(bucket.parts) != 2:
raise ValueError('bucket argument contains more then one path element: {}'.format(bucket))
raise ValueError(f'bucket argument contains more then one path element: {bucket}')
key = cls(key)
if key.is_absolute():
key = key.relative_to('/')
Expand Down Expand Up @@ -839,9 +834,7 @@ def stat(self, *, follow_symlinks=True):
"""
if not follow_symlinks:
raise NotImplementedError(
'Setting follow_symlinks to {follow_symlinks} is '
'unsupported on S3 service.'.format(follow_symlinks=follow_symlinks)
)
f'Setting follow_symlinks to {follow_symlinks} is unsupported on S3 service.')

self._absolute_path_validation()
if not self.key:
Expand Down Expand Up @@ -907,7 +900,7 @@ def _glob(self, pattern):
if StrictVersion(python_version()) >= StrictVersion('3.8'):
sys.audit("pathlib.Path.glob", self, pattern)
if not pattern:
raise ValueError("Unacceptable pattern: {!r}".format(pattern))
raise ValueError(f'Unacceptable pattern: {pattern}')
drv, root, pattern_parts = self._flavour.parse_parts((pattern,))
if drv or root:
raise NotImplementedError("Non-relative patterns are unsupported")
Expand All @@ -934,7 +927,7 @@ def _rglob(self, pattern):
if StrictVersion(python_version()) >= StrictVersion('3.8'):
sys.audit("pathlib.Path.rglob", self, pattern)
if not pattern:
raise ValueError("Unacceptable pattern: {!r}".format(pattern))
raise ValueError(f'Unacceptable pattern: {pattern}')
drv, root, pattern_parts = self._flavour.parse_parts((pattern,))
if drv or root:
raise NotImplementedError("Non-relative patterns are unsupported")
Expand Down Expand Up @@ -1064,11 +1057,11 @@ def mkdir(self, mode=0o777, parents=False, exist_ok=False):
"""
try:
if not self.bucket:
raise FileNotFoundError('No bucket in {} {}'.format(type(self), self))
raise FileNotFoundError(f'No bucket in {type(self)} {self}')
if self.key and not parents:
raise FileNotFoundError('Only bucket path can be created, got {}'.format(self))
raise FileNotFoundError(f'Only bucket path can be created, got {self}')
if type(self)(self._flavour.sep, self.bucket).exists():
raise FileExistsError('Bucket {} already exists'.format(self.bucket))
raise FileExistsError(f'Bucket {self.bucket} already exists')
return super().mkdir(mode, parents=parents, exist_ok=exist_ok)
except OSError:
if not exist_ok:
Expand Down Expand Up @@ -1111,7 +1104,7 @@ class StatResult(namedtuple('BaseStatResult', 'size, last_modified')):

def __getattr__(self, item):
if item in vars(stat_result):
raise UnsupportedOperation('{} do not support {} attribute'.format(type(self).__name__, item))
raise UnsupportedOperation(f'{type(self).__name__} do not support {item} attribute')
return super().__getattribute__(item)

@property
Expand All @@ -1130,8 +1123,7 @@ def __init__(self, name, is_dir, size=None, last_modified=None):
self._stat = StatResult(size=size, last_modified=last_modified)

def __repr__(self):
return '{}(name={}, is_dir={}, stat={})'.format(
type(self).__name__, self.name, self._is_dir, self._stat)
return f'{type(self).__name__}(name={self.name}, is_dir={self._is_dir}, stat={self._stat})'

def inode(self, *args, **kwargs):
return None
Expand Down
3 changes: 1 addition & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,11 @@
'License :: OSI Approved :: Apache Software License',
'Operating System :: OS Independent',
'Programming Language :: Python',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
],
)

0 comments on commit 60d0325

Please sign in to comment.