Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bump backoff to be compatible with newer python versions #165

Merged
merged 9 commits into from
Jan 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
35 changes: 22 additions & 13 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -1,26 +1,35 @@
version: 2
version: 2.1

workflows:
build:
jobs:
- build:
context:
- circleci-user

jobs:
build:
docker:
- image: ubuntu:16.04
- image: 218546966473.dkr.ecr.us-east-1.amazonaws.com/sources-python:1.1.0
steps:
- checkout
- run:
name: 'Install python 3.5.2'
command: |
apt update
apt install --yes python3 python3-pip python3-venv
- run:
name: 'Setup virtualenv'
command: |
mkdir -p ~/.virtualenvs
pyenv global 3.11.7
python3 -m venv ~/.virtualenvs/singer-python
source ~/.virtualenvs/singer-python/bin/activate
pip install -U 'pip<19.2' 'setuptools<51.0.0'
make install
pip install -U 'pip==20.3.4' 'setuptools<51.0.0'
pip install .[dev]
- run:
name: 'Pylint'
command: |
source ~/.virtualenvs/singer-python/bin/activate
pip install pylint
pylint singer --extension-pkg-whitelist=ciso8601 -d missing-docstring,broad-exception-raised,broad-exception-caught,bare-except,too-many-return-statements,too-many-branches,too-many-arguments,no-else-return,too-few-public-methods,fixme,protected-access,consider-using-f-string
- run:
name: 'Run tests'
name: 'Run Tests'
command: |
# Need to re-activate the virtualenv
source ~/.virtualenvs/singer-python/bin/activate
make test
pip install nose2
nose2 -v -s tests
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# Changelog

## 6.0.0
* Bump backoff version to 2.2.1. This version drops support for python 3.5, but adds it for 3.1o [#165](https://github.com/singer-io/singer-python/pull/165)

## 5.13.0
* Add support for dev mode argument parsing [#158](https://github.com/singer-io/singer-python/pull/158)

Expand Down
4 changes: 2 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import subprocess

setup(name="singer-python",
version='5.13.0',
version='6.0.0',
description="Singer.io utility library",
author="Stitch",
classifiers=['Programming Language :: Python :: 3 :: Only'],
Expand All @@ -14,7 +14,7 @@
'jsonschema==2.6.0',
'simplejson==3.11.1',
'python-dateutil>=2.6.0',
'backoff==1.8.0',
'backoff==2.2.1',
'ciso8601',
],
extras_require={
Expand Down
2 changes: 1 addition & 1 deletion singer/catalog.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ def __eq__(self, other):

@classmethod
def load(cls, filename):
with open(filename) as fp: # pylint: disable=invalid-name
with open(filename, encoding="utf-8") as fp:
return Catalog.from_dict(json.load(fp))

@classmethod
Expand Down
2 changes: 1 addition & 1 deletion singer/exceptions.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ def __init__(self, message):
The first line is the error's class name. The subsequent lines are
the message that class was created with.
"""
super().__init__('{}\n{}'.format(self.__class__.__name__, message))
super().__init__(f"{self.__class__.__name__}\n{message}")


class SingerConfigurationError(SingerError):
Expand Down
8 changes: 4 additions & 4 deletions singer/messages.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,16 @@
class Message():
'''Base class for messages.'''

def asdict(self): # pylint: disable=no-self-use
def asdict(self):
raise Exception('Not implemented')

def __eq__(self, other):
return isinstance(other, Message) and self.asdict() == other.asdict()

def __repr__(self):
pairs = ["{}={}".format(k, v) for k, v in self.asdict().items()]
pairs = [f"{k}={v}" for k, v in self.asdict().items()]
attrstr = ", ".join(pairs)
return "{}({})".format(self.__class__.__name__, attrstr)
return f"{self.__class__.__name__}({attrstr})"

def __str__(self):
return str(self.asdict())
Expand Down Expand Up @@ -169,7 +169,7 @@ def asdict(self):

def _required_key(msg, k):
if k not in msg:
raise Exception("Message is missing required key '{}': {}".format(k, msg))
raise Exception(f"Message is missing required key '{k}': {msg}")

return msg[k]

Expand Down
8 changes: 4 additions & 4 deletions singer/transform.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,16 +77,16 @@ def tostr(self):
path = ".".join(map(str, self.path))
if self.schema:
if self.logging_level >= logging.INFO:
msg = "data does not match {}".format(self.schema)
msg = f"data does not match {self.schema}"
else:
msg = "does not match {}".format(self.schema)
msg = f"does not match {self.schema}"
else:
msg = "not in schema"

if self.logging_level >= logging.INFO:
output = "{}: {}".format(path, msg)
output = f"{path}: {msg}"
else:
output = "{}: {} {}".format(path, self.data, msg)
output = f"{path}: {self.data} {msg}"
return output


Expand Down
4 changes: 2 additions & 2 deletions singer/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ def chunk(array, num):


def load_json(path):
with open(path) as fil:
with open(path, encoding="utf-8") as fil:
return json.load(fil)


Expand Down Expand Up @@ -193,7 +193,7 @@ def parse_args(required_config_keys):
def check_config(config, required_keys):
missing_keys = [key for key in required_keys if key not in config]
if missing_keys:
raise Exception("Config is missing required keys: {}".format(missing_keys))
raise Exception(f"Config is missing required keys: {missing_keys}")


def backoff(exceptions, giveup):
Expand Down