Merged in issue-32-python-3-6-upgrade (pull request #16)

Upgrade to Python 3.6
This commit is contained in:
Dorian Pula 2016-12-29 22:56:29 -05:00
commit 6e74a74d57
11 changed files with 26 additions and 28 deletions

View File

@ -1,4 +1,4 @@
FROM python:3.5
FROM python:3.6
MAINTAINER Dorian Pula <dorian.pula@amber-penguin-software.ca>
RUN wget https://github.com/Yelp/dumb-init/releases/download/v1.2.0/dumb-init_1.2.0_amd64.deb \

View File

@ -46,7 +46,7 @@ def serve_page(slug):
# TODO: Filter by provided APP ID, provided in the header.
page = db_session.query(models.Page).filter_by(slug=slug).first()
except Exception as err:
logger.error('Error retrieving "%s" page because of: %s', slug, err)
logger.error(f'Error retrieving "{slug}" page because of: {err}')
flask.abort(http.HTTPStatus.INTERNAL_SERVER_ERROR)
if page is None:
@ -72,7 +72,7 @@ def save_page(slug):
content=updated_page['content'])
db_session.add(page)
except Exception as err:
logger.error('Error retrieving "%s" page because of: %s', slug, err)
logger.error(f'Error retrieving "{slug}" page because of: {err}')
flask.abort(http.HTTPStatus.INTERNAL_SERVER_ERROR)
else:
page.slug = slug

View File

@ -36,7 +36,7 @@ def app_config():
try:
site = db_session.query(models.Site).filter_by(api_key=api_key).first()
except Exception as err:
logger.error('Error retrieving site because of: %s', err)
logger.error(f'Error retrieving site because of: {err}')
flask.abort(http.HTTPStatus.INTERNAL_SERVER_ERROR)
if site is None:
@ -60,7 +60,7 @@ def menu_config():
try:
site = db_session.query(models.Site).filter_by(api_key=api_key).first()
except Exception as err:
logger.error('Error retrieving site because of: %s', err)
logger.error(f'Error retrieving site because of: {err}')
flask.abort(http.HTTPStatus.INTERNAL_SERVER_ERROR)
if site is None:

View File

@ -85,12 +85,12 @@ def test_database(db_connection=DEFAULT_DB_CONNECTION, keep_test_db=False,
yield
except sql_error.OperationalError as err:
print('Unable to connect to the database because of "{message}" \n Stack: \n'.format(message=err))
print(f'Unable to connect to the database because of "{err}" \n Stack: \n')
traceback.print_tb(sys.exc_info()[2])
raise err
except Exception as err:
print('Unable to run server test because of "{message}" \n Stack: \n'.format(message=err))
print(f'Unable to run server test because of "{err}" \n Stack: \n')
traceback.print_tb(sys.exc_info()[2])
raise err

View File

@ -44,5 +44,4 @@ def run(ctx, port=5000, debugging=False):
if debugging:
run_debug_server(port)
else:
inv.run(
'uwsgi --http :{port} --master --processes 4 --module "rookeries:make_rookeries_app()"'.format(port=port))
inv.run(f'uwsgi --http :{port} --master --processes 4 --module "rookeries:make_rookeries_app()"')

View File

@ -39,15 +39,14 @@ def _prepare_py_test_command(test_path, check_coverage_on='', verbosity=0, **ext
verbose_flag = '-{}'.format('v' * verbosity)
if verbosity >= 3:
verbose_flag = '{} -r a'.format(verbose_flag)
verbose_flag = f'{verbose_flag} -r a'
coverage_flag = ''
if check_coverage_on:
coverage_flag = '--cov {pkg} --cov-report=term-missing --capture=no'.format(pkg=check_coverage_on)
coverage_flag = f'--cov {check_coverage_on} --cov-report=term-missing --capture=no'
additional_test_params = ' '.join(
['--{}={}'.format(key.replace('_', '-'), value) for (key, value) in extra_test_params.items()])
return 'py.test {path} {coverage} {verbose} {extra_options}'.format(
path=test_path, coverage=coverage_flag, verbose=verbose_flag, extra_options=additional_test_params)
return f'py.test {test_path} {coverage_flag} {verbose_flag} {additional_test_params}'
@inv.task

View File

@ -59,11 +59,11 @@ def environment(environ_modifier):
"""
current_env = copy.deepcopy(os.environ)
if not isinstance(environ_modifier, dict):
raise ValueError('Provided environment "{}" is a not a dict!'.format(environ_modifier))
raise ValueError(f'Provided environment "{environ_modifier}" is a not a dict!')
non_string_keys = [key for key in environ_modifier.keys() if not isinstance(key, str)]
if non_string_keys:
raise ValueError('Provided environment contains invalid keys: "{}"!'.format(non_string_keys))
raise ValueError(f'Provided environment contains invalid keys: "{non_string_keys}"!')
for environ_key, value in environ_modifier.items():
os.environ[environ_key] = value

View File

@ -25,4 +25,4 @@ def api_base_uri(request):
"""
server_hostname = request.config.getoption("--server-hostname")
server_port = request.config.getoption("--server-port")
return "http://{hostname}:{port}".format(hostname=server_hostname, port=server_port)
return f"http://{server_hostname}:{server_port}"

View File

@ -20,55 +20,55 @@ USER_ROLE_JWT_MAPPING = {
}
@mark.skip(reason="Test scenarios need work")
@mark.skip(reason='Test scenarios need work')
@bdd.scenario('site_management.feature', 'Admin user can create a new site')
def test_site_creation_by_admin():
pass
@mark.skip(reason="Test scenarios need work")
@mark.skip(reason='Test scenarios need work')
@bdd.scenario('site_management.feature', 'Editor user can not create a new site')
def test_site_creation_permissions_for_editor():
pass
@mark.skip(reason="Test scenarios need work")
@mark.skip(reason='Test scenarios need work')
@bdd.scenario('site_management.feature', 'Any user can get an existing site')
def test_site_fetch():
pass
@mark.skip(reason="Test scenarios need work")
@mark.skip(reason='Test scenarios need work')
@bdd.scenario('site_management.feature', 'Admin user can modify a site')
def test_site_modification_by_admin():
pass
@mark.skip(reason="Test scenarios need work")
@mark.skip(reason='Test scenarios need work')
@bdd.scenario('site_management.feature', 'Editor user can not modify a site')
def test_site_modifications_permissions_for_editor():
pass
@mark.skip(reason="Test scenarios need work")
@mark.skip(reason='Test scenarios need work')
@bdd.scenario('site_management.feature', 'Admin user can modify a site\'s menu')
def test_site_menu_modification_by_admin():
pass
@mark.skip(reason="Test scenarios need work")
@mark.skip(reason='Test scenarios need work')
@bdd.scenario('site_management.feature', 'Editor user can not modify a site\'s menu')
def test_site_menu_modifications_permissions_for_editor():
pass
@mark.skip(reason="Test scenarios need work")
@mark.skip(reason='Test scenarios need work')
@bdd.scenario('site_management.feature', 'Admin user can delete a site')
def test_site_deletion_by_admin():
pass
@mark.skip(reason="Test scenarios need work")
@mark.skip(reason='Test scenarios need work')
@bdd.scenario('site_management.feature', 'Editor user can not delete a site')
def test_site_deletion_permissions_for_editor():
pass
@ -82,7 +82,7 @@ def user_credentials(user_role):
@bdd.when('I create a site')
def posted_response_from_auth_endpoint(user_credentials, api_base_uri):
# TODO: Needs work
response = requests.post("{}/auth".format(api_base_uri), json={
response = requests.post(f'{api_base_uri}/auth', json={
'username': user_credentials.username,
'password': user_credentials.password,
})

View File

@ -52,7 +52,7 @@ def user_credentials(user_type, login_type):
@bdd.when('I post my credentials against the auth endpoint')
def posted_response_from_auth_endpoint(user_credentials, api_base_uri):
response = requests.post("{}/auth".format(api_base_uri), json={
response = requests.post(f'{api_base_uri}/auth', json={
'username': user_credentials.username,
'password': user_credentials.password,
})

View File

@ -18,6 +18,6 @@ def convert_response_into_json(response: wrappers.Response) -> dict:
"""
content_type = response.content_type.lower()
if content_type != "application/json":
raise ValueError("Expected a JSON response. Got \"{}\" instead.".format(content_type))
raise ValueError(f"Expected a JSON response. Got \"{content_type}\" instead.")
json_text = response.get_data(as_text=True)
return json.loads(json_text)