From 4ee30db83e9651d1f5a69041d216843ebfd71631 Mon Sep 17 00:00:00 2001 From: Julian Mehnle Date: Wed, 31 Jan 2018 23:24:07 +0000 Subject: [PATCH 001/120] .gitignore: Ignore Vim swap files. --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index a65824ab..8b29acb8 100644 --- a/.gitignore +++ b/.gitignore @@ -60,3 +60,6 @@ target/ # Jetbrains/PyCharm project files .idea/ + +# vim swap files +.*.sw? From 419ea8785e17f2fc87a065faae48cffc572e04f9 Mon Sep 17 00:00:00 2001 From: Francis Tseng Date: Wed, 7 Feb 2018 11:23:17 -0500 Subject: [PATCH 002/120] fix for handling S3 lambda deployment arguments --- aws_lambda/aws_lambda.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/aws_lambda/aws_lambda.py b/aws_lambda/aws_lambda.py index 44f37cc6..dfa10c0b 100755 --- a/aws_lambda/aws_lambda.py +++ b/aws_lambda/aws_lambda.py @@ -139,9 +139,9 @@ def deploy_s3( use_s3 = True s3_file = upload_s3(cfg, path_to_zip_file, use_s3) if function_exists(cfg, cfg.get('function_name')): - update_function(cfg, path_to_zip_file, use_s3, s3_file) + update_function(cfg, path_to_zip_file, use_s3=use_s3, s3_file=s3_file) else: - create_function(cfg, path_to_zip_file, use_s3, s3_file) + create_function(cfg, path_to_zip_file, use_s3=use_s3, s3_file=s3_file) def upload( @@ -459,7 +459,7 @@ def get_client(client, aws_access_key_id, aws_secret_access_key, region=None): ) -def create_function(cfg, path_to_zip_file, *use_s3, **s3_file): +def create_function(cfg, path_to_zip_file, use_s3=False, s3_file=None): """Register and upload a function to AWS Lambda.""" print('Creating your new Lambda function') @@ -531,7 +531,7 @@ def create_function(cfg, path_to_zip_file, *use_s3, **s3_file): client.create_function(**kwargs) -def update_function(cfg, path_to_zip_file, *use_s3, **s3_file): +def update_function(cfg, path_to_zip_file, use_s3=False, s3_file=None): """Updates the code of an existing Lambda function""" print('Updating your Lambda function') From 0556916f56f1540836f1a5faae8c4e712336f6ac Mon Sep 17 00:00:00 2001 From: Julian Mehnle Date: Thu, 1 Feb 2018 23:25:10 +0000 Subject: [PATCH 003/120] Add support for `--profile` command-line argument. This allows to choose from what AWS profile to choose credentials from `~/.aws/credentials`. --- aws_lambda/aws_lambda.py | 73 +++++++++++++++++++++++++++------------- scripts/lambda | 63 ++++++++++++++++++++++++++++------ 2 files changed, 102 insertions(+), 34 deletions(-) diff --git a/aws_lambda/aws_lambda.py b/aws_lambda/aws_lambda.py index 44f37cc6..e0b0f038 100755 --- a/aws_lambda/aws_lambda.py +++ b/aws_lambda/aws_lambda.py @@ -33,7 +33,10 @@ log = logging.getLogger(__name__) -def cleanup_old_versions(src, keep_last_versions, config_file='config.yaml'): +def cleanup_old_versions( + src, keep_last_versions, + config_file='config.yaml', profile_name=None, +): """Deletes old deployed versions of the function in AWS Lambda. Won't delete $Latest and any aliased version @@ -48,13 +51,14 @@ def cleanup_old_versions(src, keep_last_versions, config_file='config.yaml'): print("Won't delete all versions. Please do this manually") else: path_to_config_file = os.path.join(src, config_file) - cfg = read(path_to_config_file, loader=yaml.load) + cfg = read_cfg(path_to_config_file, profile_name) + profile_name = cfg.get('profile') aws_access_key_id = cfg.get('aws_access_key_id') aws_secret_access_key = cfg.get('aws_secret_access_key') client = get_client( - 'lambda', aws_access_key_id, aws_secret_access_key, + 'lambda', profile_name, aws_access_key_id, aws_secret_access_key, cfg.get('region'), ) @@ -80,7 +84,7 @@ def cleanup_old_versions(src, keep_last_versions, config_file='config.yaml'): def deploy( src, use_requirements=False, local_package=None, - config_file='config.yaml', + config_file='config.yaml', profile_name=None, ): """Deploys a new function to AWS Lambda. @@ -93,7 +97,7 @@ def deploy( """ # Load and parse the config file. path_to_config_file = os.path.join(src, config_file) - cfg = read(path_to_config_file, loader=yaml.load) + cfg = read_cfg(path_to_config_file, profile_name) # Copy all the pip dependencies required to run your code into a temporary # folder then add the handler file in the root of this directory. @@ -112,7 +116,8 @@ def deploy( def deploy_s3( - src, use_requirements=False, local_package=None, config_file='config.yaml', + src, use_requirements=False, local_package=None, + config_file='config.yaml', profile_name=None, ): """Deploys a new function via AWS S3. @@ -125,7 +130,7 @@ def deploy_s3( """ # Load and parse the config file. path_to_config_file = os.path.join(src, config_file) - cfg = read(path_to_config_file, loader=yaml.load) + cfg = read_cfg(path_to_config_file, profile_name) # Copy all the pip dependencies required to run your code into a temporary # folder then add the handler file in the root of this directory. @@ -146,7 +151,7 @@ def deploy_s3( def upload( src, use_requirements=False, local_package=None, - config_file='config.yaml', + config_file='config.yaml', profile_name=None, ): """Uploads a new function to AWS S3. @@ -159,7 +164,7 @@ def upload( """ # Load and parse the config file. path_to_config_file = os.path.join(src, config_file) - cfg = read(path_to_config_file, loader=yaml.load) + cfg = read_cfg(path_to_config_file, profile_name) # Copy all the pip dependencies required to run your code into a temporary # folder then add the handler file in the root of this directory. @@ -174,7 +179,8 @@ def upload( def invoke( - src, event_file='event.json', config_file='config.yaml', + src, event_file='event.json', + config_file='config.yaml', profile_name=None, verbose=False, ): """Simulates a call to your function. @@ -189,7 +195,11 @@ def invoke( """ # Load and parse the config file. path_to_config_file = os.path.join(src, config_file) - cfg = read(path_to_config_file, loader=yaml.load) + cfg = read_cfg(path_to_config_file, profile_name) + + # Set AWS_PROFILE environment variable based on `--profile` option. + if profile_name: + os.environ['AWS_PROFILE'] = profile_name # Load environment variables from the config file into the actual # environment. @@ -248,7 +258,8 @@ def init(src, minimal=False): def build( - src, use_requirements=False, local_package=None, config_file='config.yaml', + src, use_requirements=False, local_package=None, + config_file='config.yaml', profile_name=None, ): """Builds the file bundle. @@ -261,7 +272,7 @@ def build( """ # Load and parse the config file. path_to_config_file = os.path.join(src, config_file) - cfg = read(path_to_config_file, loader=yaml.load) + cfg = read_cfg(path_to_config_file, profile_name) # Get the absolute path to the output directory and create it if it doesn't # already exist. @@ -439,24 +450,25 @@ def get_role_name(region, account_id, role): return 'arn:{0}:iam::{1}:role/{2}'.format(prefix, account_id, role) -def get_account_id(aws_access_key_id, aws_secret_access_key, region=None): +def get_account_id(profile_name, aws_access_key_id, aws_secret_access_key, region=None): """Query STS for a users' account_id""" client = get_client( - 'sts', aws_access_key_id, aws_secret_access_key, + 'sts', profile_name, aws_access_key_id, aws_secret_access_key, region, ) return client.get_caller_identity().get('Account') -def get_client(client, aws_access_key_id, aws_secret_access_key, region=None): +def get_client(client, profile_name, aws_access_key_id, aws_secret_access_key, region=None): """Shortcut for getting an initialized instance of the boto3 client.""" - return boto3.client( - client, + boto3.setup_default_session( + profile_name=profile_name, aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key, region_name=region, ) + return boto3.client(client) def create_function(cfg, path_to_zip_file, *use_s3, **s3_file): @@ -464,11 +476,12 @@ def create_function(cfg, path_to_zip_file, *use_s3, **s3_file): print('Creating your new Lambda function') byte_stream = read(path_to_zip_file, binary_file=True) + profile_name = cfg.get('profile') aws_access_key_id = cfg.get('aws_access_key_id') aws_secret_access_key = cfg.get('aws_secret_access_key') account_id = get_account_id( - aws_access_key_id, aws_secret_access_key, cfg.get('region'), + profile_name, aws_access_key_id, aws_secret_access_key, cfg.get('region'), ) role = get_role_name( cfg.get('region'), account_id, @@ -476,7 +489,7 @@ def create_function(cfg, path_to_zip_file, *use_s3, **s3_file): ) client = get_client( - 'lambda', aws_access_key_id, aws_secret_access_key, + 'lambda', profile_name, aws_access_key_id, aws_secret_access_key, cfg.get('region'), ) @@ -536,11 +549,12 @@ def update_function(cfg, path_to_zip_file, *use_s3, **s3_file): print('Updating your Lambda function') byte_stream = read(path_to_zip_file, binary_file=True) + profile_name = cfg.get('profile') aws_access_key_id = cfg.get('aws_access_key_id') aws_secret_access_key = cfg.get('aws_secret_access_key') account_id = get_account_id( - aws_access_key_id, aws_secret_access_key, cfg.get('region'), + profile_name, aws_access_key_id, aws_secret_access_key, cfg.get('region'), ) role = get_role_name( cfg.get('region'), account_id, @@ -548,7 +562,7 @@ def update_function(cfg, path_to_zip_file, *use_s3, **s3_file): ) client = get_client( - 'lambda', aws_access_key_id, aws_secret_access_key, + 'lambda', profile_name, aws_access_key_id, aws_secret_access_key, cfg.get('region'), ) @@ -603,10 +617,11 @@ def upload_s3(cfg, path_to_zip_file, *use_s3): """Upload a function to AWS S3.""" print('Uploading your new Lambda function') + profile_name = cfg.get('profile') aws_access_key_id = cfg.get('aws_access_key_id') aws_secret_access_key = cfg.get('aws_secret_access_key') client = get_client( - 's3', aws_access_key_id, aws_secret_access_key, + 's3', profile_name, aws_access_key_id, aws_secret_access_key, cfg.get('region'), ) byte_stream = b'' @@ -641,10 +656,11 @@ def upload_s3(cfg, path_to_zip_file, *use_s3): def function_exists(cfg, function_name): """Check whether a function exists or not""" + profile_name = cfg.get('profile') aws_access_key_id = cfg.get('aws_access_key_id') aws_secret_access_key = cfg.get('aws_secret_access_key') client = get_client( - 'lambda', aws_access_key_id, aws_secret_access_key, + 'lambda', profile_name, aws_access_key_id, aws_secret_access_key, cfg.get('region'), ) @@ -663,3 +679,12 @@ def function_exists(cfg, function_name): f['FunctionName'] for f in functions_resp.get('Functions', []) ]) return function_name in functions + + +def read_cfg(path_to_config_file, profile_name): + cfg = read(path_to_config_file, loader=yaml.load) + if profile_name is not None: + cfg['profile'] = profile_name + elif 'AWS_PROFILE' in os.environ: + cfg['profile'] = os.environ['AWS_PROFILE'] + return cfg diff --git a/scripts/lambda b/scripts/lambda index 3f3f7ae8..589eecc1 100755 --- a/scripts/lambda +++ b/scripts/lambda @@ -43,6 +43,10 @@ def init(folder, minimal): default='config.yaml', help='Alternate config file.', ) +@click.option( + '--profile', + help='AWS profile to use.', +) @click.option( '--use-requirements', default=False, @@ -56,12 +60,13 @@ def init(folder, minimal): help='Install local package as well.', multiple=True, ) -def build(use_requirements, local_package, config_file): +def build(use_requirements, local_package, config_file, profile): aws_lambda.build( CURRENT_DIR, use_requirements=use_requirements, local_package=local_package, config_file=config_file, + profile_name=profile, ) @@ -76,12 +81,17 @@ def build(use_requirements, local_package, config_file): default='config.yaml', help='Alternate config file.', ) +@click.option( + '--profile', + help='AWS profile to use.', +) @click.option('--verbose', '-v', is_flag=True) -def invoke(event_file, config_file, verbose): +def invoke(event_file, config_file, profile, verbose): aws_lambda.invoke( CURRENT_DIR, event_file=event_file, config_file=config_file, + profile_name=profile, verbose=verbose, ) @@ -92,6 +102,10 @@ def invoke(event_file, config_file, verbose): default='config.yaml', help='Alternate config file.', ) +@click.option( + '--profile', + help='AWS profile to use.', +) @click.option( '--use-requirements', default=False, @@ -105,16 +119,26 @@ def invoke(event_file, config_file, verbose): help='Install local package as well.', multiple=True, ) -def deploy(use_requirements, local_package, config_file): +def deploy(use_requirements, local_package, config_file, profile): aws_lambda.deploy( CURRENT_DIR, - config_file=config_file, use_requirements=use_requirements, local_package=local_package, + config_file=config_file, + profile_name=profile, ) @click.command(help='Upload your lambda to S3.') +@click.option( + '--config-file', + default='config.yaml', + help='Alternate config file.', +) +@click.option( + '--profile', + help='AWS profile to use.', +) @click.option( '--use-requirements', default=False, @@ -128,8 +152,14 @@ def deploy(use_requirements, local_package, config_file): help='Install local package as well.', multiple=True, ) -def upload(use_requirements, local_package): - aws_lambda.upload(CURRENT_DIR, use_requirements, local_package) +def upload(use_requirements, local_package, config_file, profile): + aws_lambda.upload( + CURRENT_DIR, + use_requirements=use_requirements, + local_package=local_package, + config_file=config_file, + profile_name=profile, + ) @click.command(help='Deploy your lambda via S3.') @@ -138,6 +168,10 @@ def upload(use_requirements, local_package): default='config.yaml', help='Alternate config file.', ) +@click.option( + '--profile', + help='AWS profile to use.', +) @click.option( '--use-requirements', default=False, @@ -151,11 +185,13 @@ def upload(use_requirements, local_package): multiple=True, help='Install local package as well.', ) -def deploy_s3(use_requirements, local_package, config_file): +def deploy_s3(use_requirements, local_package, config_file, profile): aws_lambda.deploy_s3( - CURRENT_DIR, config_file=config_file, + CURRENT_DIR, use_requirements=use_requirements, local_package=local_package, + config_file=config_file, + profile_name=profile, ) @@ -165,14 +201,21 @@ def deploy_s3(use_requirements, local_package, config_file): default='config.yaml', help='Alternate config file.', ) +@click.option( + '--profile', + help='AWS profile to use.', +) @click.option( '--keep-last', type=int, prompt='Please enter the number of recent versions to keep', ) -def cleanup(keep_last, config_file): +def cleanup(keep_last, config_file, profile): aws_lambda.cleanup_old_versions( - CURRENT_DIR, keep_last, config_file=config_file, + CURRENT_DIR, + keep_last, + config_file=config_file, + profile_name=profile, ) From 1e9a273cdd9b920ade2d1fca5f345927a46c883d Mon Sep 17 00:00:00 2001 From: selliott Date: Wed, 14 Feb 2018 17:26:45 -0800 Subject: [PATCH 004/120] =?UTF-8?q?Bump=20version:=203.0.3=20=E2=86=92=203?= =?UTF-8?q?.1.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index d151ac9a..a54937a9 100755 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -2,7 +2,7 @@ # flake8: noqa __author__ = 'Nick Ficano' __email__ = 'nficano@gmail.com' -__version__ = '3.0.3' +__version__ = '3.1.0' from .aws_lambda import deploy, deploy_s3, invoke, init, build, upload, cleanup_old_versions diff --git a/setup.cfg b/setup.cfg index 11b136a0..e482d4ce 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 3.0.3 +current_version = 3.1.0 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} diff --git a/setup.py b/setup.py index e5ef6457..61499cda 100755 --- a/setup.py +++ b/setup.py @@ -26,7 +26,7 @@ setup( name='python-lambda', - version='3.0.3', + version='3.1.0', description='The bare minimum for a Python app running on Amazon Lambda.', long_description=readme, author='Nick Ficano', From 3a05ca235fef5b8214e77858bed554d7134fd1fd Mon Sep 17 00:00:00 2001 From: selliott Date: Fri, 16 Feb 2018 09:44:43 -0800 Subject: [PATCH 005/120] =?UTF-8?q?Bump=20version:=203.1.0=20=E2=86=92=203?= =?UTF-8?q?.1.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index a54937a9..0440cc37 100755 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -2,7 +2,7 @@ # flake8: noqa __author__ = 'Nick Ficano' __email__ = 'nficano@gmail.com' -__version__ = '3.1.0' +__version__ = '3.1.1' from .aws_lambda import deploy, deploy_s3, invoke, init, build, upload, cleanup_old_versions diff --git a/setup.cfg b/setup.cfg index e482d4ce..02d25830 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 3.1.0 +current_version = 3.1.1 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} diff --git a/setup.py b/setup.py index 61499cda..4e341139 100755 --- a/setup.py +++ b/setup.py @@ -26,7 +26,7 @@ setup( name='python-lambda', - version='3.1.0', + version='3.1.1', description='The bare minimum for a Python app running on Amazon Lambda.', long_description=readme, author='Nick Ficano', From ad6fdddeada5b8344aa22e7bab461d683d05606b Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Fri, 16 Feb 2018 19:34:02 -0500 Subject: [PATCH 006/120] linting --- aws_lambda/aws_lambda.py | 18 ++++++++++++++---- setup.cfg | 3 +-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/aws_lambda/aws_lambda.py b/aws_lambda/aws_lambda.py index b0724722..4745fcea 100755 --- a/aws_lambda/aws_lambda.py +++ b/aws_lambda/aws_lambda.py @@ -450,7 +450,10 @@ def get_role_name(region, account_id, role): return 'arn:{0}:iam::{1}:role/{2}'.format(prefix, account_id, role) -def get_account_id(profile_name, aws_access_key_id, aws_secret_access_key, region=None): +def get_account_id( + profile_name, aws_access_key_id, aws_secret_access_key, + region=None, +): """Query STS for a users' account_id""" client = get_client( 'sts', profile_name, aws_access_key_id, aws_secret_access_key, @@ -459,7 +462,10 @@ def get_account_id(profile_name, aws_access_key_id, aws_secret_access_key, regio return client.get_caller_identity().get('Account') -def get_client(client, profile_name, aws_access_key_id, aws_secret_access_key, region=None): +def get_client( + client, profile_name, aws_access_key_id, aws_secret_access_key, + region=None, +): """Shortcut for getting an initialized instance of the boto3 client.""" boto3.setup_default_session( @@ -481,7 +487,9 @@ def create_function(cfg, path_to_zip_file, use_s3=False, s3_file=None): aws_secret_access_key = cfg.get('aws_secret_access_key') account_id = get_account_id( - profile_name, aws_access_key_id, aws_secret_access_key, cfg.get('region'), + profile_name, aws_access_key_id, aws_secret_access_key, cfg.get( + 'region', + ), ) role = get_role_name( cfg.get('region'), account_id, @@ -554,7 +562,9 @@ def update_function(cfg, path_to_zip_file, use_s3=False, s3_file=None): aws_secret_access_key = cfg.get('aws_secret_access_key') account_id = get_account_id( - profile_name, aws_access_key_id, aws_secret_access_key, cfg.get('region'), + profile_name, aws_access_key_id, aws_secret_access_key, cfg.get( + 'region', + ), ) role = get_role_name( cfg.get('region'), account_id, diff --git a/setup.cfg b/setup.cfg index 02d25830..e6bdf3a8 100644 --- a/setup.cfg +++ b/setup.cfg @@ -3,7 +3,7 @@ commit = True tag = True current_version = 3.1.1 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? -serialize = +serialize = {major}.{minor}.{patch} [bumpversion:file:setup.py] @@ -15,4 +15,3 @@ universal = 1 [flake8] exclude = docs - From e9af7d1473b10897b2be09eaa8d7de276a1b6b4a Mon Sep 17 00:00:00 2001 From: selliott Date: Fri, 16 Feb 2018 17:36:50 -0800 Subject: [PATCH 007/120] Fix for issue 95 https://github.com/nficano/python-lambda/issues/95 --- aws_lambda/aws_lambda.py | 28 +++++++++------------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/aws_lambda/aws_lambda.py b/aws_lambda/aws_lambda.py index 4745fcea..cac3ef25 100755 --- a/aws_lambda/aws_lambda.py +++ b/aws_lambda/aws_lambda.py @@ -109,7 +109,7 @@ def deploy( local_package=local_package, ) - if function_exists(cfg, cfg.get('function_name')): + if function_exists(cfg): update_function(cfg, path_to_zip_file) else: create_function(cfg, path_to_zip_file) @@ -143,7 +143,7 @@ def deploy_s3( use_s3 = True s3_file = upload_s3(cfg, path_to_zip_file, use_s3) - if function_exists(cfg, cfg.get('function_name')): + if function_exists(cfg): update_function(cfg, path_to_zip_file, use_s3=use_s3, s3_file=s3_file) else: create_function(cfg, path_to_zip_file, use_s3=use_s3, s3_file=s3_file) @@ -663,9 +663,10 @@ def upload_s3(cfg, path_to_zip_file, *use_s3): return filename -def function_exists(cfg, function_name): +def function_exists(cfg): """Check whether a function exists or not""" + function_name = cfg.get('function_name') profile_name = cfg.get('profile') aws_access_key_id = cfg.get('aws_access_key_id') aws_secret_access_key = cfg.get('aws_secret_access_key') @@ -674,22 +675,11 @@ def function_exists(cfg, function_name): cfg.get('region'), ) - # Need to loop through until we get all of the lambda functions returned. - # It appears to be only returning 50 functions at a time. - functions = [] - functions_resp = client.list_functions() - functions.extend([ - f['FunctionName'] for f in functions_resp.get('Functions', []) - ]) - while('NextMarker' in functions_resp): - functions_resp = client.list_functions( - Marker=functions_resp.get('NextMarker'), - ) - functions.extend([ - f['FunctionName'] for f in functions_resp.get('Functions', []) - ]) - return function_name in functions - + try: + return client.get_function(FunctionName=function_name) + except client.exceptions.ResourceNotFoundException as e: + if 'Function not found' in str(e): + return False def read_cfg(path_to_config_file, profile_name): cfg = read(path_to_config_file, loader=yaml.load) From 28bfeab646a5930fa7620717dccfac31f64fc429 Mon Sep 17 00:00:00 2001 From: Artem Muterko Date: Sun, 18 Feb 2018 20:58:17 +0200 Subject: [PATCH 008/120] Add scaffolding for tests --- Makefile | 4 ++++ tests/dev_requirements.txt | 3 +++ tests/functional/__init__.py | 0 tests/unit/__init__.py | 0 4 files changed, 7 insertions(+) create mode 100644 tests/functional/__init__.py create mode 100644 tests/unit/__init__.py diff --git a/Makefile b/Makefile index ed7320a4..cedb78da 100644 --- a/Makefile +++ b/Makefile @@ -31,3 +31,7 @@ release: clean install: clean python setup.py install + +test: + py.test tests/ --cov aws_lambda --cov-report term-missing + diff --git a/tests/dev_requirements.txt b/tests/dev_requirements.txt index af92d6d2..aa719a73 100644 --- a/tests/dev_requirements.txt +++ b/tests/dev_requirements.txt @@ -1,2 +1,5 @@ bumpversion==0.5.3 pre-commit==0.15.0 +pytest +pytest-cov +flake8 diff --git a/tests/functional/__init__.py b/tests/functional/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/unit/__init__.py b/tests/unit/__init__.py new file mode 100644 index 00000000..e69de29b From d7ab6e9b397ea32ac4b37119b18b98fdf1180f49 Mon Sep 17 00:00:00 2001 From: selliott Date: Tue, 20 Feb 2018 08:33:13 -0800 Subject: [PATCH 009/120] =?UTF-8?q?Bump=20version:=203.1.1=20=E2=86=92=203?= =?UTF-8?q?.1.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 5 +++-- setup.py | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index 0440cc37..f1a83438 100755 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -2,7 +2,7 @@ # flake8: noqa __author__ = 'Nick Ficano' __email__ = 'nficano@gmail.com' -__version__ = '3.1.1' +__version__ = '3.1.2' from .aws_lambda import deploy, deploy_s3, invoke, init, build, upload, cleanup_old_versions diff --git a/setup.cfg b/setup.cfg index e6bdf3a8..eea3e88f 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,9 +1,9 @@ [bumpversion] commit = True tag = True -current_version = 3.1.1 +current_version = 3.1.2 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? -serialize = +serialize = {major}.{minor}.{patch} [bumpversion:file:setup.py] @@ -15,3 +15,4 @@ universal = 1 [flake8] exclude = docs + diff --git a/setup.py b/setup.py index 4e341139..d84941c3 100755 --- a/setup.py +++ b/setup.py @@ -26,7 +26,7 @@ setup( name='python-lambda', - version='3.1.1', + version='3.1.2', description='The bare minimum for a Python app running on Amazon Lambda.', long_description=readme, author='Nick Ficano', From 365f1e913800725c66f97e95f07b6ebe79d5a748 Mon Sep 17 00:00:00 2001 From: selliott Date: Tue, 20 Feb 2018 08:33:41 -0800 Subject: [PATCH 010/120] =?UTF-8?q?Bump=20version:=203.1.2=20=E2=86=92=203?= =?UTF-8?q?.1.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index f1a83438..46da958c 100755 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -2,7 +2,7 @@ # flake8: noqa __author__ = 'Nick Ficano' __email__ = 'nficano@gmail.com' -__version__ = '3.1.2' +__version__ = '3.1.3' from .aws_lambda import deploy, deploy_s3, invoke, init, build, upload, cleanup_old_versions diff --git a/setup.cfg b/setup.cfg index eea3e88f..4edb135f 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 3.1.2 +current_version = 3.1.3 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} diff --git a/setup.py b/setup.py index d84941c3..1ea2a8ad 100755 --- a/setup.py +++ b/setup.py @@ -26,7 +26,7 @@ setup( name='python-lambda', - version='3.1.2', + version='3.1.3', description='The bare minimum for a Python app running on Amazon Lambda.', long_description=readme, author='Nick Ficano', From 2f8aa9a5d924bcac16bec71bf7a72f6418ddbeaa Mon Sep 17 00:00:00 2001 From: Scot Kronenfeld Date: Fri, 23 Feb 2018 01:29:53 -0600 Subject: [PATCH 011/120] Add the ability to set tags on a function --- aws_lambda/aws_lambda.py | 40 ++++++++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/aws_lambda/aws_lambda.py b/aws_lambda/aws_lambda.py index cac3ef25..c749af2f 100755 --- a/aws_lambda/aws_lambda.py +++ b/aws_lambda/aws_lambda.py @@ -109,8 +109,9 @@ def deploy( local_package=local_package, ) - if function_exists(cfg): - update_function(cfg, path_to_zip_file) + existing_config = get_function_config(cfg) + if existing_config: + update_function(cfg, path_to_zip_file, existing_config) else: create_function(cfg, path_to_zip_file) @@ -143,8 +144,10 @@ def deploy_s3( use_s3 = True s3_file = upload_s3(cfg, path_to_zip_file, use_s3) - if function_exists(cfg): - update_function(cfg, path_to_zip_file, use_s3=use_s3, s3_file=s3_file) + existing_config = get_function_config(cfg) + if existing_config: + update_function(cfg, path_to_zip_file, existing_config, use_s3=use_s3, + s3_file=s3_file) else: create_function(cfg, path_to_zip_file, use_s3=use_s3, s3_file=s3_file) @@ -538,6 +541,14 @@ def create_function(cfg, path_to_zip_file, use_s3=False, s3_file=None): 'Publish': True, } + if 'tags' in cfg: + kwargs.update( + Tags={ + key: str(value) + for key, value in cfg.get('tags').items() + } + ) + if 'environment_variables' in cfg: kwargs.update( Environment={ @@ -552,7 +563,9 @@ def create_function(cfg, path_to_zip_file, use_s3=False, s3_file=None): client.create_function(**kwargs) -def update_function(cfg, path_to_zip_file, use_s3=False, s3_file=None): +def update_function( + cfg, path_to_zip_file, existing_cfg, use_s3=False, s3_file=None +): """Updates the code of an existing Lambda function""" print('Updating your Lambda function') @@ -620,7 +633,17 @@ def update_function(cfg, path_to_zip_file, use_s3=False, s3_file=None): }, ) - client.update_function_configuration(**kwargs) + ret = client.update_function_configuration(**kwargs) + + if 'tags' in cfg: + tags = { + key: str(value) + for key, value in cfg.get('tags').items() + } + if tags != existing_cfg['Tags']: + client.untag_resource(Resource=ret['FunctionArn'], + TagKeys=existing_cfg['Tags'].keys()) + client.tag_resource(Resource=ret['FunctionArn'], Tags=tags) def upload_s3(cfg, path_to_zip_file, *use_s3): @@ -663,8 +686,8 @@ def upload_s3(cfg, path_to_zip_file, *use_s3): return filename -def function_exists(cfg): - """Check whether a function exists or not""" +def get_function_config(cfg): + """Check whether a function exists or not and return its config""" function_name = cfg.get('function_name') profile_name = cfg.get('profile') @@ -681,6 +704,7 @@ def function_exists(cfg): if 'Function not found' in str(e): return False + def read_cfg(path_to_config_file, profile_name): cfg = read(path_to_config_file, loader=yaml.load) if profile_name is not None: From 15021733b2fd0cd45e1830bac59e9d29f2c90dbd Mon Sep 17 00:00:00 2001 From: Scot Kronenfeld Date: Fri, 23 Feb 2018 07:15:54 -0600 Subject: [PATCH 012/120] Updating template to include example for tags. --- aws_lambda/project_templates/config.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/aws_lambda/project_templates/config.yaml b/aws_lambda/project_templates/config.yaml index 72bfdab4..8029c80a 100644 --- a/aws_lambda/project_templates/config.yaml +++ b/aws_lambda/project_templates/config.yaml @@ -26,6 +26,13 @@ environment_variables: env_1: foo env_2: baz +# If `tags` is uncommented then tags will be set at creation or update +# time. During an update all other tags will be removed except the tags +# listed here. +#tags: +# tag_1: foo +# tag_2: bar + # Build options build: source_directories: lib # a comma delimited list of directories in your project root that contains source to package. From b866652ff9aec00e05b352649d0c9210f9dd89c1 Mon Sep 17 00:00:00 2001 From: Scot Kronenfeld Date: Fri, 23 Feb 2018 16:20:29 -0600 Subject: [PATCH 013/120] For python3, force tags to be a list (instead of the default dict_keys). --- aws_lambda/aws_lambda.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aws_lambda/aws_lambda.py b/aws_lambda/aws_lambda.py index c749af2f..839d2410 100755 --- a/aws_lambda/aws_lambda.py +++ b/aws_lambda/aws_lambda.py @@ -642,7 +642,7 @@ def update_function( } if tags != existing_cfg['Tags']: client.untag_resource(Resource=ret['FunctionArn'], - TagKeys=existing_cfg['Tags'].keys()) + TagKeys=list(existing_cfg['Tags'].keys())) client.tag_resource(Resource=ret['FunctionArn'], Tags=tags) From 3d7d8556e6b4179ecc0de990df0229c7527993ae Mon Sep 17 00:00:00 2001 From: Scot Kronenfeld Date: Mon, 26 Feb 2018 20:41:47 -0600 Subject: [PATCH 014/120] Change --use-requirements to --requirements . ** Breaks backwards compatability! ** --- aws_lambda/aws_lambda.py | 35 ++++++++++++++--------------- scripts/lambda | 48 ++++++++++++++++++++-------------------- 2 files changed, 41 insertions(+), 42 deletions(-) diff --git a/aws_lambda/aws_lambda.py b/aws_lambda/aws_lambda.py index cac3ef25..1f4984eb 100755 --- a/aws_lambda/aws_lambda.py +++ b/aws_lambda/aws_lambda.py @@ -83,7 +83,7 @@ def cleanup_old_versions( def deploy( - src, use_requirements=False, local_package=None, + src, requirements=None, local_package=None, config_file='config.yaml', profile_name=None, ): """Deploys a new function to AWS Lambda. @@ -105,7 +105,7 @@ def deploy( # directory. path_to_zip_file = build( src, config_file=config_file, - use_requirements=use_requirements, + requirements=requirements, local_package=local_package, ) @@ -116,7 +116,7 @@ def deploy( def deploy_s3( - src, use_requirements=False, local_package=None, + src, requirements=None, local_package=None, config_file='config.yaml', profile_name=None, ): """Deploys a new function via AWS S3. @@ -137,7 +137,7 @@ def deploy_s3( # Zip the contents of this folder into a single file and output to the dist # directory. path_to_zip_file = build( - src, config_file=config_file, use_requirements=use_requirements, + src, config_file=config_file, requirements=requirements, local_package=local_package, ) @@ -150,7 +150,7 @@ def deploy_s3( def upload( - src, use_requirements=False, local_package=None, + src, requirements=None, local_package=None, config_file='config.yaml', profile_name=None, ): """Uploads a new function to AWS S3. @@ -171,7 +171,7 @@ def upload( # Zip the contents of this folder into a single file and output to the dist # directory. path_to_zip_file = build( - src, config_file=config_file, use_requirements=use_requirements, + src, config_file=config_file, requirements=requirements, local_package=local_package, ) @@ -258,7 +258,7 @@ def init(src, minimal=False): def build( - src, use_requirements=False, local_package=None, + src, requirements=None, local_package=None, config_file='config.yaml', profile_name=None, ): """Builds the file bundle. @@ -288,7 +288,7 @@ def build( path_to_temp = mkdtemp(prefix='aws-lambda') pip_install_to_target( path_to_temp, - use_requirements=use_requirements, + requirements=requirements, local_package=local_package, ) @@ -407,30 +407,28 @@ def _filter_blacklist(package): pip.main(['install', package, '-t', path, '--ignore-installed']) -def pip_install_to_target(path, use_requirements=False, local_package=None): +def pip_install_to_target(path, requirements=None, local_package=None): """For a given active virtualenv, gather all installed pip packages then copy (re-install) them to the path provided. :param str path: Path to copy installed pip packages to. - :param bool use_requirements: - If set, only the packages in the requirements.txt file are installed. - The requirements.txt file needs to be in the same directory as the - project which shall be deployed. - Defaults to false and installs all pacakges found via pip freeze if - not set. + :param str requirements: + If set, only the packages in the supplied requirements file are + installed. + If not set then installs all packages found via pip freeze. :param str local_package: The path to a local package with should be included in the deploy as well (and/or is not available on PyPi) """ packages = [] - if not use_requirements: + if not requirements: print('Gathering pip packages') packages.extend(pip.operations.freeze.freeze()) else: - if os.path.exists('requirements.txt'): + if os.path.exists(requirements): print('Gathering requirement packages') - data = read('requirements.txt') + data = read(requirements) packages.extend(data.splitlines()) if not packages: @@ -681,6 +679,7 @@ def function_exists(cfg): if 'Function not found' in str(e): return False + def read_cfg(path_to_config_file, profile_name): cfg = read(path_to_config_file, loader=yaml.load) if profile_name is not None: diff --git a/scripts/lambda b/scripts/lambda index 589eecc1..bceddaf1 100755 --- a/scripts/lambda +++ b/scripts/lambda @@ -48,10 +48,10 @@ def init(folder, minimal): help='AWS profile to use.', ) @click.option( - '--use-requirements', - default=False, - is_flag=True, - help='Install all packages defined in requirements.txt', + '--requirements', + default=None, + type=click.Path(), + help='Install packages from supplied requirements file.', ) @click.option( '--local-package', @@ -60,10 +60,10 @@ def init(folder, minimal): help='Install local package as well.', multiple=True, ) -def build(use_requirements, local_package, config_file, profile): +def build(requirements, local_package, config_file, profile): aws_lambda.build( CURRENT_DIR, - use_requirements=use_requirements, + requirements=requirements, local_package=local_package, config_file=config_file, profile_name=profile, @@ -107,10 +107,10 @@ def invoke(event_file, config_file, profile, verbose): help='AWS profile to use.', ) @click.option( - '--use-requirements', - default=False, - is_flag=True, - help='Install all packages defined in requirements.txt', + '--requirements', + default=None, + type=click.Path(), + help='Install all packages defined in supplied requirements file', ) @click.option( '--local-package', @@ -119,10 +119,10 @@ def invoke(event_file, config_file, profile, verbose): help='Install local package as well.', multiple=True, ) -def deploy(use_requirements, local_package, config_file, profile): +def deploy(requirements, local_package, config_file, profile): aws_lambda.deploy( CURRENT_DIR, - use_requirements=use_requirements, + requirements=requirements, local_package=local_package, config_file=config_file, profile_name=profile, @@ -140,10 +140,10 @@ def deploy(use_requirements, local_package, config_file, profile): help='AWS profile to use.', ) @click.option( - '--use-requirements', - default=False, - is_flag=True, - help='Install all packages defined in requirements.txt', + '--requirements', + default=None, + type=click.Path(), + help='Install all packages defined in supplied requirements file', ) @click.option( '--local-package', @@ -152,10 +152,10 @@ def deploy(use_requirements, local_package, config_file, profile): help='Install local package as well.', multiple=True, ) -def upload(use_requirements, local_package, config_file, profile): +def upload(requirements, local_package, config_file, profile): aws_lambda.upload( CURRENT_DIR, - use_requirements=use_requirements, + requirements=requirements, local_package=local_package, config_file=config_file, profile_name=profile, @@ -173,10 +173,10 @@ def upload(use_requirements, local_package, config_file, profile): help='AWS profile to use.', ) @click.option( - '--use-requirements', - default=False, - is_flag=True, - help='Install all packages defined in requirements.txt', + '--requirements', + default=None, + type=click.Path(), + help='Install all packages defined in supplied requirements file', ) @click.option( '--local-package', @@ -185,10 +185,10 @@ def upload(use_requirements, local_package, config_file, profile): multiple=True, help='Install local package as well.', ) -def deploy_s3(use_requirements, local_package, config_file, profile): +def deploy_s3(requirements, local_package, config_file, profile): aws_lambda.deploy_s3( CURRENT_DIR, - use_requirements=use_requirements, + requirements=requirements, local_package=local_package, config_file=config_file, profile_name=profile, From 5e6331d9898ae89ce369cf4c73ea3cd3218a320a Mon Sep 17 00:00:00 2001 From: Scot Kronenfeld Date: Wed, 28 Feb 2018 09:57:22 -0600 Subject: [PATCH 015/120] Set the VPC during lambda creation time (#101) --- aws_lambda/aws_lambda.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/aws_lambda/aws_lambda.py b/aws_lambda/aws_lambda.py index cac3ef25..3f865720 100755 --- a/aws_lambda/aws_lambda.py +++ b/aws_lambda/aws_lambda.py @@ -523,6 +523,10 @@ def create_function(cfg, path_to_zip_file, use_s3=False, s3_file=None): 'Description': cfg.get('description'), 'Timeout': cfg.get('timeout', 15), 'MemorySize': cfg.get('memory_size', 512), + 'VpcConfig': { + 'SubnetIds': cfg.get('subnet_ids', []), + 'SecurityGroupIds': cfg.get('security_group_ids', []), + }, 'Publish': True, } else: @@ -535,6 +539,10 @@ def create_function(cfg, path_to_zip_file, use_s3=False, s3_file=None): 'Description': cfg.get('description'), 'Timeout': cfg.get('timeout', 15), 'MemorySize': cfg.get('memory_size', 512), + 'VpcConfig': { + 'SubnetIds': cfg.get('subnet_ids', []), + 'SecurityGroupIds': cfg.get('security_group_ids', []), + }, 'Publish': True, } From 7d2c2b44bb2a2dcbfa2834baf0239de567acfbf8 Mon Sep 17 00:00:00 2001 From: Scot Kronenfeld Date: Tue, 6 Mar 2018 16:50:55 -0600 Subject: [PATCH 016/120] Fix detection of existing tags when updating a function. `Tags` key is not present if there are no existing tags --- aws_lambda/aws_lambda.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aws_lambda/aws_lambda.py b/aws_lambda/aws_lambda.py index 839d2410..5228f284 100755 --- a/aws_lambda/aws_lambda.py +++ b/aws_lambda/aws_lambda.py @@ -640,7 +640,7 @@ def update_function( key: str(value) for key, value in cfg.get('tags').items() } - if tags != existing_cfg['Tags']: + if tags != existing_cfg.get('Tags'): client.untag_resource(Resource=ret['FunctionArn'], TagKeys=list(existing_cfg['Tags'].keys())) client.tag_resource(Resource=ret['FunctionArn'], Tags=tags) From b1b820a94e7d1a7bb6a499ea34dfeeacf07d8af7 Mon Sep 17 00:00:00 2001 From: Scot Kronenfeld Date: Tue, 6 Mar 2018 16:54:00 -0600 Subject: [PATCH 017/120] Fix untagging when `Tags` key is not present. --- aws_lambda/aws_lambda.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/aws_lambda/aws_lambda.py b/aws_lambda/aws_lambda.py index 5228f284..8c58b069 100755 --- a/aws_lambda/aws_lambda.py +++ b/aws_lambda/aws_lambda.py @@ -641,8 +641,9 @@ def update_function( for key, value in cfg.get('tags').items() } if tags != existing_cfg.get('Tags'): - client.untag_resource(Resource=ret['FunctionArn'], - TagKeys=list(existing_cfg['Tags'].keys())) + if existing_cfg.get('Tags'): + client.untag_resource(Resource=ret['FunctionArn'], + TagKeys=list(existing_cfg['Tags'].keys())) client.tag_resource(Resource=ret['FunctionArn'], Tags=tags) From aeba93f29ed2b407289bf1ffe77f39448867229f Mon Sep 17 00:00:00 2001 From: Andy Date: Tue, 3 Apr 2018 21:12:34 +0200 Subject: [PATCH 018/120] Fixed installation of futures on python3. --- requirements.txt | 1 - setup.py | 9 ++++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/requirements.txt b/requirements.txt index 3edd8ee4..66d0f005 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,6 @@ boto3==1.4.4 botocore==1.5.62 click==6.6 docutils==0.12 -futures==3.0.5 jmespath==0.9.0 pyaml==15.8.2 python-dateutil==2.5.3 diff --git a/setup.py b/setup.py index 1ea2a8ad..60e5f72f 100755 --- a/setup.py +++ b/setup.py @@ -13,12 +13,11 @@ 'requirements.txt', session=pip.download.PipSession(), ) +pip_requirements = [str(r.req) for r in requirements] + # Only install futures package if using a Python version <= 2.7 -if sys.version_info[0] == 2: - pip_requirements = [str(r.req) for r in requirements] -else: - pip_requirements = [str(r.req) - for r in requirements if 'futures' not in str(r.req)] +if sys.version_info < (3, 0): + pip_requirements.append('futures') test_requirements = [ # TODO: put package test requirements here From b8d0fdc5278568351ed6ea6a0fd3ff47cf8b0d86 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Fri, 13 Apr 2018 22:19:09 -0400 Subject: [PATCH 019/120] =?UTF-8?q?Bump=20version:=203.1.3=20=E2=86=92=203?= =?UTF-8?q?.2.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index 46da958c..09b3edb4 100755 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -2,7 +2,7 @@ # flake8: noqa __author__ = 'Nick Ficano' __email__ = 'nficano@gmail.com' -__version__ = '3.1.3' +__version__ = '3.2.0' from .aws_lambda import deploy, deploy_s3, invoke, init, build, upload, cleanup_old_versions diff --git a/setup.cfg b/setup.cfg index 4edb135f..d31e3e9d 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 3.1.3 +current_version = 3.2.0 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} diff --git a/setup.py b/setup.py index 60e5f72f..972d1bfb 100755 --- a/setup.py +++ b/setup.py @@ -25,7 +25,7 @@ setup( name='python-lambda', - version='3.1.3', + version='3.2.0', description='The bare minimum for a Python app running on Amazon Lambda.', long_description=readme, author='Nick Ficano', From 203512522adf5ac74e0333380cdf83f2f3d99433 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Fri, 13 Apr 2018 22:19:30 -0400 Subject: [PATCH 020/120] =?UTF-8?q?Bump=20version:=203.2.0=20=E2=86=92=203?= =?UTF-8?q?.2.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index 09b3edb4..44840d70 100755 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -2,7 +2,7 @@ # flake8: noqa __author__ = 'Nick Ficano' __email__ = 'nficano@gmail.com' -__version__ = '3.2.0' +__version__ = '3.2.1' from .aws_lambda import deploy, deploy_s3, invoke, init, build, upload, cleanup_old_versions diff --git a/setup.cfg b/setup.cfg index d31e3e9d..f886bffb 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 3.2.0 +current_version = 3.2.1 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} diff --git a/setup.py b/setup.py index 972d1bfb..e5c11437 100755 --- a/setup.py +++ b/setup.py @@ -25,7 +25,7 @@ setup( name='python-lambda', - version='3.2.0', + version='3.2.1', description='The bare minimum for a Python app running on Amazon Lambda.', long_description=readme, author='Nick Ficano', From 0b02ec519d2ba0b18930284e55e621c578655b09 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Tue, 17 Apr 2018 19:06:04 -0400 Subject: [PATCH 021/120] fixed compat issues w/ pip 10 --- aws_lambda/aws_lambda.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/aws_lambda/aws_lambda.py b/aws_lambda/aws_lambda.py index 40f9c262..17c01264 100755 --- a/aws_lambda/aws_lambda.py +++ b/aws_lambda/aws_lambda.py @@ -407,7 +407,12 @@ def _filter_blacklist(package): package = package.replace('-e ', '') print('Installing {package}'.format(package=package)) - pip.main(['install', package, '-t', path, '--ignore-installed']) + pip_major_version = [int(v) for v in pip.__version__.split('.')][0] + if pip_major_version >= 10: + from pip._internal import main + main(['install', package, '-t', path, '--ignore-installed']) + else: + pip.main(['install', package, '-t', path, '--ignore-installed']) def pip_install_to_target(path, requirements=None, local_package=None): @@ -427,7 +432,12 @@ def pip_install_to_target(path, requirements=None, local_package=None): packages = [] if not requirements: print('Gathering pip packages') - packages.extend(pip.operations.freeze.freeze()) + pip_major_version = [int(v) for v in pip.__version__.split('.')][0] + if pip_major_version >= 10: + from pip._internal import operations + packages.extend(operations.freeze.freeze()) + else: + packages.extend(pip.operations.freeze.freeze()) else: if os.path.exists(requirements): print('Gathering requirement packages') From ebef2fc8c81c2ccb88f39812f633ef2d88166b19 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Tue, 17 Apr 2018 19:06:35 -0400 Subject: [PATCH 022/120] =?UTF-8?q?Bump=20version:=203.2.1=20=E2=86=92=203?= =?UTF-8?q?.2.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index 44840d70..3fdcb28b 100755 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -2,7 +2,7 @@ # flake8: noqa __author__ = 'Nick Ficano' __email__ = 'nficano@gmail.com' -__version__ = '3.2.1' +__version__ = '3.2.2' from .aws_lambda import deploy, deploy_s3, invoke, init, build, upload, cleanup_old_versions diff --git a/setup.cfg b/setup.cfg index f886bffb..fbe3020f 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 3.2.1 +current_version = 3.2.2 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} diff --git a/setup.py b/setup.py index e5c11437..562ffd85 100755 --- a/setup.py +++ b/setup.py @@ -25,7 +25,7 @@ setup( name='python-lambda', - version='3.2.1', + version='3.2.2', description='The bare minimum for a Python app running on Amazon Lambda.', long_description=readme, author='Nick Ficano', From 4c4d6ab2368880e21ee4a536eab423bcadc48367 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Tue, 17 Apr 2018 19:07:22 -0400 Subject: [PATCH 023/120] =?UTF-8?q?Bump=20version:=203.2.2=20=E2=86=92=203?= =?UTF-8?q?.2.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index 3fdcb28b..e0874bd5 100755 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -2,7 +2,7 @@ # flake8: noqa __author__ = 'Nick Ficano' __email__ = 'nficano@gmail.com' -__version__ = '3.2.2' +__version__ = '3.2.3' from .aws_lambda import deploy, deploy_s3, invoke, init, build, upload, cleanup_old_versions diff --git a/setup.cfg b/setup.cfg index fbe3020f..3fb9134a 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 3.2.2 +current_version = 3.2.3 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} diff --git a/setup.py b/setup.py index 562ffd85..dd83d333 100755 --- a/setup.py +++ b/setup.py @@ -25,7 +25,7 @@ setup( name='python-lambda', - version='3.2.2', + version='3.2.3', description='The bare minimum for a Python app running on Amazon Lambda.', long_description=readme, author='Nick Ficano', From c07de9201b36550427e9115be055058b94e8c6d0 Mon Sep 17 00:00:00 2001 From: "igor.borges" Date: Sat, 2 Jun 2018 10:29:17 -0300 Subject: [PATCH 024/120] Update AWS Lambda runtime list in the README file. --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 10b0739e..3771d879 100644 --- a/README.rst +++ b/README.rst @@ -19,7 +19,7 @@ With python-lambda and `pytube `_ both conti Description =========== -AWS Lambda is a service that allows you to write Python, Java, or Node.js code that gets executed in response to events like http requests or files uploaded to S3. +AWS Lambda is a service that allows you to write Python, Java, Node.js, C# or Go code that gets executed in response to events like http requests or files uploaded to S3. Working with Lambda is relatively easy, but the process of bundling and deploying your code is not as simple as it could be. From 8594edb97f73ccf9849563d3d488cac2353ae1a4 Mon Sep 17 00:00:00 2001 From: "igor.borges" Date: Sat, 2 Jun 2018 20:54:36 -0300 Subject: [PATCH 025/120] Add pip >= 10 support in the release script. --- setup.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/setup.py b/setup.py index dd83d333..920eece6 100755 --- a/setup.py +++ b/setup.py @@ -2,15 +2,24 @@ # -*- coding: utf-8 -*- import sys -import pip +try: # for pip >= 10 + from pip._internal.req import parse_requirements +except ImportError: # for pip <= 9.0.3 + from pip.req import parse_requirements + +try: # for pip >= 10 + from pip._internal import download +except ImportError: # for pip <= 9.0.3 + from pip import download + from setuptools import find_packages from setuptools import setup with open('README.rst') as readme_file: readme = readme_file.read() -requirements = pip.req.parse_requirements( - 'requirements.txt', session=pip.download.PipSession(), +requirements = parse_requirements( + 'requirements.txt', session=download.PipSession(), ) pip_requirements = [str(r.req) for r in requirements] From 2e0831a1472264ce6b86e674291bf3d1dc65ecfe Mon Sep 17 00:00:00 2001 From: Gordon Myers Date: Wed, 13 Jun 2018 13:21:51 -0500 Subject: [PATCH 026/120] added cli option to preserve VPC settings on update --- aws_lambda/aws_lambda.py | 18 ++++++++++++------ scripts/lambda | 9 ++++++++- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/aws_lambda/aws_lambda.py b/aws_lambda/aws_lambda.py index 17c01264..3f985e6a 100755 --- a/aws_lambda/aws_lambda.py +++ b/aws_lambda/aws_lambda.py @@ -85,6 +85,7 @@ def cleanup_old_versions( def deploy( src, requirements=None, local_package=None, config_file='config.yaml', profile_name=None, + preserve_vpc=False ): """Deploys a new function to AWS Lambda. @@ -111,7 +112,7 @@ def deploy( existing_config = get_function_config(cfg) if existing_config: - update_function(cfg, path_to_zip_file, existing_config) + update_function(cfg, path_to_zip_file, existing_config, preserve_vpc) else: create_function(cfg, path_to_zip_file) @@ -119,6 +120,7 @@ def deploy( def deploy_s3( src, requirements=None, local_package=None, config_file='config.yaml', profile_name=None, + preserve_vpc=False ): """Deploys a new function via AWS S3. @@ -147,7 +149,7 @@ def deploy_s3( existing_config = get_function_config(cfg) if existing_config: update_function(cfg, path_to_zip_file, existing_config, use_s3=use_s3, - s3_file=s3_file) + s3_file=s3_file, preserve_vpc=preserve_vpc) else: create_function(cfg, path_to_zip_file, use_s3=use_s3, s3_file=s3_file) @@ -580,7 +582,7 @@ def create_function(cfg, path_to_zip_file, use_s3=False, s3_file=None): def update_function( - cfg, path_to_zip_file, existing_cfg, use_s3=False, s3_file=None + cfg, path_to_zip_file, existing_cfg, use_s3=False, s3_file=None, preserve_vpc=False ): """Updates the code of an existing Lambda function""" @@ -632,11 +634,15 @@ def update_function( 'Description': cfg.get('description'), 'Timeout': cfg.get('timeout', 15), 'MemorySize': cfg.get('memory_size', 512), - 'VpcConfig': { + } + + if preserve_vpc: + kwargs['VpcConfig'] = existing_cfg.get('VpcConfig') + else: + kwargs['VpcConfig'] = { 'SubnetIds': cfg.get('subnet_ids', []), 'SecurityGroupIds': cfg.get('security_group_ids', []), - }, - } + } if 'environment_variables' in cfg: kwargs.update( diff --git a/scripts/lambda b/scripts/lambda index bceddaf1..a8e0e225 100755 --- a/scripts/lambda +++ b/scripts/lambda @@ -119,13 +119,20 @@ def invoke(event_file, config_file, profile, verbose): help='Install local package as well.', multiple=True, ) -def deploy(requirements, local_package, config_file, profile): +@click.option( + '--preserve-vpc', + default=False, + is_flag=True, + help='Preserve VPC configuration on existing functions', +) +def deploy(requirements, local_package, config_file, profile, preserve_vpc): aws_lambda.deploy( CURRENT_DIR, requirements=requirements, local_package=local_package, config_file=config_file, profile_name=profile, + preserve_vpc=preserve_vpc, ) From 28916f0c4bf0f021877663350e318bfef739c83c Mon Sep 17 00:00:00 2001 From: Gordon Myers Date: Mon, 9 Jul 2018 10:41:55 -0500 Subject: [PATCH 027/120] calling function with kwargs parameter --- aws_lambda/aws_lambda.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aws_lambda/aws_lambda.py b/aws_lambda/aws_lambda.py index 3f985e6a..652c7cc4 100755 --- a/aws_lambda/aws_lambda.py +++ b/aws_lambda/aws_lambda.py @@ -112,7 +112,7 @@ def deploy( existing_config = get_function_config(cfg) if existing_config: - update_function(cfg, path_to_zip_file, existing_config, preserve_vpc) + update_function(cfg, path_to_zip_file, existing_config, preserve_vpc=preserve_vpc) else: create_function(cfg, path_to_zip_file) From aca240bb31647daee18a1fec17e3debd257ebe99 Mon Sep 17 00:00:00 2001 From: Arun Prabhakar Date: Sat, 1 Sep 2018 12:56:43 +0530 Subject: [PATCH 028/120] Copy stat of the files into the zip files Copy the permissions and stats to the zip files so that executable binary files remain executable. --- aws_lambda/aws_lambda.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/aws_lambda/aws_lambda.py b/aws_lambda/aws_lambda.py index 17c01264..43054cda 100755 --- a/aws_lambda/aws_lambda.py +++ b/aws_lambda/aws_lambda.py @@ -11,6 +11,7 @@ from imp import load_source from shutil import copy from shutil import copyfile +from shutil import copystat from shutil import copytree from tempfile import mkdtemp @@ -346,6 +347,7 @@ def build( # Copy handler file into root of the packages folder. copyfile(f, os.path.join(path_to_temp, filename)) + copystat(f, os.path.join(path_to_temp, filename)) elif os.path.isdir(f): destination_folder = os.path.join(path_to_temp, f[len(src) + 1:]) copytree(f, destination_folder) From b4de0d58c28574df02d69132a908d11b9935cb0d Mon Sep 17 00:00:00 2001 From: Gordon Myers Date: Wed, 5 Sep 2018 14:33:50 -0500 Subject: [PATCH 029/120] fixed issue with accessing existing configuration --- aws_lambda/aws_lambda.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/aws_lambda/aws_lambda.py b/aws_lambda/aws_lambda.py index 652c7cc4..cfae8ab0 100755 --- a/aws_lambda/aws_lambda.py +++ b/aws_lambda/aws_lambda.py @@ -637,7 +637,11 @@ def update_function( } if preserve_vpc: - kwargs['VpcConfig'] = existing_cfg.get('VpcConfig') + kwargs['VpcConfig'] = existing_cfg.get('Configuration').get('VpcConfig') + if kwargs['VpcConfig'] is None: + kwargs['VpcConfig'] = {} + else: + del kwargs['VpcConfig']['VpcId'] else: kwargs['VpcConfig'] = { 'SubnetIds': cfg.get('subnet_ids', []), From d41e868301f99129eff3145ecb5d488513518ae4 Mon Sep 17 00:00:00 2001 From: Gordon Myers Date: Wed, 5 Sep 2018 14:48:01 -0500 Subject: [PATCH 030/120] falling back to config file in case of failed lookup --- aws_lambda/aws_lambda.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/aws_lambda/aws_lambda.py b/aws_lambda/aws_lambda.py index cfae8ab0..abc69a41 100755 --- a/aws_lambda/aws_lambda.py +++ b/aws_lambda/aws_lambda.py @@ -639,7 +639,10 @@ def update_function( if preserve_vpc: kwargs['VpcConfig'] = existing_cfg.get('Configuration').get('VpcConfig') if kwargs['VpcConfig'] is None: - kwargs['VpcConfig'] = {} + kwargs['VpcConfig'] = { + 'SubnetIds': cfg.get('subnet_ids', []), + 'SecurityGroupIds': cfg.get('security_group_ids', []), + } else: del kwargs['VpcConfig']['VpcId'] else: From 006fda5a08f41687c65aa1beed1cbf67e1c0b77f Mon Sep 17 00:00:00 2001 From: Gordon Myers Date: Wed, 5 Sep 2018 15:11:02 -0500 Subject: [PATCH 031/120] added none-safety check --- aws_lambda/aws_lambda.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aws_lambda/aws_lambda.py b/aws_lambda/aws_lambda.py index abc69a41..0d663ad8 100755 --- a/aws_lambda/aws_lambda.py +++ b/aws_lambda/aws_lambda.py @@ -637,7 +637,7 @@ def update_function( } if preserve_vpc: - kwargs['VpcConfig'] = existing_cfg.get('Configuration').get('VpcConfig') + kwargs['VpcConfig'] = existing_cfg.get('Configuration', {}).get('VpcConfig') if kwargs['VpcConfig'] is None: kwargs['VpcConfig'] = { 'SubnetIds': cfg.get('subnet_ids', []), From 4319ae39e105480a2c6c34fe30bb722c23542621 Mon Sep 17 00:00:00 2001 From: Gordon Myers Date: Fri, 7 Sep 2018 11:22:49 -0500 Subject: [PATCH 032/120] =?UTF-8?q?Bump=20version:=203.2.3=20=E2=86=92=203?= =?UTF-8?q?.2.4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index e0874bd5..90367bf0 100755 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -2,7 +2,7 @@ # flake8: noqa __author__ = 'Nick Ficano' __email__ = 'nficano@gmail.com' -__version__ = '3.2.3' +__version__ = '3.2.4' from .aws_lambda import deploy, deploy_s3, invoke, init, build, upload, cleanup_old_versions diff --git a/setup.cfg b/setup.cfg index 3fb9134a..1e36d21a 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 3.2.3 +current_version = 3.2.4 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} diff --git a/setup.py b/setup.py index 920eece6..5067c5ba 100755 --- a/setup.py +++ b/setup.py @@ -34,7 +34,7 @@ setup( name='python-lambda', - version='3.2.3', + version='3.2.4', description='The bare minimum for a Python app running on Amazon Lambda.', long_description=readme, author='Nick Ficano', From 74d31b4178b173c16485d469b87c022615bab47a Mon Sep 17 00:00:00 2001 From: Gordon Myers Date: Fri, 7 Sep 2018 11:24:04 -0500 Subject: [PATCH 033/120] =?UTF-8?q?Bump=20version:=203.2.4=20=E2=86=92=203?= =?UTF-8?q?.2.5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index 90367bf0..346e4935 100755 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -2,7 +2,7 @@ # flake8: noqa __author__ = 'Nick Ficano' __email__ = 'nficano@gmail.com' -__version__ = '3.2.4' +__version__ = '3.2.5' from .aws_lambda import deploy, deploy_s3, invoke, init, build, upload, cleanup_old_versions diff --git a/setup.cfg b/setup.cfg index 1e36d21a..f2af3e85 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 3.2.4 +current_version = 3.2.5 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} diff --git a/setup.py b/setup.py index 5067c5ba..39b02a4f 100755 --- a/setup.py +++ b/setup.py @@ -34,7 +34,7 @@ setup( name='python-lambda', - version='3.2.4', + version='3.2.5', description='The bare minimum for a Python app running on Amazon Lambda.', long_description=readme, author='Nick Ficano', From 53d1eb15e6021670e140d75ebf2d41c481680810 Mon Sep 17 00:00:00 2001 From: Gordon Myers Date: Wed, 19 Sep 2018 14:06:08 -0500 Subject: [PATCH 034/120] combined changes from simon-weber to abstractly declare install_requires and from kmbenitez to use subprocess instead of pip internals --- .gitignore | 2 ++ README.rst | 2 +- aws_lambda/__init__.py | 2 +- aws_lambda/aws_lambda.py | 28 ++++++++++++---------------- aws_lambda/helpers.py | 20 ++++++++++++++++++++ setup.cfg | 2 +- setup.py | 26 ++++++++------------------ tests/unit/test_LambdaContext.py | 14 ++++++++++++++ 8 files changed, 59 insertions(+), 37 deletions(-) create mode 100644 tests/unit/test_LambdaContext.py diff --git a/.gitignore b/.gitignore index 8b29acb8..840dfff7 100644 --- a/.gitignore +++ b/.gitignore @@ -63,3 +63,5 @@ target/ # vim swap files .*.sw? +aws_lambda/.DS_Store +.DS_Store \ No newline at end of file diff --git a/README.rst b/README.rst index 3771d879..10b0739e 100644 --- a/README.rst +++ b/README.rst @@ -19,7 +19,7 @@ With python-lambda and `pytube `_ both conti Description =========== -AWS Lambda is a service that allows you to write Python, Java, Node.js, C# or Go code that gets executed in response to events like http requests or files uploaded to S3. +AWS Lambda is a service that allows you to write Python, Java, or Node.js code that gets executed in response to events like http requests or files uploaded to S3. Working with Lambda is relatively easy, but the process of bundling and deploying your code is not as simple as it could be. diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index e0874bd5..346e4935 100755 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -2,7 +2,7 @@ # flake8: noqa __author__ = 'Nick Ficano' __email__ = 'nficano@gmail.com' -__version__ = '3.2.3' +__version__ = '3.2.5' from .aws_lambda import deploy, deploy_s3, invoke, init, build, upload, cleanup_old_versions diff --git a/aws_lambda/aws_lambda.py b/aws_lambda/aws_lambda.py index 0d663ad8..91105188 100755 --- a/aws_lambda/aws_lambda.py +++ b/aws_lambda/aws_lambda.py @@ -16,14 +16,15 @@ import boto3 import botocore -import pip import yaml +import subprocess from .helpers import archive from .helpers import get_environment_variable_value from .helpers import mkdir from .helpers import read from .helpers import timestamp +from .helpers import LambdaContext ARN_PREFIXES = { @@ -228,11 +229,14 @@ def invoke( # into a function we can execute. fn = get_callable_handler_function(src, handler) - # TODO: look into mocking the ``context`` variable, currently being passed - # as None. + timeout = cfg.get('timeout') + if timeout: + context = LambdaContext(cfg.get('function_name'),timeout) + else: + context = LambdaContext(cfg.get('function_name')) start = time.time() - results = fn(event, None) + results = fn(event, context) end = time.time() print('{0}'.format(results)) @@ -409,12 +413,8 @@ def _filter_blacklist(package): package = package.replace('-e ', '') print('Installing {package}'.format(package=package)) - pip_major_version = [int(v) for v in pip.__version__.split('.')][0] - if pip_major_version >= 10: - from pip._internal import main - main(['install', package, '-t', path, '--ignore-installed']) - else: - pip.main(['install', package, '-t', path, '--ignore-installed']) + subprocess.check_call([sys.executable, '-m', 'pip', 'install', package, '-t', path, '--ignore-installed']) + print ('Install directory contents are now: {directory}'.format(directory=os.listdir(path))) def pip_install_to_target(path, requirements=None, local_package=None): @@ -434,12 +434,8 @@ def pip_install_to_target(path, requirements=None, local_package=None): packages = [] if not requirements: print('Gathering pip packages') - pip_major_version = [int(v) for v in pip.__version__.split('.')][0] - if pip_major_version >= 10: - from pip._internal import operations - packages.extend(operations.freeze.freeze()) - else: - packages.extend(pip.operations.freeze.freeze()) + pkgStr = subprocess.check_call([sys.executable, '-m', 'pip', 'freeze']) + packages.extend(pkgStr.decode('utf-8').splitlines()) else: if os.path.exists(requirements): print('Gathering requirement packages') diff --git a/aws_lambda/helpers.py b/aws_lambda/helpers.py index ed3ef70f..75fbb036 100644 --- a/aws_lambda/helpers.py +++ b/aws_lambda/helpers.py @@ -2,6 +2,7 @@ import datetime as dt import os import re +import time import zipfile @@ -41,3 +42,22 @@ def get_environment_variable_value(val): if match is not None: env_val = os.environ.get(match.group('environment_key_name')) return env_val + +class LambdaContext: + current_milli_time = lambda x: int(round(time.time() * 1000)) + + def get_remaining_time_in_millis(self): + return max(0, self.timeout_millis - (self.current_milli_time() - self.start_time_millis)) + + def __init__(self,function_name, timeoutSeconds = 3): + self.function_name = function_name + self.function_version = None + self.invoked_function_arn = None + self.memory_limit_in_mb = None + self.aws_request_id = None + self.log_group_name = None + self.log_stream_name = None + self.identity = None + self.client_context = None + self.timeout_millis = timeoutSeconds * 1000 + self.start_time_millis = self.current_milli_time() \ No newline at end of file diff --git a/setup.cfg b/setup.cfg index 3fb9134a..f2af3e85 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 3.2.3 +current_version = 3.2.5 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} diff --git a/setup.py b/setup.py index 920eece6..fc851de3 100755 --- a/setup.py +++ b/setup.py @@ -2,31 +2,21 @@ # -*- coding: utf-8 -*- import sys -try: # for pip >= 10 - from pip._internal.req import parse_requirements -except ImportError: # for pip <= 9.0.3 - from pip.req import parse_requirements - -try: # for pip >= 10 - from pip._internal import download -except ImportError: # for pip <= 9.0.3 - from pip import download - from setuptools import find_packages from setuptools import setup with open('README.rst') as readme_file: readme = readme_file.read() -requirements = parse_requirements( - 'requirements.txt', session=download.PipSession(), -) - -pip_requirements = [str(r.req) for r in requirements] +requirements = [ + 'boto3', + 'click', + 'PyYAML', +] # Only install futures package if using a Python version <= 2.7 if sys.version_info < (3, 0): - pip_requirements.append('futures') + requirements.append('futures') test_requirements = [ # TODO: put package test requirements here @@ -34,7 +24,7 @@ setup( name='python-lambda', - version='3.2.3', + version='3.2.5', description='The bare minimum for a Python app running on Amazon Lambda.', long_description=readme, author='Nick Ficano', @@ -47,7 +37,7 @@ }, include_package_data=True, scripts=['scripts/lambda'], - install_requires=pip_requirements, + install_requires=requirements, license='ISCL', zip_safe=False, keywords='python-lambda', diff --git a/tests/unit/test_LambdaContext.py b/tests/unit/test_LambdaContext.py new file mode 100644 index 00000000..242174df --- /dev/null +++ b/tests/unit/test_LambdaContext.py @@ -0,0 +1,14 @@ +from aws_lambda.helpers import LambdaContext +import time +import unittest + +class TestLambdaContext(unittest.TestCase): + + def test_get_remaining_time_in_millis(self): + context = LambdaContext('function_name',2000) + time.sleep(.5) + self.assertTrue(context.get_remaining_time_in_millis() < 2000) + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file From 7266d1a7c8ce5b08c55ddfa8f363e15bb00327c7 Mon Sep 17 00:00:00 2001 From: Gordon Myers Date: Wed, 19 Sep 2018 15:40:16 -0500 Subject: [PATCH 035/120] =?UTF-8?q?Bump=20version:=203.2.5=20=E2=86=92=203?= =?UTF-8?q?.2.6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index 346e4935..d9978d01 100755 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -2,7 +2,7 @@ # flake8: noqa __author__ = 'Nick Ficano' __email__ = 'nficano@gmail.com' -__version__ = '3.2.5' +__version__ = '3.2.6' from .aws_lambda import deploy, deploy_s3, invoke, init, build, upload, cleanup_old_versions diff --git a/setup.cfg b/setup.cfg index f2af3e85..a043461c 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 3.2.5 +current_version = 3.2.6 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} diff --git a/setup.py b/setup.py index fc851de3..1ba7291d 100755 --- a/setup.py +++ b/setup.py @@ -24,7 +24,7 @@ setup( name='python-lambda', - version='3.2.5', + version='3.2.6', description='The bare minimum for a Python app running on Amazon Lambda.', long_description=readme, author='Nick Ficano', From 8de5c56a1309b4048996ccbf851c0daaeb76bf49 Mon Sep 17 00:00:00 2001 From: Gordon Myers Date: Thu, 20 Sep 2018 11:29:30 -0500 Subject: [PATCH 036/120] added regions; added support for concurrency; made description optional --- aws_lambda/aws_lambda.py | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/aws_lambda/aws_lambda.py b/aws_lambda/aws_lambda.py index 91105188..bc3de2ac 100755 --- a/aws_lambda/aws_lambda.py +++ b/aws_lambda/aws_lambda.py @@ -28,6 +28,8 @@ ARN_PREFIXES = { + 'cn-north-1': 'aws-cn', + 'cn-northwest-1': 'aws-cn', 'us-gov-west-1': 'aws-us-gov', } @@ -529,7 +531,7 @@ def create_function(cfg, path_to_zip_file, use_s3=False, s3_file=None): 'S3Bucket': '{}'.format(buck_name), 'S3Key': '{}'.format(s3_file), }, - 'Description': cfg.get('description'), + 'Description': cfg.get('description', ''), 'Timeout': cfg.get('timeout', 15), 'MemorySize': cfg.get('memory_size', 512), 'VpcConfig': { @@ -545,7 +547,7 @@ def create_function(cfg, path_to_zip_file, use_s3=False, s3_file=None): 'Role': role, 'Handler': cfg.get('handler'), 'Code': {'ZipFile': byte_stream}, - 'Description': cfg.get('description'), + 'Description': cfg.get('description', ''), 'Timeout': cfg.get('timeout', 15), 'MemorySize': cfg.get('memory_size', 512), 'VpcConfig': { @@ -576,6 +578,10 @@ def create_function(cfg, path_to_zip_file, use_s3=False, s3_file=None): client.create_function(**kwargs) + concurrency = get_concurrency(cfg) + if concurrency > 0: + client.put_function_concurrency(FunctionName=func_name, ReservedConcurrentExecutions=concurrency) + def update_function( cfg, path_to_zip_file, existing_cfg, use_s3=False, s3_file=None, preserve_vpc=False @@ -627,7 +633,7 @@ def update_function( 'Role': role, 'Runtime': cfg.get('runtime'), 'Handler': cfg.get('handler'), - 'Description': cfg.get('description'), + 'Description': cfg.get('description', ''), 'Timeout': cfg.get('timeout', 15), 'MemorySize': cfg.get('memory_size', 512), } @@ -660,6 +666,12 @@ def update_function( ret = client.update_function_configuration(**kwargs) + concurrency = get_concurrency(cfg) + if concurrency > 0: + client.put_function_concurrency(FunctionName=cfg.get('function_name'), ReservedConcurrentExecutions=concurrency) + elif 'Concurrency' in existing_cfg: + client.delete_function_concurrency(FunctionName=cfg.get('function_name')) + if 'tags' in cfg: tags = { key: str(value) @@ -731,6 +743,12 @@ def get_function_config(cfg): return False +def get_concurrency(cfg): + """Return the Reserved Concurrent Executions if present in the config""" + concurrency = int(cfg.get('concurrency', 0)) + return max(0, concurrency) + + def read_cfg(path_to_config_file, profile_name): cfg = read(path_to_config_file, loader=yaml.load) if profile_name is not None: From 6558473a86b717a2bc4f6f449c519aa50a1b7bed Mon Sep 17 00:00:00 2001 From: Gordon Myers Date: Thu, 20 Sep 2018 11:35:43 -0500 Subject: [PATCH 037/120] added example of concurrency to template --- aws_lambda/project_templates/config.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/aws_lambda/project_templates/config.yaml b/aws_lambda/project_templates/config.yaml index 8029c80a..bc293717 100644 --- a/aws_lambda/project_templates/config.yaml +++ b/aws_lambda/project_templates/config.yaml @@ -19,6 +19,7 @@ aws_secret_access_key: # dist_directory: dist # timeout: 15 # memory_size: 512 +# concurrency: 500 # # Experimental Environment variables From e02c3dc4d731590618c1c2fd013dee4f1b7a16af Mon Sep 17 00:00:00 2001 From: Gordon Myers Date: Thu, 20 Sep 2018 16:10:30 -0500 Subject: [PATCH 038/120] subprocess fix for #128 --- .gitignore | 3 ++- aws_lambda/aws_lambda.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 840dfff7..549d6f2f 100644 --- a/.gitignore +++ b/.gitignore @@ -64,4 +64,5 @@ target/ # vim swap files .*.sw? aws_lambda/.DS_Store -.DS_Store \ No newline at end of file +.DS_Store +.vscode/ \ No newline at end of file diff --git a/aws_lambda/aws_lambda.py b/aws_lambda/aws_lambda.py index bc3de2ac..09329346 100755 --- a/aws_lambda/aws_lambda.py +++ b/aws_lambda/aws_lambda.py @@ -436,7 +436,7 @@ def pip_install_to_target(path, requirements=None, local_package=None): packages = [] if not requirements: print('Gathering pip packages') - pkgStr = subprocess.check_call([sys.executable, '-m', 'pip', 'freeze']) + pkgStr = subprocess.check_output([sys.executable, '-m', 'pip', 'freeze']) packages.extend(pkgStr.decode('utf-8').splitlines()) else: if os.path.exists(requirements): From f9e8b5eb9ad2f5f9a020f61c499eea77b6d26887 Mon Sep 17 00:00:00 2001 From: Gordon Myers Date: Thu, 20 Sep 2018 16:17:19 -0500 Subject: [PATCH 039/120] =?UTF-8?q?Bump=20version:=203.2.6=20=E2=86=92=203?= =?UTF-8?q?.2.7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index d9978d01..b6446d5b 100755 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -2,7 +2,7 @@ # flake8: noqa __author__ = 'Nick Ficano' __email__ = 'nficano@gmail.com' -__version__ = '3.2.6' +__version__ = '3.2.7' from .aws_lambda import deploy, deploy_s3, invoke, init, build, upload, cleanup_old_versions diff --git a/setup.cfg b/setup.cfg index a043461c..9fcb34b7 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 3.2.6 +current_version = 3.2.7 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} diff --git a/setup.py b/setup.py index 1ba7291d..359a57e1 100755 --- a/setup.py +++ b/setup.py @@ -24,7 +24,7 @@ setup( name='python-lambda', - version='3.2.6', + version='3.2.7', description='The bare minimum for a Python app running on Amazon Lambda.', long_description=readme, author='Nick Ficano', From 92a38ae4d12f77ec99d57dcc798552b75cc75223 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Wed, 31 Oct 2018 12:21:46 -0400 Subject: [PATCH 040/120] downloads shield --- README.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.rst b/README.rst index 10b0739e..364d3196 100644 --- a/README.rst +++ b/README.rst @@ -10,6 +10,9 @@ python-λ :alt: Python Versions :target: https://pypi.python.org/pypi/python-lambda/ +.. image:: https://img.shields.io/pypi/dm/pytube.svg + :alt: PyPI - Downloads + Python-lambda is a toolset for developing and deploying *serverless* Python code in AWS Lambda. A call for contributors From 8a5a1038adab23e35b366267f930486e3d6e9bcd Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Wed, 12 Dec 2018 01:53:52 -0500 Subject: [PATCH 041/120] Update README.rst --- README.rst | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/README.rst b/README.rst index 364d3196..da457dc4 100644 --- a/README.rst +++ b/README.rst @@ -1,6 +1,11 @@ -======== -python-λ -======== +

+ dotfiles +

+ .. image:: https://img.shields.io/pypi/v/python-lambda.svg :alt: Pypi From 5f0a1b7432fe826d00249c16d6814254c8f85a59 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Wed, 12 Dec 2018 01:54:16 -0500 Subject: [PATCH 042/120] Update README.rst --- README.rst | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/README.rst b/README.rst index da457dc4..e2b36243 100644 --- a/README.rst +++ b/README.rst @@ -1,11 +1,4 @@ -

- dotfiles -

- +.. image:: https://s3.amazonaws.com/nf-assets/python-lambda.svg .. image:: https://img.shields.io/pypi/v/python-lambda.svg :alt: Pypi From 105e255d5b30b9fc458d31c83bdfbd0b1d9e806e Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Wed, 12 Dec 2018 02:04:31 -0500 Subject: [PATCH 043/120] updated readme --- README.md | 240 +++++++++++++++++++++++++++++++++++++++++++++++++++++ README.rst | 213 ----------------------------------------------- 2 files changed, 240 insertions(+), 213 deletions(-) create mode 100644 README.md delete mode 100644 README.rst diff --git a/README.md b/README.md new file mode 100644 index 00000000..a8e3fea8 --- /dev/null +++ b/README.md @@ -0,0 +1,240 @@ +
+

+ python-lambda logo +

+

+ pypi + pypi + +

+
+ +Python-lambda is a toolset for developing and deploying *serverless* Python code in AWS Lambda. + +# A call for contributors +With python-lambda and pytube both continuing to gain momentum, I'm calling for +contributors to help build out new features, review pull requests, fix bugs, +and maintain overall code quality. If you're interested, please email me at +nficano[at]gmail.com. + +# Description + +AWS Lambda is a service that allows you to write Python, Java, or Node.js code +that gets executed in response to events like http requests or files uploaded +to S3. + +Working with Lambda is relatively easy, but the process of bundling and +deploying your code is not as simple as it could be. + +The *Python-Lambda* library takes away the guess work of developing your +Python-Lambda services by providing you a toolset to streamline the annoying +parts. + +# Requirements + +* Python 2.7 & 3.6 (At the time of writing this, AWS Lambda only supports Python 2.7/3.6). +* Pip (~8.1.1) +* Virtualenv (~15.0.0) +* Virtualenvwrapper (~4.7.1) + +# Getting Started + +First, you must create an IAM Role on your AWS account called +``lambda_basic_execution`` with the ``LambdaBasicExecution`` policy attached. + +On your computer, create a new virtualenv and project folder. + +```bash +$ mkvirtualenv pylambda +(pylambda) $ mkdir pylambda +``` + +Next, download *Python-Lambda* using pip via pypi. + +```bash +(pylambda) $ pip install python-lambda +``` + +From your ``pylambda`` directory, run the following to bootstrap your project. + +```bash +(pylambda) $ lambda init +``` + +This will create the following files: ``event.json``, ``__init__.py``, +``service.py``, and ``config.yaml``. + +Let's begin by opening ``config.yaml`` in the text editor of your choice. For +the purpose of this tutorial, the only required information is +``aws_access_key_id`` and ``aws_secret_access_key``. You can find these by +logging into the AWS management console. + +Next let's open ``service.py``, in here you'll find the following function: + +```python +def handler(event, context): + # Your code goes here! + e = event.get('e') + pi = event.get('pi') + return e + pi +``` + +This is the handler function; this is the function AWS Lambda will invoke in +response to an event. You will notice that in the sample code ``e`` and ``pi`` +are values in a ``dict``. AWS Lambda uses the ``event`` parameter to pass in +event data to the handler. + +So if, for example, your function is responding to an http request, ``event`` +will be the ``POST`` JSON data and if your function returns something, the +contents will be in your http response payload. + +Next let's open the ``event.json`` file: + +```json +{ + "pi": 3.14, + "e": 2.718 +} +``` +Here you'll find the values of ``e`` and ``pi`` that are being referenced in +the sample code. + +If you now try and run: + +```bash +(pylambda) $ lambda invoke -v +``` + +You will get: +```bash +# 5.858 +# execution time: 0.00000310s +# function execution timeout: 15s +``` + +As you probably put together, the ``lambda invoke`` command grabs the values +stored in the ``event.json`` file and passes them to your function. + +The ``event.json`` file should help you develop your Lambda service locally. +You can specify an alternate ``event.json`` file by passing the +``--event-file=.json`` argument to ``lambda invoke``. + +When you're ready to deploy your code to Lambda simply run: + +```bash +(pylambda) $ lambda deploy +``` + +The deploy script will evaluate your virtualenv and identify your project +dependencies. It will package these up along with your handler function to a +zip file that it then uploads to AWS Lambda. + +You can now log into the +[AWS Lambda management console](https://console.aws.amazon.com/lambda/) to +verify the code deployed successfully. + +### Wiring to an API endpoint + +If you're looking to develop a simple microservice you can easily wire your +function up to an http endpoint. + +Begin by navigating to your [AWS Lambda management console](https://console.aws.amazon.com/lambda/) and +clicking on your function. Click the API Endpoints tab and click "Add API endpoint". + +Under API endpoint type select "API Gateway". + +Next change Method to ``POST`` and Security to "Open" and click submit (NOTE: +you should secure this for use in production, open security is used for demo +purposes). + +At last you need to change the return value of the function to comply with the +standard defined for the API Gateway endpoint, the function should now look +like this: + +``` +def handler(event, context): + # Your code goes here! + e = event.get('e') + pi = event.get('pi') + return { + "statusCode": 200, + "headers": { "Content-Type": "application/json"}, + "body": e + pi + } +``` + +Now try and run: + +```bash +$ curl --header "Content-Type:application/json" \ + --request POST \ + --data '{"pi": 3.14, "e": 2.718}' \ + https:// +# 5.8580000000000005 +``` + +### Environment Variables +Lambda functions support environment variables. In order to set environment +variables for your deployed code to use, you can configure them in +``config.yaml``. To load the value for the environment variable at the time of +deployment (instead of hard coding them in your configuration file), you can +use local environment values (see 'env3' in example code below). + +```yaml +environment_variables: + env1: foo + env2: baz + env3: ${LOCAL_ENVIRONMENT_VARIABLE_NAME} +``` + +This would create environment variables in the lambda instance upon deploy. If +your functions don't need environment variables, simply leave this section out +of your config. + +### Uploading to S3 You may find that you do not need the toolkit to fully +deploy your Lambda or that your code bundle is too large to upload via the API. +You can use the ``upload`` command to send the bundle to an S3 bucket of your +choosing. Before doing this, you will need to set the following variables in +``config.yaml``: + +```yaml +role: basic_s3_upload +bucket_name: 'example-bucket' +s3_key_prefix: 'path/to/file/' +``` +Your role must have ``s3:PutObject`` permission on the bucket/key that you +specify for the upload to work properly. Once you have that set, you can +execute ``lambda upload`` to initiate the transfer. + +### Deploying via S3 +You can also choose to use S3 as your source for Lambda deployments. This can +be done by issuing ``lambda deploy_s3`` with the same variables/AWS permissions +you'd set for executing the ``upload`` command. + +### Development +Development of "python-lambda" is facilitated exclusively on GitHub. +Contributions in the form of patches, tests and feature creation and/or +requests are very welcome and highly encouraged. Please open an issue if this +tool does not function as you'd expect. + + +### How to release updates If this is the first time you're releasing to pypi, +you'll need to run: ``pip install -r tests/dev_requirements.txt``. + +Once complete, execute the following commands: + +```bash +git checkout master + +# Increment the version number and tag the release. +bumpversion [major|minor|patch] + +# Upload the distribution to PyPi +python setup.py sdist bdist_wheel upload + +# Since master often contains work-in-progress changes, increment the version +# to a patch release to prevent inaccurate attribution. +bumpversion --no-tag patch + +git push origin master --tags +``` diff --git a/README.rst b/README.rst deleted file mode 100644 index e2b36243..00000000 --- a/README.rst +++ /dev/null @@ -1,213 +0,0 @@ -.. image:: https://s3.amazonaws.com/nf-assets/python-lambda.svg - -.. image:: https://img.shields.io/pypi/v/python-lambda.svg - :alt: Pypi - :target: https://pypi.python.org/pypi/python-lambda/ - -.. image:: https://img.shields.io/pypi/pyversions/python-lambda.svg - :alt: Python Versions - :target: https://pypi.python.org/pypi/python-lambda/ - -.. image:: https://img.shields.io/pypi/dm/pytube.svg - :alt: PyPI - Downloads - -Python-lambda is a toolset for developing and deploying *serverless* Python code in AWS Lambda. - -A call for contributors -======================= -With python-lambda and `pytube `_ both continuing to gain momentum, I'm calling for contributors to help build out new features, review pull requests, fix bugs, and maintain overall code quality. If you're interested, please email me at nficano[at]gmail.com. - -Description -=========== - -AWS Lambda is a service that allows you to write Python, Java, or Node.js code that gets executed in response to events like http requests or files uploaded to S3. - -Working with Lambda is relatively easy, but the process of bundling and deploying your code is not as simple as it could be. - -The *Python-Lambda* library takes away the guess work of developing your Python-Lambda services by providing you a toolset to streamline the annoying parts. - -Requirements -============ - -* Python 2.7 & 3.6 (At the time of writing this, AWS Lambda only supports Python 2.7/3.6). -* Pip (~8.1.1) -* Virtualenv (~15.0.0) -* Virtualenvwrapper (~4.7.1) - -Getting Started -=============== - -First, you must create an IAM Role on your AWS account called `lambda_basic_execution` with the `LambdaBasicExecution` policy attached. - -On your computer, create a new virtualenv and project folder. - -.. code:: bash - - $ mkvirtualenv pylambda - (pylambda) $ mkdir pylambda - -Next, download *Python-Lambda* using pip via pypi. - -.. code:: bash - - (pylambda) $ pip install python-lambda - -From your ``pylambda`` directory, run the following to bootstrap your project. - -.. code:: bash - - (pylambda) $ lambda init - -This will create the following files: ``event.json``, ``__init__.py``, ``service.py``, and ``config.yaml``. - -Let's begin by opening ``config.yaml`` in the text editor of your choice. For the purpose of this tutorial, the only required information is ``aws_access_key_id`` and ``aws_secret_access_key``. You can find these by logging into the AWS management console. - -Next let's open ``service.py``, in here you'll find the following function: - -.. code:: python - - def handler(event, context): - # Your code goes here! - e = event.get('e') - pi = event.get('pi') - return e + pi - - -This is the handler function; this is the function AWS Lambda will invoke in response to an event. You will notice that in the sample code ``e`` and ``pi`` are values in a ``dict``. AWS Lambda uses the ``event`` parameter to pass in event data to the handler. - -So if, for example, your function is responding to an http request, ``event`` will be the ``POST`` JSON data and if your function returns something, the contents will be in your http response payload. - -Next let's open the ``event.json`` file: - -.. code:: json - - { - "pi": 3.14, - "e": 2.718 - } - -Here you'll find the values of ``e`` and ``pi`` that are being referenced in the sample code. - -If you now try and run: - -.. code:: bash - - (pylambda) $ lambda invoke -v - -You will get: - -.. code:: bash - - # 5.858 - - # execution time: 0.00000310s - # function execution timeout: 15s - -As you probably put together, the ``lambda invoke`` command grabs the values stored in the ``event.json`` file and passes them to your function. - -The ``event.json`` file should help you develop your Lambda service locally. You can specify an alternate ``event.json`` file by passing the ``--event-file=.json`` argument to ``lambda invoke``. - -When you're ready to deploy your code to Lambda simply run: - -.. code:: bash - - (pylambda) $ lambda deploy - -The deploy script will evaluate your virtualenv and identify your project dependencies. It will package these up along with your handler function to a zip file that it then uploads to AWS Lambda. - -You can now log into the `AWS Lambda management console `_ to verify the code deployed successfully. - -Wiring to an API endpoint -========================= - -If you're looking to develop a simple microservice you can easily wire your function up to an http endpoint. - -Begin by navigating to your `AWS Lambda management console `_ and clicking on your function. Click the API Endpoints tab and click "Add API endpoint". - -Under API endpoint type select "API Gateway". - -Next change Method to ``POST`` and Security to "Open" and click submit (NOTE: you should secure this for use in production, open security is used for demo purposes). - -At last you need to change the return value of the function to comply with the standard defined for the API Gateway endpoint, the function should now look like this: - -.. code:: python - - def handler(event, context): - # Your code goes here! - e = event.get('e') - pi = event.get('pi') - return { - "statusCode": 200, - "headers": { "Content-Type": "application/json"}, - "body": e + pi - } - -Now try and run: - -.. code:: bash - - $ curl --header "Content-Type:application/json" \ - --request POST \ - --data '{"pi": 3.14, "e": 2.718}' \ - https:// - # 5.8580000000000005 - -Environment Variables -===================== -Lambda functions support environment variables. In order to set environment variables for your deployed code to use, you can configure them in ``config.yaml``. To load the -value for the environment variable at the time of deployment (instead of hard coding them in your configuration file), you can use local environment values (see 'env3' in example code below). - -.. code:: yaml - - environment_variables: - env1: foo - env2: baz - env3: ${LOCAL_ENVIRONMENT_VARIABLE_NAME} - -This would create environment variables in the lambda instance upon deploy. If your functions don't need environment variables, simply leave this section out of your config. - -Uploading to S3 -=============== -You may find that you do not need the toolkit to fully deploy your Lambda or that your code bundle is too large to upload via the API. You can use the ``upload`` command to send the bundle to an S3 bucket of your choosing. -Before doing this, you will need to set the following variables in ``config.yaml``: - -.. code:: yaml - - role: basic_s3_upload - bucket_name: 'example-bucket' - s3_key_prefix: 'path/to/file/' - -Your role must have ``s3:PutObject`` permission on the bucket/key that you specify for the upload to work properly. Once you have that set, you can execute ``lambda upload`` to initiate the transfer. - -Deploying via S3 -=============== -You can also choose to use S3 as your source for Lambda deployments. This can be done by issuing ``lambda deploy_s3`` with the same variables/AWS permissions you'd set for executing the ``upload`` command. - -Development -=========== - -Development of "python-lambda" is facilitated exclusively on GitHub. Contributions in the form of patches, tests and feature creation and/or requests are very welcome and highly encouraged. Please open an issue if this tool does not function as you'd expect. - - -How to release updates ----------------------- - -If this is the first time you're releasing to pypi, you'll need to run: ``pip install -r tests/dev_requirements.txt``. - -Once complete, execute the following commands: - -.. code:: bash - - git checkout master - - # Increment the version number and tag the release. - bumpversion [major|minor|patch] - - # Upload the distribution to PyPi - python setup.py sdist bdist_wheel upload - - # Since master often contains work-in-progress changes, increment the version - # to a patch release to prevent inaccurate attribution. - bumpversion --no-tag patch - - git push origin master --tags From 1206dcc030bee143153c3dcfc1a671ab425f0395 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Wed, 12 Dec 2018 02:05:07 -0500 Subject: [PATCH 044/120] updated readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a8e3fea8..aacb0589 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@

- python-lambda logo + python-lambda logo

pypi From 097cab30708c39ceeca8b60dcfcd824bea9a7df9 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Wed, 12 Dec 2018 02:06:26 -0500 Subject: [PATCH 045/120] updated readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index aacb0589..384829bf 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@

- python-lambda logo + python-lambda logo

pypi From 38dbb0a7fea508cd773bb47a28492707c76f331c Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Mon, 17 Dec 2018 09:54:32 -0500 Subject: [PATCH 046/120] added artwork --- artwork/python-lambda.svg | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 artwork/python-lambda.svg diff --git a/artwork/python-lambda.svg b/artwork/python-lambda.svg new file mode 100644 index 00000000..7751d71c --- /dev/null +++ b/artwork/python-lambda.svg @@ -0,0 +1,27 @@ + + + + Artboard + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From ff5b8aa5f367fec953f9c9c8c775245c9351ad9c Mon Sep 17 00:00:00 2001 From: Greg Oledzki Date: Sat, 9 Feb 2019 23:14:03 +0100 Subject: [PATCH 047/120] Minor formatting fix --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 384829bf..dd059898 100644 --- a/README.md +++ b/README.md @@ -191,7 +191,8 @@ This would create environment variables in the lambda instance upon deploy. If your functions don't need environment variables, simply leave this section out of your config. -### Uploading to S3 You may find that you do not need the toolkit to fully +### Uploading to S3 +You may find that you do not need the toolkit to fully deploy your Lambda or that your code bundle is too large to upload via the API. You can use the ``upload`` command to send the bundle to an S3 bucket of your choosing. Before doing this, you will need to set the following variables in @@ -218,7 +219,8 @@ requests are very welcome and highly encouraged. Please open an issue if this tool does not function as you'd expect. -### How to release updates If this is the first time you're releasing to pypi, +### How to release updates +If this is the first time you're releasing to pypi, you'll need to run: ``pip install -r tests/dev_requirements.txt``. Once complete, execute the following commands: From 7561a48a73acd1d31750536597c26cb1cb0c9ff6 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Thu, 14 Mar 2019 10:51:54 -0400 Subject: [PATCH 048/120] pyyaml upgrade --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 66d0f005..7b5f8381 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,5 +5,5 @@ docutils==0.12 jmespath==0.9.0 pyaml==15.8.2 python-dateutil==2.5.3 -PyYAML==3.11 +PyYAML==5.1 six==1.10.0 From d211b8b6c1f8b69fdaa10984aa38e395cb9b2685 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 7 Apr 2019 08:49:12 -0400 Subject: [PATCH 049/120] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 384829bf..1169a55b 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@

- python-lambda logo + python-lambda logo

pypi From 6bdf806ef0eb5b433d4c662e841330137f217b51 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 14 Apr 2019 11:18:05 -0400 Subject: [PATCH 050/120] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1169a55b..4a648627 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@

- python-lambda logo + python-lambda logo

pypi From b0bd25404df70212d7fa057758760366406d64f2 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 14 Apr 2019 11:20:30 -0400 Subject: [PATCH 051/120] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4a648627..d7bb2a89 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@

- python-lambda logo + python-lambda logo

pypi From 192093a9fb74eedec05739cdb6cb9c89739cb333 Mon Sep 17 00:00:00 2001 From: Conor Flynn Date: Mon, 29 Apr 2019 14:37:15 +0000 Subject: [PATCH 052/120] Fixes typo in command in README. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d7bb2a89..999aca59 100644 --- a/README.md +++ b/README.md @@ -208,7 +208,7 @@ execute ``lambda upload`` to initiate the transfer. ### Deploying via S3 You can also choose to use S3 as your source for Lambda deployments. This can -be done by issuing ``lambda deploy_s3`` with the same variables/AWS permissions +be done by issuing ``lambda deploy-s3`` with the same variables/AWS permissions you'd set for executing the ``upload`` command. ### Development From 36b4898e2d6100d9bf1f40a05c6a02bd94ccf1a7 Mon Sep 17 00:00:00 2001 From: Mike Benowitz Date: Tue, 30 Apr 2019 10:43:26 -0400 Subject: [PATCH 053/120] Replace deprecated yaml loader Replaces the deprecated pyyaml `load` method with the `full_load` method, which prevents arbitrary code execution. Includes a test suite for the `read` helper method. --- aws_lambda/aws_lambda.py | 2 +- tests/unit/test_readHelper.py | 41 +++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 tests/unit/test_readHelper.py diff --git a/aws_lambda/aws_lambda.py b/aws_lambda/aws_lambda.py index f4c184d5..cc692099 100755 --- a/aws_lambda/aws_lambda.py +++ b/aws_lambda/aws_lambda.py @@ -752,7 +752,7 @@ def get_concurrency(cfg): def read_cfg(path_to_config_file, profile_name): - cfg = read(path_to_config_file, loader=yaml.load) + cfg = read(path_to_config_file, loader=yaml.full_load) if profile_name is not None: cfg['profile'] = profile_name elif 'AWS_PROFILE' in os.environ: diff --git a/tests/unit/test_readHelper.py b/tests/unit/test_readHelper.py new file mode 100644 index 00000000..a8080e5d --- /dev/null +++ b/tests/unit/test_readHelper.py @@ -0,0 +1,41 @@ +import os +import unittest +import yaml +from yaml import YAMLLoadWarning +from aws_lambda.helpers import read + +class TestReadHelper(unittest.TestCase): + + TEST_FILE = 'readTmp.txt' + + def setUp(self): + with open(TestReadHelper.TEST_FILE, 'w') as tmp_file: + tmp_file.write('testYaml: testing') + + def tearDown(self): + os.remove(TestReadHelper.TEST_FILE) + + def test_read_no_loader_non_binary(self): + fileContents = read(TestReadHelper.TEST_FILE) + self.assertEqual(fileContents, 'testYaml: testing') + + def test_read_yaml_loader_non_binary(self): + testYaml = read(TestReadHelper.TEST_FILE, loader=yaml.full_load) + self.assertEqual(testYaml['testYaml'], 'testing') + + def test_read_no_loader_binary_mode(self): + fileContents = read(TestReadHelper.TEST_FILE, binary_file=True) + self.assertEqual(fileContents, b'testYaml: testing') + + def test_read_yaml_loader_binary_mode(self): + testYaml = read( + TestReadHelper.TEST_FILE, + loader=yaml.full_load, + binary_file=True + ) + self.assertEqual(testYaml['testYaml'], 'testing') + + def test_read_yaml_old_load_warns(self): + with self.assertWarns(YAMLLoadWarning): + testYaml = read(TestReadHelper.TEST_FILE, loader=yaml.load) + self.assertEqual(testYaml['testYaml'], 'testing') \ No newline at end of file From c6e1774c8c8d9b41509e183df2177f32427274df Mon Sep 17 00:00:00 2001 From: Mike Benowitz Date: Tue, 30 Apr 2019 10:46:03 -0400 Subject: [PATCH 054/120] Fix second/millisecond conversion issue in test case The test for the `get_remaining_time_in_millis` method was evaluating the output against a count in seconds, not milliseconds. This corrects the issue to allow the test suite to pass --- tests/unit/test_LambdaContext.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/unit/test_LambdaContext.py b/tests/unit/test_LambdaContext.py index 242174df..7a14e5ae 100644 --- a/tests/unit/test_LambdaContext.py +++ b/tests/unit/test_LambdaContext.py @@ -5,9 +5,9 @@ class TestLambdaContext(unittest.TestCase): def test_get_remaining_time_in_millis(self): - context = LambdaContext('function_name',2000) + context = LambdaContext('function_name', 2000) time.sleep(.5) - self.assertTrue(context.get_remaining_time_in_millis() < 2000) + self.assertTrue(context.get_remaining_time_in_millis() < 2000000) if __name__ == '__main__': From dcd19650f60c53e5d7803ad15f4458e55997d1f2 Mon Sep 17 00:00:00 2001 From: Mike Benowitz Date: Tue, 30 Apr 2019 11:09:21 -0400 Subject: [PATCH 055/120] Bump version of pytest for compatability with pytest-cov --- tests/dev_requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/dev_requirements.txt b/tests/dev_requirements.txt index aa719a73..25e724b3 100644 --- a/tests/dev_requirements.txt +++ b/tests/dev_requirements.txt @@ -1,5 +1,5 @@ bumpversion==0.5.3 pre-commit==0.15.0 -pytest +pytest>=3.6 pytest-cov flake8 From bb72087c0aad1f7b84e3fd5143ca3dd8e2a79170 Mon Sep 17 00:00:00 2001 From: Mike Benowitz Date: Tue, 30 Apr 2019 11:14:44 -0400 Subject: [PATCH 056/120] Remove python2.6 from travis AWS only supports python2.7+ (technically only 2.7 & 3.6). Additionally PyYAML does not support 2.6 which will cause failures in any case. --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 81a8e342..97cc480c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,5 @@ language: python python: - - "2.6" - "2.7" - "3.3" - "3.4" From 81044ad2492084af64b71be5a6c1172ca289974b Mon Sep 17 00:00:00 2001 From: Mike Benowitz Date: Tue, 30 Apr 2019 11:26:54 -0400 Subject: [PATCH 057/120] Remove test incompatible with 2.7 --- tests/unit/test_readHelper.py | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/tests/unit/test_readHelper.py b/tests/unit/test_readHelper.py index a8080e5d..3ad0c68f 100644 --- a/tests/unit/test_readHelper.py +++ b/tests/unit/test_readHelper.py @@ -1,9 +1,9 @@ import os import unittest import yaml -from yaml import YAMLLoadWarning from aws_lambda.helpers import read + class TestReadHelper(unittest.TestCase): TEST_FILE = 'readTmp.txt' @@ -11,22 +11,22 @@ class TestReadHelper(unittest.TestCase): def setUp(self): with open(TestReadHelper.TEST_FILE, 'w') as tmp_file: tmp_file.write('testYaml: testing') - + def tearDown(self): os.remove(TestReadHelper.TEST_FILE) - + def test_read_no_loader_non_binary(self): fileContents = read(TestReadHelper.TEST_FILE) self.assertEqual(fileContents, 'testYaml: testing') - + def test_read_yaml_loader_non_binary(self): testYaml = read(TestReadHelper.TEST_FILE, loader=yaml.full_load) self.assertEqual(testYaml['testYaml'], 'testing') - + def test_read_no_loader_binary_mode(self): fileContents = read(TestReadHelper.TEST_FILE, binary_file=True) self.assertEqual(fileContents, b'testYaml: testing') - + def test_read_yaml_loader_binary_mode(self): testYaml = read( TestReadHelper.TEST_FILE, @@ -34,8 +34,3 @@ def test_read_yaml_loader_binary_mode(self): binary_file=True ) self.assertEqual(testYaml['testYaml'], 'testing') - - def test_read_yaml_old_load_warns(self): - with self.assertWarns(YAMLLoadWarning): - testYaml = read(TestReadHelper.TEST_FILE, loader=yaml.load) - self.assertEqual(testYaml['testYaml'], 'testing') \ No newline at end of file From 4052fcc43c4c747bd8befa692bafa14c73bd4452 Mon Sep 17 00:00:00 2001 From: Loide Mara Verdes Date: Sun, 25 Aug 2019 16:15:25 -0400 Subject: [PATCH 058/120] Remove python3.3 from Travis AWS only supports python 3.6 and 3.7. Also, python 3.3 reached the end of its life on 29 September 2017. --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 97cc480c..7d9c1f85 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,6 @@ language: python python: - "2.7" - - "3.3" - "3.4" - "3.5" - "3.6" From 6b238a4bc89971696a87ff2aa282cdbdf956461d Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 09:25:17 -0400 Subject: [PATCH 059/120] Migrate to pipenv and direnv, added makefile for deploys --- .envrc | 1 + .pre-commit-config.yaml | 81 +++++-- Makefile | 64 +++-- Pipfile | 30 +++ Pipfile.lock | 524 ++++++++++++++++++++++++++++++++++++++++ requirements.txt | 9 - setup.cfg | 8 +- 7 files changed, 659 insertions(+), 58 deletions(-) create mode 100644 .envrc create mode 100644 Pipfile create mode 100644 Pipfile.lock delete mode 100644 requirements.txt diff --git a/.envrc b/.envrc new file mode 100644 index 00000000..beaf71f1 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +layout pipenv diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e92c7125..24371832 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,27 +1,62 @@ -- repo: https://github.com/pre-commit/pre-commit-hooks - sha: v0.9.5 +repos: + - repo: 'https://github.com/pre-commit/pre-commit-hooks' + rev: v2.4.0 hooks: - - id: autopep8-wrapper - - id: check-ast - - id: check-case-conflict - - id: check-merge-conflict - - id: double-quote-string-fixer - - id: end-of-file-fixer - - id: flake8 - - id: requirements-txt-fixer - - id: trailing-whitespace - - id: fix-encoding-pragma - - id: debug-statements -- repo: https://github.com/asottile/reorder_python_imports - sha: v0.3.5 + - id: pretty-format-json + name: 'Pretty format JSON' + args: + - '--no-sort-keys' + - '--autofix' + - '--indent=2' + - id: trailing-whitespace + name: 'Fix trailing whitespace' + exclude: setup.cfg + - id: end-of-file-fixer + name: 'Fix missing EOF' + exclude: setup.cfg + - id: check-executables-have-shebangs + name: 'Check exeutables for shebangs' + - id: check-merge-conflict + name: 'Check for merge conflict fragments' + - id: check-case-conflict + name: 'Check for filesystem character case conflicts' + - id: detect-private-key + name: 'Check for cleartext private keys stored' + - id: flake8 + additional_dependencies: + - flake8-docstrings + - flake8-mutable + - flake8-type-annotations + - flake8-eradicate + - flake8-bugbear + name: 'Check for Python style guideline violations' + - id: check-json + name: 'Validate JSON' + - id: check-ast + name: 'Check Python abstract syntax tree' + - repo: 'https://github.com/asottile/reorder_python_imports' + rev: v1.8.0 hooks: - - id: reorder-python-imports - language_version: python3.6 -- repo: https://github.com/Lucas-C/pre-commit-hooks-safety - sha: v1.1.0 + - id: reorder-python-imports + name: 'Reorder Python imports' + - repo: 'https://github.com/pre-commit/mirrors-autopep8' + rev: v1.4.4 hooks: - - id: python-safety-dependencies-check -- repo: https://github.com/asottile/add-trailing-comma - sha: v0.6.4 + - id: autopep8 + name: 'Pretty format Python' + args: + - '--in-place' + - '--aggressive' + - '--aggressive' + - '--experimental' + - '--remove-all-unused-imports' + - '--ignore-init-module-imports' + - '--remove-unused-variable' + - repo: https://github.com/psf/black + rev: stable hooks: - - id: add-trailing-comma + - id: black + name: 'Ruthlessly format Python' + language_version: python3.7 + args: + - '--line-length=79' diff --git a/Makefile b/Makefile index cedb78da..d94ffdd1 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,43 @@ -help: - @echo "clean - remove all build, test, coverage and Python artifacts" - @echo "lint - check style with flake8" - @echo "release - package and upload a release" - @echo "install - install the package to the active Python's site-packages" +dev: + pipenv install --dev -clean: clean-build clean-pyc clean-merge +deploy-patch: requirements bumpversion-patch sdist bdist wheels upload clean + +deploy-minor: requirements bumpversion-minor sdist bdist wheels upload clean + +deploy-major: requirements bumpversion-major sdist bdist wheels upload clean + +requirements: + pipenv_to_requirements + +sdist: requirements + python setup.py sdist + +bdist: requirements + python setup.py bdist + +wheels: requirements + python setup.py bdist_wheel + +clean: clean-build clean-pyc + +bumpversion-patch: + bumpversion patch + git push + git push --tags + +bumpversion-minor: + bumpversion minor + git push + git push --tags + +bumpversion-major: + bumpversion major + git push + git push --tags + +upload: + python setup.py sdist bdist bdist_wheel upload clean-build: rm -fr build/ @@ -12,26 +45,11 @@ clean-build: rm -fr .eggs/ find . -name '*.egg-info' -exec rm -fr {} + find . -name '*.egg' -exec rm -f {} + + find . -name '*.DS_Store' -exec rm -f {} + clean-pyc: find . -name '*.pyc' -exec rm -f {} + find . -name '*.pyo' -exec rm -f {} + find . -name '*~' -exec rm -f {} + find . -name '__pycache__' -exec rm -fr {} + - -clean-merge: - find . -name '*.orig' -exec rm -f {} + - -lint: - flake8 python-lambda tests - -release: clean - python setup.py sdist upload - python setup.py bdist_wheel upload - -install: clean - python setup.py install - -test: - py.test tests/ --cov aws_lambda --cov-report term-missing - + find . -name '.pytest_cache' -exec rm -fr {} + diff --git a/Pipfile b/Pipfile new file mode 100644 index 00000000..3fe6cff9 --- /dev/null +++ b/Pipfile @@ -0,0 +1,30 @@ +[[source]] +name = "pypi" +url = "https://pypi.org/simple" +verify_ssl = true + +[dev-packages] +twine = "*" +ipython = "*" +flake8 = "*" +black = "*" +bumpversion = "*" +pipenv-to-requirements = "*" +wheel = "*" + +[packages] +boto3 = "==1.4.4" +botocore = "==1.5.62" +click = "==6.6" +docutils = "==0.12" +jmespath = "==0.9.0" +pyaml = "==15.8.2" +python-dateutil = "==2.5.3" +six = "==1.10.0" +PyYAML = "==5.1" + +[requires] +python_version = "3.8" + +[pipenv] +allow_prereleases = true diff --git a/Pipfile.lock b/Pipfile.lock new file mode 100644 index 00000000..b171435b --- /dev/null +++ b/Pipfile.lock @@ -0,0 +1,524 @@ +{ + "_meta": { + "hash": { + "sha256": "a1116920416fcf686825ee0749b8eadd5a0017d8539f27edb5957ee5bcc90327" + }, + "pipfile-spec": 6, + "requires": { + "python_version": "3.8" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "boto3": { + "hashes": [ + "sha256:5050c29353fec97301116386f469fa5858ccf47201623b53cf9f74e603bda52f", + "sha256:518f724c4758e5a5bed114fbcbd1cf470a15306d416ff421a025b76f1d390939" + ], + "index": "pypi", + "version": "==1.4.4" + }, + "botocore": { + "hashes": [ + "sha256:79c9347b1333f94372c0c2fea950326b41c83ff16e67298db0a016708fe45be6", + "sha256:9878598a9db8be63788dc1030616d1e5b64e4a9c2d85dba34b4a5c3b6b049fa6" + ], + "index": "pypi", + "version": "==1.5.62" + }, + "click": { + "hashes": [ + "sha256:cc6a19da8ebff6e7074f731447ef7e112bd23adf3de5c597cf9989f2fd8defe9", + "sha256:fcf697e1fd4b567d817c69dab10a4035937fe6af175c05fd6806b69f74cbc6c4" + ], + "index": "pypi", + "version": "==6.6" + }, + "docutils": { + "hashes": [ + "sha256:c7db717810ab6965f66c8cf0398a98c9d8df982da39b4cd7f162911eb89596fa", + "sha256:dcebd4928112631626f4c4d0df59787c748404e66dda952110030ea883d3b8cd" + ], + "index": "pypi", + "version": "==0.12" + }, + "jmespath": { + "hashes": [ + "sha256:08dfaa06d4397f283a01e57089f3360e3b52b5b9da91a70e1fd91e9f0cdd3d3d", + "sha256:ade5261b0d7d34b6f53accc91e6881b579b40161ed575e6ac465de5edad32815" + ], + "index": "pypi", + "version": "==0.9.0" + }, + "pyaml": { + "hashes": [ + "sha256:9c54fb5f17b58572c4cef50affea60bb73f445ab153580dac07a12383712b5b8" + ], + "index": "pypi", + "version": "==15.8.2" + }, + "python-dateutil": { + "hashes": [ + "sha256:1408fdb07c6a1fa9997567ce3fcee6a337b39a503d80699e0f213de4aa4b32ed", + "sha256:598499a75be2e5e18a66f12c00dd47a069de24794effeda4228bfc760f44f527", + "sha256:9d94861f04ce14f9a3d835206067c889b8f1244f1415035dadcf9c10066adf04" + ], + "index": "pypi", + "version": "==2.5.3" + }, + "pyyaml": { + "hashes": [ + "sha256:1adecc22f88d38052fb787d959f003811ca858b799590a5eaa70e63dca50308c", + "sha256:436bc774ecf7c103814098159fbb84c2715d25980175292c648f2da143909f95", + "sha256:460a5a4248763f6f37ea225d19d5c205677d8d525f6a83357ca622ed541830c2", + "sha256:5a22a9c84653debfbf198d02fe592c176ea548cccce47553f35f466e15cf2fd4", + "sha256:7a5d3f26b89d688db27822343dfa25c599627bc92093e788956372285c6298ad", + "sha256:9372b04a02080752d9e6f990179a4ab840227c6e2ce15b95e1278456664cf2ba", + "sha256:a5dcbebee834eaddf3fa7366316b880ff4062e4bcc9787b78c7fbb4a26ff2dd1", + "sha256:aee5bab92a176e7cd034e57f46e9df9a9862a71f8f37cad167c6fc74c65f5b4e", + "sha256:c51f642898c0bacd335fc119da60baae0824f2cde95b0330b56c0553439f0673", + "sha256:c68ea4d3ba1705da1e0d85da6684ac657912679a649e8868bd850d2c299cce13", + "sha256:e23d0cc5299223dcc37885dae624f382297717e459ea24053709675a976a3e19" + ], + "index": "pypi", + "version": "==5.1" + }, + "s3transfer": { + "hashes": [ + "sha256:90dc18e028989c609146e241ea153250be451e05ecc0c2832565231dacdf59c1", + "sha256:c7a9ec356982d5e9ab2d4b46391a7d6a950e2b04c472419f5fdec70cc0ada72f" + ], + "version": "==0.1.13" + }, + "six": { + "hashes": [ + "sha256:0ff78c403d9bccf5a425a6d31a12aa6b47f1c21ca4dc2573a7e2f32a97335eb1", + "sha256:105f8d68616f8248e24bf0e9372ef04d3cc10104f1980f54d57b2ce73a5ad56a" + ], + "index": "pypi", + "version": "==1.10.0" + } + }, + "develop": { + "appdirs": { + "hashes": [ + "sha256:9e5896d1372858f8dd3344faf4e5014d21849c756c8d5701f78f8a103b372d92", + "sha256:d8b24664561d0d34ddfaec54636d502d7cea6e29c3eaf68f3df6180863e2166e" + ], + "version": "==1.4.3" + }, + "appnope": { + "hashes": [ + "sha256:5b26757dc6f79a3b7dc9fab95359328d5747fcb2409d331ea66d0272b90ab2a0", + "sha256:8b995ffe925347a2138d7ac0fe77155e4311a0ea6d6da4f5128fe4b3cbe5ed71" + ], + "markers": "sys_platform == 'darwin'", + "version": "==0.1.0" + }, + "attrs": { + "hashes": [ + "sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c", + "sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72" + ], + "version": "==19.3.0" + }, + "backcall": { + "hashes": [ + "sha256:38ecd85be2c1e78f77fd91700c76e14667dc21e2713b63876c0eb901196e01e4", + "sha256:bbbf4b1e5cd2bdb08f915895b51081c041bac22394fdfcfdfbe9f14b77c08bf2" + ], + "version": "==0.1.0" + }, + "black": { + "hashes": [ + "sha256:1b30e59be925fafc1ee4565e5e08abef6b03fe455102883820fe5ee2e4734e0b", + "sha256:c2edb73a08e9e0e6f65a0e6af18b059b8b1cdd5bef997d7a0b181df93dc81539" + ], + "index": "pypi", + "version": "==19.10b0" + }, + "bleach": { + "hashes": [ + "sha256:cc8da25076a1fe56c3ac63671e2194458e0c4d9c7becfd52ca251650d517903c", + "sha256:e78e426105ac07026ba098f04de8abe9b6e3e98b5befbf89b51a5ef0a4292b03" + ], + "version": "==3.1.4" + }, + "bumpversion": { + "hashes": [ + "sha256:6744c873dd7aafc24453d8b6a1a0d6d109faf63cd0cd19cb78fd46e74932c77e", + "sha256:6753d9ff3552013e2130f7bc03c1007e24473b4835952679653fb132367bdd57" + ], + "index": "pypi", + "version": "==0.5.3" + }, + "certifi": { + "hashes": [ + "sha256:017c25db2a153ce562900032d5bc68e9f191e44e9a0f762f373977de9df1fbb3", + "sha256:25b64c7da4cd7479594d035c08c2d809eb4aab3a26e5a990ea98cc450c320f1f" + ], + "version": "==2019.11.28" + }, + "chardet": { + "hashes": [ + "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae", + "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691" + ], + "version": "==3.0.4" + }, + "click": { + "hashes": [ + "sha256:cc6a19da8ebff6e7074f731447ef7e112bd23adf3de5c597cf9989f2fd8defe9", + "sha256:fcf697e1fd4b567d817c69dab10a4035937fe6af175c05fd6806b69f74cbc6c4" + ], + "index": "pypi", + "version": "==6.6" + }, + "decorator": { + "hashes": [ + "sha256:41fa54c2a0cc4ba648be4fd43cff00aedf5b9465c9bf18d64325bc225f08f760", + "sha256:e3a62f0520172440ca0dcc823749319382e377f37f140a0b99ef45fecb84bfe7" + ], + "version": "==4.4.2" + }, + "distlib": { + "hashes": [ + "sha256:2e166e231a26b36d6dfe35a48c4464346620f8645ed0ace01ee31822b288de21" + ], + "version": "==0.3.0" + }, + "docutils": { + "hashes": [ + "sha256:c7db717810ab6965f66c8cf0398a98c9d8df982da39b4cd7f162911eb89596fa", + "sha256:dcebd4928112631626f4c4d0df59787c748404e66dda952110030ea883d3b8cd" + ], + "index": "pypi", + "version": "==0.12" + }, + "entrypoints": { + "hashes": [ + "sha256:589f874b313739ad35be6e0cd7efde2a4e9b6fea91edcc34e58ecbb8dbe56d19", + "sha256:c70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451" + ], + "version": "==0.3" + }, + "filelock": { + "hashes": [ + "sha256:18d82244ee114f543149c66a6e0c14e9c4f8a1044b5cdaadd0f82159d6a6ff59", + "sha256:929b7d63ec5b7d6b71b0fa5ac14e030b3f70b75747cef1b10da9b879fef15836" + ], + "version": "==3.0.12" + }, + "flake8": { + "hashes": [ + "sha256:45681a117ecc81e870cbf1262835ae4af5e7a8b08e40b944a8a6e6b895914cfb", + "sha256:49356e766643ad15072a789a20915d3c91dc89fd313ccd71802303fd67e4deca" + ], + "index": "pypi", + "version": "==3.7.9" + }, + "idna": { + "hashes": [ + "sha256:7588d1c14ae4c77d74036e8c22ff447b26d0fde8f007354fd48a7814db15b7cb", + "sha256:a068a21ceac8a4d63dbfd964670474107f541babbd2250d61922f029858365fa" + ], + "version": "==2.9" + }, + "ipython": { + "hashes": [ + "sha256:ca478e52ae1f88da0102360e57e528b92f3ae4316aabac80a2cd7f7ab2efb48a", + "sha256:eb8d075de37f678424527b5ef6ea23f7b80240ca031c2dd6de5879d687a65333" + ], + "index": "pypi", + "version": "==7.13.0" + }, + "ipython-genutils": { + "hashes": [ + "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8", + "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8" + ], + "version": "==0.2.0" + }, + "jedi": { + "hashes": [ + "sha256:b4f4052551025c6b0b0b193b29a6ff7bdb74c52450631206c262aef9f7159ad2", + "sha256:d5c871cb9360b414f981e7072c52c33258d598305280fef91c6cae34739d65d5" + ], + "version": "==0.16.0" + }, + "keyring": { + "hashes": [ + "sha256:197fd5903901030ef7b82fe247f43cfed2c157a28e7747d1cfcf4bc5e699dd03", + "sha256:8179b1cdcdcbc221456b5b74e6b7cfa06f8dd9f239eb81892166d9223d82c5ba" + ], + "version": "==21.2.0" + }, + "mccabe": { + "hashes": [ + "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", + "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f" + ], + "version": "==0.6.1" + }, + "parso": { + "hashes": [ + "sha256:0c5659e0c6eba20636f99a04f469798dca8da279645ce5c387315b2c23912157", + "sha256:8515fc12cfca6ee3aa59138741fc5624d62340c97e401c74875769948d4f2995" + ], + "version": "==0.6.2" + }, + "pathspec": { + "hashes": [ + "sha256:163b0632d4e31cef212976cf57b43d9fd6b0bac6e67c26015d611a647d5e7424", + "sha256:562aa70af2e0d434367d9790ad37aed893de47f1693e4201fd1d3dca15d19b96" + ], + "version": "==0.7.0" + }, + "pbr": { + "hashes": [ + "sha256:139d2625547dbfa5fb0b81daebb39601c478c21956dc57e2e07b74450a8c506b", + "sha256:61aa52a0f18b71c5cc58232d2cf8f8d09cd67fcad60b742a60124cb8d6951488" + ], + "version": "==5.4.4" + }, + "pexpect": { + "hashes": [ + "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937", + "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c" + ], + "markers": "sys_platform != 'win32'", + "version": "==4.8.0" + }, + "pickleshare": { + "hashes": [ + "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca", + "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56" + ], + "version": "==0.7.5" + }, + "pipenv": { + "hashes": [ + "sha256:56ad5f5cb48f1e58878e14525a6e3129d4306049cb76d2f6a3e95df0d5fc6330", + "sha256:7df8e33a2387de6f537836f48ac6fcd94eda6ed9ba3d5e3fd52e35b5bc7ff49e", + "sha256:a673e606e8452185e9817a987572b55360f4d28b50831ef3b42ac3cab3fee846" + ], + "version": "==2018.11.26" + }, + "pipenv-to-requirements": { + "hashes": [ + "sha256:1c18682a4ec70eb07261d2b558df3ee22ea00192663a1b98fd1e45e22946c163", + "sha256:cb70471a17a7d4658caffe989539413313d51df1b3a54838bcd7e7d3ab3fcc18" + ], + "index": "pypi", + "version": "==0.9.0" + }, + "pkginfo": { + "hashes": [ + "sha256:7424f2c8511c186cd5424bbf31045b77435b37a8d604990b79d4e70d741148bb", + "sha256:a6d9e40ca61ad3ebd0b72fbadd4fba16e4c0e4df0428c041e01e06eb6ee71f32" + ], + "version": "==1.5.0.1" + }, + "precommit": { + "hashes": [ + "sha256:b0a4d47045db0fd23a2999113a93a7de510f567ea8d989360209248cdf0856d1" + ], + "index": "pypi", + "version": "==0.1.1" + }, + "prompt-toolkit": { + "hashes": [ + "sha256:563d1a4140b63ff9dd587bda9557cffb2fe73650205ab6f4383092fb882e7dc8", + "sha256:df7e9e63aea609b1da3a65641ceaf5bc7d05e0a04de5bd45d05dbeffbabf9e04" + ], + "version": "==3.0.5" + }, + "ptyprocess": { + "hashes": [ + "sha256:923f299cc5ad920c68f2bc0bc98b75b9f838b93b599941a6b63ddbc2476394c0", + "sha256:d7cc528d76e76342423ca640335bd3633420dc1366f258cb31d05e865ef5ca1f" + ], + "version": "==0.6.0" + }, + "pycodestyle": { + "hashes": [ + "sha256:95a2219d12372f05704562a14ec30bc76b05a5b297b21a5dfe3f6fac3491ae56", + "sha256:e40a936c9a450ad81df37f549d676d127b1b66000a6c500caa2b085bc0ca976c" + ], + "version": "==2.5.0" + }, + "pyflakes": { + "hashes": [ + "sha256:17dbeb2e3f4d772725c777fabc446d5634d1038f234e77343108ce445ea69ce0", + "sha256:d976835886f8c5b31d47970ed689944a0262b5f3afa00a5a7b4dc81e5449f8a2" + ], + "version": "==2.1.1" + }, + "pygments": { + "hashes": [ + "sha256:647344a061c249a3b74e230c739f434d7ea4d8b1d5f3721bc0f3558049b38f44", + "sha256:ff7a40b4860b727ab48fad6360eb351cc1b33cbf9b15a0f689ca5353e9463324" + ], + "version": "==2.6.1" + }, + "readme-renderer": { + "hashes": [ + "sha256:1b6d8dd1673a0b293766b4106af766b6eff3654605f9c4f239e65de6076bc222", + "sha256:e67d64242f0174a63c3b727801a2fff4c1f38ebe5d71d95ff7ece081945a6cd4" + ], + "version": "==25.0" + }, + "regex": { + "hashes": [ + "sha256:01b2d70cbaed11f72e57c1cfbaca71b02e3b98f739ce33f5f26f71859ad90431", + "sha256:046e83a8b160aff37e7034139a336b660b01dbfe58706f9d73f5cdc6b3460242", + "sha256:113309e819634f499d0006f6200700c8209a2a8bf6bd1bdc863a4d9d6776a5d1", + "sha256:200539b5124bc4721247a823a47d116a7a23e62cc6695744e3eb5454a8888e6d", + "sha256:25f4ce26b68425b80a233ce7b6218743c71cf7297dbe02feab1d711a2bf90045", + "sha256:269f0c5ff23639316b29f31df199f401e4cb87529eafff0c76828071635d417b", + "sha256:5de40649d4f88a15c9489ed37f88f053c15400257eeb18425ac7ed0a4e119400", + "sha256:7f78f963e62a61e294adb6ff5db901b629ef78cb2a1cfce3cf4eeba80c1c67aa", + "sha256:82469a0c1330a4beb3d42568f82dffa32226ced006e0b063719468dcd40ffdf0", + "sha256:8c2b7fa4d72781577ac45ab658da44c7518e6d96e2a50d04ecb0fd8f28b21d69", + "sha256:974535648f31c2b712a6b2595969f8ab370834080e00ab24e5dbb9d19b8bfb74", + "sha256:99272d6b6a68c7ae4391908fc15f6b8c9a6c345a46b632d7fdb7ef6c883a2bbb", + "sha256:9b64a4cc825ec4df262050c17e18f60252cdd94742b4ba1286bcfe481f1c0f26", + "sha256:9e9624440d754733eddbcd4614378c18713d2d9d0dc647cf9c72f64e39671be5", + "sha256:9ff16d994309b26a1cdf666a6309c1ef51ad4f72f99d3392bcd7b7139577a1f2", + "sha256:b33ebcd0222c1d77e61dbcd04a9fd139359bded86803063d3d2d197b796c63ce", + "sha256:bba52d72e16a554d1894a0cc74041da50eea99a8483e591a9edf1025a66843ab", + "sha256:bed7986547ce54d230fd8721aba6fd19459cdc6d315497b98686d0416efaff4e", + "sha256:c7f58a0e0e13fb44623b65b01052dae8e820ed9b8b654bb6296bc9c41f571b70", + "sha256:d58a4fa7910102500722defbde6e2816b0372a4fcc85c7e239323767c74f5cbc", + "sha256:f1ac2dc65105a53c1c2d72b1d3e98c2464a133b4067a51a3d2477b28449709a0" + ], + "version": "==2020.2.20" + }, + "requests": { + "hashes": [ + "sha256:43999036bfa82904b6af1d99e4882b560e5e2c68e5c4b0aa03b655f3d7d73fee", + "sha256:b3f43d496c6daba4493e7c431722aeb7dbc6288f52a6e04e7b6023b0247817e6" + ], + "version": "==2.23.0" + }, + "requests-toolbelt": { + "hashes": [ + "sha256:380606e1d10dc85c3bd47bf5a6095f815ec007be7a8b69c878507068df059e6f", + "sha256:968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0" + ], + "version": "==0.9.1" + }, + "six": { + "hashes": [ + "sha256:0ff78c403d9bccf5a425a6d31a12aa6b47f1c21ca4dc2573a7e2f32a97335eb1", + "sha256:105f8d68616f8248e24bf0e9372ef04d3cc10104f1980f54d57b2ce73a5ad56a" + ], + "index": "pypi", + "version": "==1.10.0" + }, + "toml": { + "hashes": [ + "sha256:229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c", + "sha256:235682dd292d5899d361a811df37e04a8828a5b1da3115886b73cf81ebc9100e" + ], + "version": "==0.10.0" + }, + "tqdm": { + "hashes": [ + "sha256:4f882b23c492e7060f50d83af86f163b67e4cfbe35dfe12077e748c56282f438", + "sha256:f0fc945df434e5e612fb7eb93bf29e924940913590450c3760f198dd75a2cd19" + ], + "version": "==4.44.0" + }, + "traitlets": { + "hashes": [ + "sha256:70b4c6a1d9019d7b4f6846832288f86998aa3b9207c6821f3578a6a6a467fe44", + "sha256:d023ee369ddd2763310e4c3eae1ff649689440d4ae59d7485eb4cfbbe3e359f7" + ], + "version": "==4.3.3" + }, + "twine": { + "hashes": [ + "sha256:c1af8ca391e43b0a06bbc155f7f67db0bf0d19d284bfc88d1675da497a946124", + "sha256:d561a5e511f70275e5a485a6275ff61851c16ffcb3a95a602189161112d9f160" + ], + "index": "pypi", + "version": "==3.1.1" + }, + "typed-ast": { + "hashes": [ + "sha256:0666aa36131496aed8f7be0410ff974562ab7eeac11ef351def9ea6fa28f6355", + "sha256:0c2c07682d61a629b68433afb159376e24e5b2fd4641d35424e462169c0a7919", + "sha256:249862707802d40f7f29f6e1aad8d84b5aa9e44552d2cc17384b209f091276aa", + "sha256:24995c843eb0ad11a4527b026b4dde3da70e1f2d8806c99b7b4a7cf491612652", + "sha256:269151951236b0f9a6f04015a9004084a5ab0d5f19b57de779f908621e7d8b75", + "sha256:4083861b0aa07990b619bd7ddc365eb7fa4b817e99cf5f8d9cf21a42780f6e01", + "sha256:498b0f36cc7054c1fead3d7fc59d2150f4d5c6c56ba7fb150c013fbc683a8d2d", + "sha256:4e3e5da80ccbebfff202a67bf900d081906c358ccc3d5e3c8aea42fdfdfd51c1", + "sha256:6daac9731f172c2a22ade6ed0c00197ee7cc1221aa84cfdf9c31defeb059a907", + "sha256:715ff2f2df46121071622063fc7543d9b1fd19ebfc4f5c8895af64a77a8c852c", + "sha256:73d785a950fc82dd2a25897d525d003f6378d1cb23ab305578394694202a58c3", + "sha256:8c8aaad94455178e3187ab22c8b01a3837f8ee50e09cf31f1ba129eb293ec30b", + "sha256:8ce678dbaf790dbdb3eba24056d5364fb45944f33553dd5869b7580cdbb83614", + "sha256:aaee9905aee35ba5905cfb3c62f3e83b3bec7b39413f0a7f19be4e547ea01ebb", + "sha256:bcd3b13b56ea479b3650b82cabd6b5343a625b0ced5429e4ccad28a8973f301b", + "sha256:c9e348e02e4d2b4a8b2eedb48210430658df6951fa484e59de33ff773fbd4b41", + "sha256:d205b1b46085271b4e15f670058ce182bd1199e56b317bf2ec004b6a44f911f6", + "sha256:d43943ef777f9a1c42bf4e552ba23ac77a6351de620aa9acf64ad54933ad4d34", + "sha256:d5d33e9e7af3b34a40dc05f498939f0ebf187f07c385fd58d591c533ad8562fe", + "sha256:fc0fea399acb12edbf8a628ba8d2312f583bdbdb3335635db062fa98cf71fca4", + "sha256:fe460b922ec15dd205595c9b5b99e2f056fd98ae8f9f56b888e7a17dc2b757e7" + ], + "version": "==1.4.1" + }, + "urllib3": { + "hashes": [ + "sha256:2f3db8b19923a873b3e5256dc9c2dedfa883e33d87c690d9c7913e1f40673cdc", + "sha256:87716c2d2a7121198ebcb7ce7cccf6ce5e9ba539041cfbaeecfb641dc0bf6acc" + ], + "version": "==1.25.8" + }, + "virtualenv": { + "hashes": [ + "sha256:4e399f48c6b71228bf79f5febd27e3bbb753d9d5905776a86667bc61ab628a25", + "sha256:9e81279f4a9d16d1c0654a127c2c86e5bca2073585341691882c1e66e31ef8a5" + ], + "version": "==20.0.15" + }, + "virtualenv-clone": { + "hashes": [ + "sha256:07e74418b7cc64f4fda987bf5bc71ebd59af27a7bc9e8a8ee9fd54b1f2390a27", + "sha256:665e48dd54c84b98b71a657acb49104c54e7652bce9c1c4f6c6976ed4c827a29" + ], + "version": "==0.5.4" + }, + "wcwidth": { + "hashes": [ + "sha256:cafe2186b3c009a04067022ce1dcd79cb38d8d65ee4f4791b8888d6599d1bbe1", + "sha256:ee73862862a156bf77ff92b09034fc4825dd3af9cf81bc5b360668d425f3c5f1" + ], + "version": "==0.1.9" + }, + "webencodings": { + "hashes": [ + "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", + "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923" + ], + "version": "==0.5.1" + }, + "wheel": { + "hashes": [ + "sha256:8788e9155fe14f54164c1b9eb0a319d98ef02c160725587ad60f14ddc57b6f96", + "sha256:df277cb51e61359aba502208d680f90c0493adec6f0e848af94948778aed386e" + ], + "index": "pypi", + "version": "==0.34.2" + } + } +} diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 7b5f8381..00000000 --- a/requirements.txt +++ /dev/null @@ -1,9 +0,0 @@ -boto3==1.4.4 -botocore==1.5.62 -click==6.6 -docutils==0.12 -jmespath==0.9.0 -pyaml==15.8.2 -python-dateutil==2.5.3 -PyYAML==5.1 -six==1.10.0 diff --git a/setup.cfg b/setup.cfg index 9fcb34b7..d1608cff 100644 --- a/setup.cfg +++ b/setup.cfg @@ -6,13 +6,15 @@ parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} +[metadata] +description-file = README.md + [bumpversion:file:setup.py] [bumpversion:file:aws_lambda/__init__.py] -[bdist_wheel] -universal = 1 +[coverage:run] +source = aws_lambda [flake8] exclude = docs - From 5adf4406b70e4cad8192f24533ef877e2c6d83fa Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 09:37:14 -0400 Subject: [PATCH 060/120] linting --- .gitignore | 2 +- .pre-commit-config.yaml | 2 +- README.md | 4 +- artwork/python-lambda.svg | 2 +- aws_lambda/__init__.py | 20 +- aws_lambda/aws_lambda.py | 537 +++++++++++++----------- aws_lambda/helpers.py | 26 +- aws_lambda/project_templates/service.py | 4 +- scripts/lambda | 118 +++--- setup.py | 60 +-- tests/__init__.py | 0 tests/unit/test_LambdaContext.py | 17 +- tests/unit/test_readHelper.py | 20 +- 13 files changed, 436 insertions(+), 376 deletions(-) mode change 100755 => 100644 aws_lambda/__init__.py mode change 100755 => 100644 aws_lambda/aws_lambda.py mode change 100755 => 100644 tests/__init__.py diff --git a/.gitignore b/.gitignore index 549d6f2f..246e9cdb 100644 --- a/.gitignore +++ b/.gitignore @@ -65,4 +65,4 @@ target/ .*.sw? aws_lambda/.DS_Store .DS_Store -.vscode/ \ No newline at end of file +.vscode/ diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 24371832..ce8cfc67 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,6 @@ repos: name: 'Check for cleartext private keys stored' - id: flake8 additional_dependencies: - - flake8-docstrings - flake8-mutable - flake8-type-annotations - flake8-eradicate @@ -52,6 +51,7 @@ repos: - '--remove-all-unused-imports' - '--ignore-init-module-imports' - '--remove-unused-variable' + - '--ignore E231' - repo: https://github.com/psf/black rev: stable hooks: diff --git a/README.md b/README.md index 65c34cb4..53772595 100644 --- a/README.md +++ b/README.md @@ -191,7 +191,7 @@ This would create environment variables in the lambda instance upon deploy. If your functions don't need environment variables, simply leave this section out of your config. -### Uploading to S3 +### Uploading to S3 You may find that you do not need the toolkit to fully deploy your Lambda or that your code bundle is too large to upload via the API. You can use the ``upload`` command to send the bundle to an S3 bucket of your @@ -219,7 +219,7 @@ requests are very welcome and highly encouraged. Please open an issue if this tool does not function as you'd expect. -### How to release updates +### How to release updates If this is the first time you're releasing to pypi, you'll need to run: ``pip install -r tests/dev_requirements.txt``. diff --git a/artwork/python-lambda.svg b/artwork/python-lambda.svg index 7751d71c..0136f802 100644 --- a/artwork/python-lambda.svg +++ b/artwork/python-lambda.svg @@ -24,4 +24,4 @@ - \ No newline at end of file + diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py old mode 100755 new mode 100644 index b6446d5b..2f4776aa --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -1,18 +1,28 @@ -# -*- coding: utf-8 -*- # flake8: noqa -__author__ = 'Nick Ficano' -__email__ = 'nficano@gmail.com' -__version__ = '3.2.7' +__author__ = "Nick Ficano" +__email__ = "nficano@gmail.com" +__version__ = "3.2.7" -from .aws_lambda import deploy, deploy_s3, invoke, init, build, upload, cleanup_old_versions +from .aws_lambda import ( + deploy, + deploy_s3, + invoke, + init, + build, + upload, + cleanup_old_versions, +) # Set default logging handler to avoid "No handler found" warnings. import logging + try: # Python 2.7+ from logging import NullHandler except ImportError: + class NullHandler(logging.Handler): def emit(self, record): pass + logging.getLogger(__name__).addHandler(NullHandler()) diff --git a/aws_lambda/aws_lambda.py b/aws_lambda/aws_lambda.py old mode 100755 new mode 100644 index cc692099..3f2553ea --- a/aws_lambda/aws_lambda.py +++ b/aws_lambda/aws_lambda.py @@ -1,10 +1,8 @@ -# -*- coding: utf-8 -*- -from __future__ import print_function - import hashlib import json import logging import os +import subprocess import sys import time from collections import defaultdict @@ -18,28 +16,26 @@ import boto3 import botocore import yaml -import subprocess from .helpers import archive from .helpers import get_environment_variable_value +from .helpers import LambdaContext from .helpers import mkdir from .helpers import read from .helpers import timestamp -from .helpers import LambdaContext ARN_PREFIXES = { - 'cn-north-1': 'aws-cn', - 'cn-northwest-1': 'aws-cn', - 'us-gov-west-1': 'aws-us-gov', + "cn-north-1": "aws-cn", + "cn-northwest-1": "aws-cn", + "us-gov-west-1": "aws-us-gov", } log = logging.getLogger(__name__) def cleanup_old_versions( - src, keep_last_versions, - config_file='config.yaml', profile_name=None, + src, keep_last_versions, config_file="config.yaml", profile_name=None, ): """Deletes old deployed versions of the function in AWS Lambda. @@ -57,39 +53,45 @@ def cleanup_old_versions( path_to_config_file = os.path.join(src, config_file) cfg = read_cfg(path_to_config_file, profile_name) - profile_name = cfg.get('profile') - aws_access_key_id = cfg.get('aws_access_key_id') - aws_secret_access_key = cfg.get('aws_secret_access_key') + profile_name = cfg.get("profile") + aws_access_key_id = cfg.get("aws_access_key_id") + aws_secret_access_key = cfg.get("aws_secret_access_key") client = get_client( - 'lambda', profile_name, aws_access_key_id, aws_secret_access_key, - cfg.get('region'), + "lambda", + profile_name, + aws_access_key_id, + aws_secret_access_key, + cfg.get("region"), ) response = client.list_versions_by_function( - FunctionName=cfg.get('function_name'), + FunctionName=cfg.get("function_name"), ) - versions = response.get('Versions') - if len(response.get('Versions')) < keep_last_versions: - print('Nothing to delete. (Too few versions published)') + versions = response.get("Versions") + if len(response.get("Versions")) < keep_last_versions: + print("Nothing to delete. (Too few versions published)") else: - version_numbers = [elem.get('Version') for elem in - versions[1:-keep_last_versions]] + version_numbers = [ + elem.get("Version") for elem in versions[1:-keep_last_versions] + ] for version_number in version_numbers: try: client.delete_function( - FunctionName=cfg.get('function_name'), + FunctionName=cfg.get("function_name"), Qualifier=version_number, ) except botocore.exceptions.ClientError as e: - print('Skipping Version {}: {}' - .format(version_number, e.message)) + print(f"Skipping Version {version_number}: {e}") def deploy( - src, requirements=None, local_package=None, - config_file='config.yaml', profile_name=None, - preserve_vpc=False + src, + requirements=None, + local_package=None, + config_file="config.yaml", + profile_name=None, + preserve_vpc=False, ): """Deploys a new function to AWS Lambda. @@ -109,22 +111,28 @@ def deploy( # Zip the contents of this folder into a single file and output to the dist # directory. path_to_zip_file = build( - src, config_file=config_file, + src, + config_file=config_file, requirements=requirements, local_package=local_package, ) existing_config = get_function_config(cfg) if existing_config: - update_function(cfg, path_to_zip_file, existing_config, preserve_vpc=preserve_vpc) + update_function( + cfg, path_to_zip_file, existing_config, preserve_vpc=preserve_vpc + ) else: create_function(cfg, path_to_zip_file) def deploy_s3( - src, requirements=None, local_package=None, - config_file='config.yaml', profile_name=None, - preserve_vpc=False + src, + requirements=None, + local_package=None, + config_file="config.yaml", + profile_name=None, + preserve_vpc=False, ): """Deploys a new function via AWS S3. @@ -144,7 +152,9 @@ def deploy_s3( # Zip the contents of this folder into a single file and output to the dist # directory. path_to_zip_file = build( - src, config_file=config_file, requirements=requirements, + src, + config_file=config_file, + requirements=requirements, local_package=local_package, ) @@ -152,15 +162,24 @@ def deploy_s3( s3_file = upload_s3(cfg, path_to_zip_file, use_s3) existing_config = get_function_config(cfg) if existing_config: - update_function(cfg, path_to_zip_file, existing_config, use_s3=use_s3, - s3_file=s3_file, preserve_vpc=preserve_vpc) + update_function( + cfg, + path_to_zip_file, + existing_config, + use_s3=use_s3, + s3_file=s3_file, + preserve_vpc=preserve_vpc, + ) else: create_function(cfg, path_to_zip_file, use_s3=use_s3, s3_file=s3_file) def upload( - src, requirements=None, local_package=None, - config_file='config.yaml', profile_name=None, + src, + requirements=None, + local_package=None, + config_file="config.yaml", + profile_name=None, ): """Uploads a new function to AWS S3. @@ -180,7 +199,9 @@ def upload( # Zip the contents of this folder into a single file and output to the dist # directory. path_to_zip_file = build( - src, config_file=config_file, requirements=requirements, + src, + config_file=config_file, + requirements=requirements, local_package=local_package, ) @@ -188,8 +209,10 @@ def upload( def invoke( - src, event_file='event.json', - config_file='config.yaml', profile_name=None, + src, + event_file="event.json", + config_file="config.yaml", + profile_name=None, verbose=False, ): """Simulates a call to your function. @@ -208,11 +231,11 @@ def invoke( # Set AWS_PROFILE environment variable based on `--profile` option. if profile_name: - os.environ['AWS_PROFILE'] = profile_name + os.environ["AWS_PROFILE"] = profile_name # Load environment variables from the config file into the actual # environment. - env_vars = cfg.get('environment_variables') + env_vars = cfg.get("environment_variables") if env_vars: for key, value in env_vars.items(): os.environ[key] = get_environment_variable_value(value) @@ -227,25 +250,27 @@ def invoke( except ValueError: sys.path.append(src) - handler = cfg.get('handler') + handler = cfg.get("handler") # Inspect the handler string (.) and translate it # into a function we can execute. fn = get_callable_handler_function(src, handler) - timeout = cfg.get('timeout') + timeout = cfg.get("timeout") if timeout: - context = LambdaContext(cfg.get('function_name'),timeout) + context = LambdaContext(cfg.get("function_name"), timeout) else: - context = LambdaContext(cfg.get('function_name')) + context = LambdaContext(cfg.get("function_name")) start = time.time() results = fn(event, context) end = time.time() - print('{0}'.format(results)) + print("{0}".format(results)) if verbose: - print('\nexecution time: {:.8f}s\nfunction execution ' - 'timeout: {:2}s'.format(end - start, cfg.get('timeout', 15))) + print( + "\nexecution time: {:.8f}s\nfunction execution " + "timeout: {:2}s".format(end - start, cfg.get("timeout", 15)) + ) def init(src, minimal=False): @@ -258,10 +283,10 @@ def init(src, minimal=False): """ templates_path = os.path.join( - os.path.dirname(os.path.abspath(__file__)), 'project_templates', + os.path.dirname(os.path.abspath(__file__)), "project_templates", ) for filename in os.listdir(templates_path): - if (minimal and filename == 'event.json') or filename.endswith('.pyc'): + if (minimal and filename == "event.json") or filename.endswith(".pyc"): continue dest_path = os.path.join(templates_path, filename) @@ -270,8 +295,11 @@ def init(src, minimal=False): def build( - src, requirements=None, local_package=None, - config_file='config.yaml', profile_name=None, + src, + requirements=None, + local_package=None, + config_file="config.yaml", + profile_name=None, ): """Builds the file bundle. @@ -288,63 +316,61 @@ def build( # Get the absolute path to the output directory and create it if it doesn't # already exist. - dist_directory = cfg.get('dist_directory', 'dist') + dist_directory = cfg.get("dist_directory", "dist") path_to_dist = os.path.join(src, dist_directory) mkdir(path_to_dist) # Combine the name of the Lambda function with the current timestamp to use # for the output filename. - function_name = cfg.get('function_name') - output_filename = '{0}-{1}.zip'.format(timestamp(), function_name) + function_name = cfg.get("function_name") + output_filename = "{0}-{1}.zip".format(timestamp(), function_name) - path_to_temp = mkdtemp(prefix='aws-lambda') + path_to_temp = mkdtemp(prefix="aws-lambda") pip_install_to_target( - path_to_temp, - requirements=requirements, - local_package=local_package, + path_to_temp, requirements=requirements, local_package=local_package, ) # Hack for Zope. - if 'zope' in os.listdir(path_to_temp): + if "zope" in os.listdir(path_to_temp): print( - 'Zope packages detected; fixing Zope package paths to ' - 'make them importable.', + "Zope packages detected; fixing Zope package paths to " + "make them importable.", ) # Touch. - with open(os.path.join(path_to_temp, 'zope/__init__.py'), 'wb'): + with open(os.path.join(path_to_temp, "zope/__init__.py"), "wb"): pass # Gracefully handle whether ".zip" was included in the filename or not. output_filename = ( - '{0}.zip'.format(output_filename) - if not output_filename.endswith('.zip') + "{0}.zip".format(output_filename) + if not output_filename.endswith(".zip") else output_filename ) # Allow definition of source code directories we want to build into our # zipped package. - build_config = defaultdict(**cfg.get('build', {})) - build_source_directories = build_config.get('source_directories', '') + build_config = defaultdict(**cfg.get("build", {})) + build_source_directories = build_config.get("source_directories", "") build_source_directories = ( build_source_directories if build_source_directories is not None - else '' + else "" ) source_directories = [ - d.strip() for d in build_source_directories.split(',') + d.strip() for d in build_source_directories.split(",") ] files = [] for filename in os.listdir(src): if os.path.isfile(filename): - if filename == '.DS_Store': + if filename == ".DS_Store": continue if filename == config_file: continue - print('Bundling: %r' % filename) + print("Bundling: %r" % filename) files.append(os.path.join(src, filename)) elif os.path.isdir(filename) and filename in source_directories: - print('Bundling directory: %r' % filename) + print("Bundling directory: %r" % filename) files.append(os.path.join(src, filename)) # "cd" into `temp_path` directory. @@ -357,12 +383,15 @@ def build( copyfile(f, os.path.join(path_to_temp, filename)) copystat(f, os.path.join(path_to_temp, filename)) elif os.path.isdir(f): - destination_folder = os.path.join(path_to_temp, f[len(src) + 1:]) + src_path_length = len(src) + 1 + destination_folder = os.path.join( + path_to_temp, f[src_path_length:] + ) copytree(f, destination_folder) # Zip them together into a single file. # TODO: Delete temp directory created once the archive has been compiled. - path_to_zip_file = archive('./', path_to_dist, output_filename) + path_to_zip_file = archive("./", path_to_dist, output_filename) return path_to_zip_file @@ -379,7 +408,7 @@ def get_callable_handler_function(src, handler): # "cd" into `src` directory. os.chdir(src) - module_name, function_name = handler.split('.') + module_name, function_name = handler.split(".") filename = get_handler_filename(handler) path_to_module_file = os.path.join(src, filename) @@ -393,8 +422,8 @@ def get_handler_filename(handler): :param str handler: A dot delimited string representing the `.`. """ - module_name, _ = handler.split('.') - return '{0}.py'.format(module_name) + module_name, _ = handler.split(".") + return "{0}.py".format(module_name) def _install_packages(path, packages): @@ -408,17 +437,34 @@ def _install_packages(path, packages): :param list packages: A list of packages to be installed via pip. """ + def _filter_blacklist(package): - blacklist = ['-i', '#', 'Python==', 'python-lambda=='] + blacklist = ["-i", "#", "Python==", "python-lambda=="] return all(package.startswith(entry) is False for entry in blacklist) + filtered_packages = filter(_filter_blacklist, packages) for package in filtered_packages: - if package.startswith('-e '): - package = package.replace('-e ', '') - - print('Installing {package}'.format(package=package)) - subprocess.check_call([sys.executable, '-m', 'pip', 'install', package, '-t', path, '--ignore-installed']) - print ('Install directory contents are now: {directory}'.format(directory=os.listdir(path))) + if package.startswith("-e "): + package = package.replace("-e ", "") + + print("Installing {package}".format(package=package)) + subprocess.check_call( + [ + sys.executable, + "-m", + "pip", + "install", + package, + "-t", + path, + "--ignore-installed", + ] + ) + print( + "Install directory contents are now: {directory}".format( + directory=os.listdir(path) + ) + ) def pip_install_to_target(path, requirements=None, local_package=None): @@ -437,17 +483,19 @@ def pip_install_to_target(path, requirements=None, local_package=None): """ packages = [] if not requirements: - print('Gathering pip packages') - pkgStr = subprocess.check_output([sys.executable, '-m', 'pip', 'freeze']) - packages.extend(pkgStr.decode('utf-8').splitlines()) + print("Gathering pip packages") + pkgStr = subprocess.check_output( + [sys.executable, "-m", "pip", "freeze"] + ) + packages.extend(pkgStr.decode("utf-8").splitlines()) else: if os.path.exists(requirements): - print('Gathering requirement packages') + print("Gathering requirement packages") data = read(requirements) packages.extend(data.splitlines()) if not packages: - print('No dependency packages installed!') + print("No dependency packages installed!") if local_package is not None: if not isinstance(local_package, (list, tuple)): @@ -459,24 +507,25 @@ def pip_install_to_target(path, requirements=None, local_package=None): def get_role_name(region, account_id, role): """Shortcut to insert the `account_id` and `role` into the iam string.""" - prefix = ARN_PREFIXES.get(region, 'aws') - return 'arn:{0}:iam::{1}:role/{2}'.format(prefix, account_id, role) + prefix = ARN_PREFIXES.get(region, "aws") + return "arn:{0}:iam::{1}:role/{2}".format(prefix, account_id, role) def get_account_id( - profile_name, aws_access_key_id, aws_secret_access_key, - region=None, + profile_name, aws_access_key_id, aws_secret_access_key, region=None, ): """Query STS for a users' account_id""" client = get_client( - 'sts', profile_name, aws_access_key_id, aws_secret_access_key, - region, + "sts", profile_name, aws_access_key_id, aws_secret_access_key, region, ) - return client.get_caller_identity().get('Account') + return client.get_caller_identity().get("Account") def get_client( - client, profile_name, aws_access_key_id, aws_secret_access_key, + client, + profile_name, + aws_access_key_id, + aws_secret_access_key, region=None, ): """Shortcut for getting an initialized instance of the boto3 client.""" @@ -493,87 +542,86 @@ def get_client( def create_function(cfg, path_to_zip_file, use_s3=False, s3_file=None): """Register and upload a function to AWS Lambda.""" - print('Creating your new Lambda function') + print("Creating your new Lambda function") byte_stream = read(path_to_zip_file, binary_file=True) - profile_name = cfg.get('profile') - aws_access_key_id = cfg.get('aws_access_key_id') - aws_secret_access_key = cfg.get('aws_secret_access_key') + profile_name = cfg.get("profile") + aws_access_key_id = cfg.get("aws_access_key_id") + aws_secret_access_key = cfg.get("aws_secret_access_key") account_id = get_account_id( - profile_name, aws_access_key_id, aws_secret_access_key, cfg.get( - 'region', - ), + profile_name, + aws_access_key_id, + aws_secret_access_key, + cfg.get("region",), ) role = get_role_name( - cfg.get('region'), account_id, - cfg.get('role', 'lambda_basic_execution'), + cfg.get("region"), + account_id, + cfg.get("role", "lambda_basic_execution"), ) client = get_client( - 'lambda', profile_name, aws_access_key_id, aws_secret_access_key, - cfg.get('region'), + "lambda", + profile_name, + aws_access_key_id, + aws_secret_access_key, + cfg.get("region"), ) # Do we prefer development variable over config? - buck_name = ( - os.environ.get('S3_BUCKET_NAME') or cfg.get('bucket_name') - ) - func_name = ( - os.environ.get('LAMBDA_FUNCTION_NAME') or cfg.get('function_name') + buck_name = os.environ.get("S3_BUCKET_NAME") or cfg.get("bucket_name") + func_name = os.environ.get("LAMBDA_FUNCTION_NAME") or cfg.get( + "function_name" ) - print('Creating lambda function with name: {}'.format(func_name)) + print("Creating lambda function with name: {}".format(func_name)) if use_s3: kwargs = { - 'FunctionName': func_name, - 'Runtime': cfg.get('runtime', 'python2.7'), - 'Role': role, - 'Handler': cfg.get('handler'), - 'Code': { - 'S3Bucket': '{}'.format(buck_name), - 'S3Key': '{}'.format(s3_file), + "FunctionName": func_name, + "Runtime": cfg.get("runtime", "python2.7"), + "Role": role, + "Handler": cfg.get("handler"), + "Code": { + "S3Bucket": "{}".format(buck_name), + "S3Key": "{}".format(s3_file), }, - 'Description': cfg.get('description', ''), - 'Timeout': cfg.get('timeout', 15), - 'MemorySize': cfg.get('memory_size', 512), - 'VpcConfig': { - 'SubnetIds': cfg.get('subnet_ids', []), - 'SecurityGroupIds': cfg.get('security_group_ids', []), + "Description": cfg.get("description", ""), + "Timeout": cfg.get("timeout", 15), + "MemorySize": cfg.get("memory_size", 512), + "VpcConfig": { + "SubnetIds": cfg.get("subnet_ids", []), + "SecurityGroupIds": cfg.get("security_group_ids", []), }, - 'Publish': True, + "Publish": True, } else: kwargs = { - 'FunctionName': func_name, - 'Runtime': cfg.get('runtime', 'python2.7'), - 'Role': role, - 'Handler': cfg.get('handler'), - 'Code': {'ZipFile': byte_stream}, - 'Description': cfg.get('description', ''), - 'Timeout': cfg.get('timeout', 15), - 'MemorySize': cfg.get('memory_size', 512), - 'VpcConfig': { - 'SubnetIds': cfg.get('subnet_ids', []), - 'SecurityGroupIds': cfg.get('security_group_ids', []), + "FunctionName": func_name, + "Runtime": cfg.get("runtime", "python2.7"), + "Role": role, + "Handler": cfg.get("handler"), + "Code": {"ZipFile": byte_stream}, + "Description": cfg.get("description", ""), + "Timeout": cfg.get("timeout", 15), + "MemorySize": cfg.get("memory_size", 512), + "VpcConfig": { + "SubnetIds": cfg.get("subnet_ids", []), + "SecurityGroupIds": cfg.get("security_group_ids", []), }, - 'Publish': True, + "Publish": True, } - if 'tags' in cfg: + if "tags" in cfg: kwargs.update( - Tags={ - key: str(value) - for key, value in cfg.get('tags').items() - } + Tags={key: str(value) for key, value in cfg.get("tags").items()} ) - if 'environment_variables' in cfg: + if "environment_variables" in cfg: kwargs.update( Environment={ - 'Variables': { + "Variables": { key: get_environment_variable_value(value) - for key, value - in cfg.get('environment_variables').items() + for key, value in cfg.get("environment_variables").items() }, }, ) @@ -582,86 +630,97 @@ def create_function(cfg, path_to_zip_file, use_s3=False, s3_file=None): concurrency = get_concurrency(cfg) if concurrency > 0: - client.put_function_concurrency(FunctionName=func_name, ReservedConcurrentExecutions=concurrency) + client.put_function_concurrency( + FunctionName=func_name, ReservedConcurrentExecutions=concurrency + ) def update_function( - cfg, path_to_zip_file, existing_cfg, use_s3=False, s3_file=None, preserve_vpc=False + cfg, + path_to_zip_file, + existing_cfg, + use_s3=False, + s3_file=None, + preserve_vpc=False, ): """Updates the code of an existing Lambda function""" - print('Updating your Lambda function') + print("Updating your Lambda function") byte_stream = read(path_to_zip_file, binary_file=True) - profile_name = cfg.get('profile') - aws_access_key_id = cfg.get('aws_access_key_id') - aws_secret_access_key = cfg.get('aws_secret_access_key') + profile_name = cfg.get("profile") + aws_access_key_id = cfg.get("aws_access_key_id") + aws_secret_access_key = cfg.get("aws_secret_access_key") account_id = get_account_id( - profile_name, aws_access_key_id, aws_secret_access_key, cfg.get( - 'region', - ), + profile_name, + aws_access_key_id, + aws_secret_access_key, + cfg.get("region",), ) role = get_role_name( - cfg.get('region'), account_id, - cfg.get('role', 'lambda_basic_execution'), + cfg.get("region"), + account_id, + cfg.get("role", "lambda_basic_execution"), ) client = get_client( - 'lambda', profile_name, aws_access_key_id, aws_secret_access_key, - cfg.get('region'), + "lambda", + profile_name, + aws_access_key_id, + aws_secret_access_key, + cfg.get("region"), ) # Do we prefer development variable over config? - buck_name = ( - os.environ.get('S3_BUCKET_NAME') or cfg.get('bucket_name') - ) + buck_name = os.environ.get("S3_BUCKET_NAME") or cfg.get("bucket_name") if use_s3: client.update_function_code( - FunctionName=cfg.get('function_name'), - S3Bucket='{}'.format(buck_name), - S3Key='{}'.format(s3_file), + FunctionName=cfg.get("function_name"), + S3Bucket="{}".format(buck_name), + S3Key="{}".format(s3_file), Publish=True, ) else: client.update_function_code( - FunctionName=cfg.get('function_name'), + FunctionName=cfg.get("function_name"), ZipFile=byte_stream, Publish=True, ) kwargs = { - 'FunctionName': cfg.get('function_name'), - 'Role': role, - 'Runtime': cfg.get('runtime'), - 'Handler': cfg.get('handler'), - 'Description': cfg.get('description', ''), - 'Timeout': cfg.get('timeout', 15), - 'MemorySize': cfg.get('memory_size', 512), + "FunctionName": cfg.get("function_name"), + "Role": role, + "Runtime": cfg.get("runtime"), + "Handler": cfg.get("handler"), + "Description": cfg.get("description", ""), + "Timeout": cfg.get("timeout", 15), + "MemorySize": cfg.get("memory_size", 512), } if preserve_vpc: - kwargs['VpcConfig'] = existing_cfg.get('Configuration', {}).get('VpcConfig') - if kwargs['VpcConfig'] is None: - kwargs['VpcConfig'] = { - 'SubnetIds': cfg.get('subnet_ids', []), - 'SecurityGroupIds': cfg.get('security_group_ids', []), + kwargs["VpcConfig"] = existing_cfg.get("Configuration", {}).get( + "VpcConfig" + ) + if kwargs["VpcConfig"] is None: + kwargs["VpcConfig"] = { + "SubnetIds": cfg.get("subnet_ids", []), + "SecurityGroupIds": cfg.get("security_group_ids", []), } else: - del kwargs['VpcConfig']['VpcId'] + del kwargs["VpcConfig"]["VpcId"] else: - kwargs['VpcConfig'] = { - 'SubnetIds': cfg.get('subnet_ids', []), - 'SecurityGroupIds': cfg.get('security_group_ids', []), + kwargs["VpcConfig"] = { + "SubnetIds": cfg.get("subnet_ids", []), + "SecurityGroupIds": cfg.get("security_group_ids", []), } - if 'environment_variables' in cfg: + if "environment_variables" in cfg: kwargs.update( Environment={ - 'Variables': { + "Variables": { key: str(get_environment_variable_value(value)) - for key, value - in cfg.get('environment_variables').items() + for key, value in cfg.get("environment_variables").items() }, }, ) @@ -670,58 +729,63 @@ def update_function( concurrency = get_concurrency(cfg) if concurrency > 0: - client.put_function_concurrency(FunctionName=cfg.get('function_name'), ReservedConcurrentExecutions=concurrency) - elif 'Concurrency' in existing_cfg: - client.delete_function_concurrency(FunctionName=cfg.get('function_name')) - - if 'tags' in cfg: - tags = { - key: str(value) - for key, value in cfg.get('tags').items() - } - if tags != existing_cfg.get('Tags'): - if existing_cfg.get('Tags'): - client.untag_resource(Resource=ret['FunctionArn'], - TagKeys=list(existing_cfg['Tags'].keys())) - client.tag_resource(Resource=ret['FunctionArn'], Tags=tags) + client.put_function_concurrency( + FunctionName=cfg.get("function_name"), + ReservedConcurrentExecutions=concurrency, + ) + elif "Concurrency" in existing_cfg: + client.delete_function_concurrency( + FunctionName=cfg.get("function_name") + ) + + if "tags" in cfg: + tags = {key: str(value) for key, value in cfg.get("tags").items()} + if tags != existing_cfg.get("Tags"): + if existing_cfg.get("Tags"): + client.untag_resource( + Resource=ret["FunctionArn"], + TagKeys=list(existing_cfg["Tags"].keys()), + ) + client.tag_resource(Resource=ret["FunctionArn"], Tags=tags) def upload_s3(cfg, path_to_zip_file, *use_s3): """Upload a function to AWS S3.""" - print('Uploading your new Lambda function') - profile_name = cfg.get('profile') - aws_access_key_id = cfg.get('aws_access_key_id') - aws_secret_access_key = cfg.get('aws_secret_access_key') + print("Uploading your new Lambda function") + profile_name = cfg.get("profile") + aws_access_key_id = cfg.get("aws_access_key_id") + aws_secret_access_key = cfg.get("aws_secret_access_key") client = get_client( - 's3', profile_name, aws_access_key_id, aws_secret_access_key, - cfg.get('region'), + "s3", + profile_name, + aws_access_key_id, + aws_secret_access_key, + cfg.get("region"), ) - byte_stream = b'' - with open(path_to_zip_file, mode='rb') as fh: + byte_stream = b"" + with open(path_to_zip_file, mode="rb") as fh: byte_stream = fh.read() - s3_key_prefix = cfg.get('s3_key_prefix', '/dist') - checksum = hashlib.new('md5', byte_stream).hexdigest() + s3_key_prefix = cfg.get("s3_key_prefix", "/dist") + checksum = hashlib.new("md5", byte_stream).hexdigest() timestamp = str(time.time()) - filename = '{prefix}{checksum}-{ts}.zip'.format( + filename = "{prefix}{checksum}-{ts}.zip".format( prefix=s3_key_prefix, checksum=checksum, ts=timestamp, ) # Do we prefer development variable over config? - buck_name = ( - os.environ.get('S3_BUCKET_NAME') or cfg.get('bucket_name') - ) - func_name = ( - os.environ.get('LAMBDA_FUNCTION_NAME') or cfg.get('function_name') + buck_name = os.environ.get("S3_BUCKET_NAME") or cfg.get("bucket_name") + func_name = os.environ.get("LAMBDA_FUNCTION_NAME") or cfg.get( + "function_name" ) kwargs = { - 'Bucket': '{}'.format(buck_name), - 'Key': '{}'.format(filename), - 'Body': byte_stream, + "Bucket": "{}".format(buck_name), + "Key": "{}".format(filename), + "Body": byte_stream, } client.put_object(**kwargs) - print('Finished uploading {} to S3 bucket {}'.format(func_name, buck_name)) + print("Finished uploading {} to S3 bucket {}".format(func_name, buck_name)) if use_s3: return filename @@ -729,32 +793,35 @@ def upload_s3(cfg, path_to_zip_file, *use_s3): def get_function_config(cfg): """Check whether a function exists or not and return its config""" - function_name = cfg.get('function_name') - profile_name = cfg.get('profile') - aws_access_key_id = cfg.get('aws_access_key_id') - aws_secret_access_key = cfg.get('aws_secret_access_key') + function_name = cfg.get("function_name") + profile_name = cfg.get("profile") + aws_access_key_id = cfg.get("aws_access_key_id") + aws_secret_access_key = cfg.get("aws_secret_access_key") client = get_client( - 'lambda', profile_name, aws_access_key_id, aws_secret_access_key, - cfg.get('region'), + "lambda", + profile_name, + aws_access_key_id, + aws_secret_access_key, + cfg.get("region"), ) try: return client.get_function(FunctionName=function_name) except client.exceptions.ResourceNotFoundException as e: - if 'Function not found' in str(e): + if "Function not found" in str(e): return False def get_concurrency(cfg): """Return the Reserved Concurrent Executions if present in the config""" - concurrency = int(cfg.get('concurrency', 0)) + concurrency = int(cfg.get("concurrency", 0)) return max(0, concurrency) def read_cfg(path_to_config_file, profile_name): cfg = read(path_to_config_file, loader=yaml.full_load) if profile_name is not None: - cfg['profile'] = profile_name - elif 'AWS_PROFILE' in os.environ: - cfg['profile'] = os.environ['AWS_PROFILE'] + cfg["profile"] = profile_name + elif "AWS_PROFILE" in os.environ: + cfg["profile"] = os.environ["AWS_PROFILE"] return cfg diff --git a/aws_lambda/helpers.py b/aws_lambda/helpers.py index 75fbb036..edfd8e9d 100644 --- a/aws_lambda/helpers.py +++ b/aws_lambda/helpers.py @@ -12,7 +12,7 @@ def mkdir(path): def read(path, loader=None, binary_file=False): - open_mode = 'rb' if binary_file else 'r' + open_mode = "rb" if binary_file else "r" with open(path, mode=open_mode) as fh: if not loader: return fh.read() @@ -21,7 +21,7 @@ def read(path, loader=None, binary_file=False): def archive(src, dest, filename): output = os.path.join(dest, filename) - zfh = zipfile.ZipFile(output, 'w', zipfile.ZIP_DEFLATED) + zfh = zipfile.ZipFile(output, "w", zipfile.ZIP_DEFLATED) for root, _, files in os.walk(src): for file in files: @@ -30,7 +30,7 @@ def archive(src, dest, filename): return os.path.join(dest, filename) -def timestamp(fmt='%Y-%m-%d-%H%M%S'): +def timestamp(fmt="%Y-%m-%d-%H%M%S"): now = dt.datetime.utcnow() return now.strftime(fmt) @@ -38,18 +38,24 @@ def timestamp(fmt='%Y-%m-%d-%H%M%S'): def get_environment_variable_value(val): env_val = val if val is not None and isinstance(val, str): - match = re.search(r'^\${(?P\w+)*}$', val) + match = re.search(r"^\${(?P\w+)*}$", val) if match is not None: - env_val = os.environ.get(match.group('environment_key_name')) + env_val = os.environ.get(match.group("environment_key_name")) return env_val -class LambdaContext: - current_milli_time = lambda x: int(round(time.time() * 1000)) + +class LambdaContext: + def current_milli_time(x): + return int(round(time.time() * 1000)) def get_remaining_time_in_millis(self): - return max(0, self.timeout_millis - (self.current_milli_time() - self.start_time_millis)) + return max( + 0, + self.timeout_millis + - (self.current_milli_time() - self.start_time_millis), + ) - def __init__(self,function_name, timeoutSeconds = 3): + def __init__(self, function_name, timeoutSeconds=3): self.function_name = function_name self.function_version = None self.invoked_function_arn = None @@ -60,4 +66,4 @@ def __init__(self,function_name, timeoutSeconds = 3): self.identity = None self.client_context = None self.timeout_millis = timeoutSeconds * 1000 - self.start_time_millis = self.current_milli_time() \ No newline at end of file + self.start_time_millis = self.current_milli_time() diff --git a/aws_lambda/project_templates/service.py b/aws_lambda/project_templates/service.py index e5bcb681..f04dba34 100644 --- a/aws_lambda/project_templates/service.py +++ b/aws_lambda/project_templates/service.py @@ -3,6 +3,6 @@ def handler(event, context): # Your code goes here! - e = event.get('e') - pi = event.get('pi') + e = event.get("e") + pi = event.get("pi") return e + pi diff --git a/scripts/lambda b/scripts/lambda index a8e0e225..08c5eef8 100755 --- a/scripts/lambda +++ b/scripts/lambda @@ -9,7 +9,7 @@ import aws_lambda CURRENT_DIR = os.getcwd() -logging.getLogger('pip').setLevel(logging.CRITICAL) +logging.getLogger("pip").setLevel(logging.CRITICAL) @click.group() @@ -17,16 +17,15 @@ def cli(): pass -@click.command(help='Create a new function for Lambda.') +@click.command(help="Create a new function for Lambda.") @click.option( - '--minimal', + "--minimal", default=False, is_flag=True, - help='Exclude any unnecessary template files', + help="Exclude any unnecessary template files", ) @click.argument( - 'folder', nargs=-1, - type=click.Path(file_okay=False, writable=True), + "folder", nargs=-1, type=click.Path(file_okay=False, writable=True), ) def init(folder, minimal): path = CURRENT_DIR @@ -37,27 +36,24 @@ def init(folder, minimal): aws_lambda.init(path, minimal=minimal) -@click.command(help='Bundles package for deployment.') +@click.command(help="Bundles package for deployment.") @click.option( - '--config-file', - default='config.yaml', - help='Alternate config file.', + "--config-file", default="config.yaml", help="Alternate config file.", ) @click.option( - '--profile', - help='AWS profile to use.', + "--profile", help="AWS profile to use.", ) @click.option( - '--requirements', + "--requirements", default=None, type=click.Path(), - help='Install packages from supplied requirements file.', + help="Install packages from supplied requirements file.", ) @click.option( - '--local-package', + "--local-package", default=None, type=click.Path(), - help='Install local package as well.', + help="Install local package as well.", multiple=True, ) def build(requirements, local_package, config_file, profile): @@ -70,22 +66,17 @@ def build(requirements, local_package, config_file, profile): ) -@click.command(help='Run a local test of your function.') +@click.command(help="Run a local test of your function.") @click.option( - '--event-file', - default='event.json', - help='Alternate event file.', + "--event-file", default="event.json", help="Alternate event file.", ) @click.option( - '--config-file', - default='config.yaml', - help='Alternate config file.', + "--config-file", default="config.yaml", help="Alternate config file.", ) @click.option( - '--profile', - help='AWS profile to use.', + "--profile", help="AWS profile to use.", ) -@click.option('--verbose', '-v', is_flag=True) +@click.option("--verbose", "-v", is_flag=True) def invoke(event_file, config_file, profile, verbose): aws_lambda.invoke( CURRENT_DIR, @@ -96,34 +87,31 @@ def invoke(event_file, config_file, profile, verbose): ) -@click.command(help='Register and deploy your code to lambda.') +@click.command(help="Register and deploy your code to lambda.") @click.option( - '--config-file', - default='config.yaml', - help='Alternate config file.', + "--config-file", default="config.yaml", help="Alternate config file.", ) @click.option( - '--profile', - help='AWS profile to use.', + "--profile", help="AWS profile to use.", ) @click.option( - '--requirements', + "--requirements", default=None, type=click.Path(), - help='Install all packages defined in supplied requirements file', + help="Install all packages defined in supplied requirements file", ) @click.option( - '--local-package', + "--local-package", default=None, type=click.Path(), - help='Install local package as well.', + help="Install local package as well.", multiple=True, ) @click.option( - '--preserve-vpc', + "--preserve-vpc", default=False, is_flag=True, - help='Preserve VPC configuration on existing functions', + help="Preserve VPC configuration on existing functions", ) def deploy(requirements, local_package, config_file, profile, preserve_vpc): aws_lambda.deploy( @@ -136,27 +124,24 @@ def deploy(requirements, local_package, config_file, profile, preserve_vpc): ) -@click.command(help='Upload your lambda to S3.') +@click.command(help="Upload your lambda to S3.") @click.option( - '--config-file', - default='config.yaml', - help='Alternate config file.', + "--config-file", default="config.yaml", help="Alternate config file.", ) @click.option( - '--profile', - help='AWS profile to use.', + "--profile", help="AWS profile to use.", ) @click.option( - '--requirements', + "--requirements", default=None, type=click.Path(), - help='Install all packages defined in supplied requirements file', + help="Install all packages defined in supplied requirements file", ) @click.option( - '--local-package', + "--local-package", default=None, type=click.Path(), - help='Install local package as well.', + help="Install local package as well.", multiple=True, ) def upload(requirements, local_package, config_file, profile): @@ -169,28 +154,25 @@ def upload(requirements, local_package, config_file, profile): ) -@click.command(help='Deploy your lambda via S3.') +@click.command(help="Deploy your lambda via S3.") @click.option( - '--config-file', - default='config.yaml', - help='Alternate config file.', + "--config-file", default="config.yaml", help="Alternate config file.", ) @click.option( - '--profile', - help='AWS profile to use.', + "--profile", help="AWS profile to use.", ) @click.option( - '--requirements', + "--requirements", default=None, type=click.Path(), - help='Install all packages defined in supplied requirements file', + help="Install all packages defined in supplied requirements file", ) @click.option( - '--local-package', + "--local-package", default=None, type=click.Path(), multiple=True, - help='Install local package as well.', + help="Install local package as well.", ) def deploy_s3(requirements, local_package, config_file, profile): aws_lambda.deploy_s3( @@ -202,31 +184,25 @@ def deploy_s3(requirements, local_package, config_file, profile): ) -@click.command(help='Delete old versions of your functions') +@click.command(help="Delete old versions of your functions") @click.option( - '--config-file', - default='config.yaml', - help='Alternate config file.', + "--config-file", default="config.yaml", help="Alternate config file.", ) @click.option( - '--profile', - help='AWS profile to use.', + "--profile", help="AWS profile to use.", ) @click.option( - '--keep-last', + "--keep-last", type=int, - prompt='Please enter the number of recent versions to keep', + prompt="Please enter the number of recent versions to keep", ) def cleanup(keep_last, config_file, profile): aws_lambda.cleanup_old_versions( - CURRENT_DIR, - keep_last, - config_file=config_file, - profile_name=profile, + CURRENT_DIR, keep_last, config_file=config_file, profile_name=profile, ) -if __name__ == '__main__': +if __name__ == "__main__": cli.add_command(init) cli.add_command(invoke) cli.add_command(deploy) diff --git a/setup.py b/setup.py index 359a57e1..de34dbfd 100755 --- a/setup.py +++ b/setup.py @@ -5,56 +5,56 @@ from setuptools import find_packages from setuptools import setup -with open('README.rst') as readme_file: +with open("README.rst") as readme_file: readme = readme_file.read() requirements = [ - 'boto3', - 'click', - 'PyYAML', + "boto3", + "click", + "PyYAML", ] # Only install futures package if using a Python version <= 2.7 if sys.version_info < (3, 0): - requirements.append('futures') + requirements.append("futures") test_requirements = [ # TODO: put package test requirements here ] setup( - name='python-lambda', - version='3.2.7', - description='The bare minimum for a Python app running on Amazon Lambda.', + name="python-lambda", + version="3.2.7", + description="The bare minimum for a Python app running on Amazon Lambda.", long_description=readme, - author='Nick Ficano', - author_email='nficano@gmail.com', - url='https://github.com/nficano/python-lambda', + author="Nick Ficano", + author_email="nficano@gmail.com", + url="https://github.com/nficano/python-lambda", packages=find_packages(), package_data={ - 'aws_lambda': ['project_templates/*'], - '': ['*.json'], - }, + "aws_lambda": ["project_templates/*"], + "": ["*.json"], + }, # noqa include_package_data=True, - scripts=['scripts/lambda'], + scripts=["scripts/lambda"], install_requires=requirements, - license='ISCL', + license="ISCL", zip_safe=False, - keywords='python-lambda', + keywords="python-lambda", classifiers=[ - 'Development Status :: 2 - Pre-Alpha', - 'Intended Audience :: Developers', - 'License :: OSI Approved :: ISC License (ISCL)', - 'Natural Language :: English', - 'Programming Language :: Python :: 2', - 'Programming Language :: Python :: 2.6', - 'Programming Language :: Python :: 2.7', - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.3', - 'Programming Language :: Python :: 3.4', - 'Programming Language :: Python :: 3.5', - 'Programming Language :: Python :: 3.6', + "Development Status :: 2 - Pre-Alpha", + "Intended Audience :: Developers", + "License :: OSI Approved :: ISC License (ISCL)", + "Natural Language :: English", + "Programming Language :: Python :: 2", + "Programming Language :: Python :: 2.6", + "Programming Language :: Python :: 2.7", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.3", + "Programming Language :: Python :: 3.4", + "Programming Language :: Python :: 3.5", + "Programming Language :: Python :: 3.6", ], - test_suite='tests', + test_suite="tests", tests_require=test_requirements, ) diff --git a/tests/__init__.py b/tests/__init__.py old mode 100755 new mode 100644 diff --git a/tests/unit/test_LambdaContext.py b/tests/unit/test_LambdaContext.py index 7a14e5ae..16c66303 100644 --- a/tests/unit/test_LambdaContext.py +++ b/tests/unit/test_LambdaContext.py @@ -1,14 +1,15 @@ -from aws_lambda.helpers import LambdaContext import time import unittest -class TestLambdaContext(unittest.TestCase): +from aws_lambda.helpers import LambdaContext - def test_get_remaining_time_in_millis(self): - context = LambdaContext('function_name', 2000) - time.sleep(.5) - self.assertTrue(context.get_remaining_time_in_millis() < 2000000) + +class TestLambdaContext(unittest.TestCase): + def test_get_remaining_time_in_millis(self): + context = LambdaContext("function_name", 2000) + time.sleep(0.5) + self.assertTrue(context.get_remaining_time_in_millis() < 2000000) -if __name__ == '__main__': - unittest.main() \ No newline at end of file +if __name__ == "__main__": + unittest.main() diff --git a/tests/unit/test_readHelper.py b/tests/unit/test_readHelper.py index 3ad0c68f..33c27529 100644 --- a/tests/unit/test_readHelper.py +++ b/tests/unit/test_readHelper.py @@ -1,36 +1,36 @@ import os import unittest + import yaml + from aws_lambda.helpers import read class TestReadHelper(unittest.TestCase): - TEST_FILE = 'readTmp.txt' + TEST_FILE = "readTmp.txt" def setUp(self): - with open(TestReadHelper.TEST_FILE, 'w') as tmp_file: - tmp_file.write('testYaml: testing') + with open(TestReadHelper.TEST_FILE, "w") as tmp_file: + tmp_file.write("testYaml: testing") def tearDown(self): os.remove(TestReadHelper.TEST_FILE) def test_read_no_loader_non_binary(self): fileContents = read(TestReadHelper.TEST_FILE) - self.assertEqual(fileContents, 'testYaml: testing') + self.assertEqual(fileContents, "testYaml: testing") def test_read_yaml_loader_non_binary(self): testYaml = read(TestReadHelper.TEST_FILE, loader=yaml.full_load) - self.assertEqual(testYaml['testYaml'], 'testing') + self.assertEqual(testYaml["testYaml"], "testing") def test_read_no_loader_binary_mode(self): fileContents = read(TestReadHelper.TEST_FILE, binary_file=True) - self.assertEqual(fileContents, b'testYaml: testing') + self.assertEqual(fileContents, b"testYaml: testing") def test_read_yaml_loader_binary_mode(self): testYaml = read( - TestReadHelper.TEST_FILE, - loader=yaml.full_load, - binary_file=True + TestReadHelper.TEST_FILE, loader=yaml.full_load, binary_file=True ) - self.assertEqual(testYaml['testYaml'], 'testing') + self.assertEqual(testYaml["testYaml"], "testing") From 8f6d53d4043b1c86dccf2c48f1a627c22394a3ec Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 09:38:11 -0400 Subject: [PATCH 061/120] Updated supported versions --- setup.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/setup.py b/setup.py index de34dbfd..bf42392c 100755 --- a/setup.py +++ b/setup.py @@ -46,14 +46,10 @@ "Intended Audience :: Developers", "License :: OSI Approved :: ISC License (ISCL)", "Natural Language :: English", - "Programming Language :: Python :: 2", - "Programming Language :: Python :: 2.6", - "Programming Language :: Python :: 2.7", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.3", - "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", ], test_suite="tests", tests_require=test_requirements, From efb33f22a4da3df84f10595a4d8543d1a278853b Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 09:38:34 -0400 Subject: [PATCH 062/120] =?UTF-8?q?Bump=20version:=203.2.7=20=E2=86=92=204?= =?UTF-8?q?.0.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 3 ++- setup.py | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index 2f4776aa..f9cb8aa1 100644 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -1,7 +1,7 @@ # flake8: noqa __author__ = "Nick Ficano" __email__ = "nficano@gmail.com" -__version__ = "3.2.7" +__version__ = "4.0.0" from .aws_lambda import ( deploy, diff --git a/setup.cfg b/setup.cfg index d1608cff..7f38f2f9 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 3.2.7 +current_version = 4.0.0 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} @@ -18,3 +18,4 @@ source = aws_lambda [flake8] exclude = docs + diff --git a/setup.py b/setup.py index bf42392c..a44c31d1 100755 --- a/setup.py +++ b/setup.py @@ -24,7 +24,7 @@ setup( name="python-lambda", - version="3.2.7", + version="4.0.0", description="The bare minimum for a Python app running on Amazon Lambda.", long_description=readme, author="Nick Ficano", From 41f3570ab74d3b1eb89c188b106f919be0303fb9 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 09:39:27 -0400 Subject: [PATCH 063/120] Fixed setup.py README reference --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index a44c31d1..ef951c3a 100755 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ from setuptools import find_packages from setuptools import setup -with open("README.rst") as readme_file: +with open("README.md") as readme_file: readme = readme_file.read() requirements = [ From 506fd9d813ccfa090bf3c38789c85acadfe7a72e Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 09:40:04 -0400 Subject: [PATCH 064/120] Fixed setup.py README reference --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 246e9cdb..d5377ab7 100644 --- a/.gitignore +++ b/.gitignore @@ -23,6 +23,8 @@ var/ *.egg-info/ .installed.cfg *.egg +requirements-dev.txt +requirements.txt # PyInstaller # Usually these files are written by a python script from a template From 619848e1364b0f6709a0185c2bc172f3334ac002 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 09:40:13 -0400 Subject: [PATCH 065/120] =?UTF-8?q?Bump=20version:=204.0.0=20=E2=86=92=205?= =?UTF-8?q?.0.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index f9cb8aa1..852da363 100644 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -1,7 +1,7 @@ # flake8: noqa __author__ = "Nick Ficano" __email__ = "nficano@gmail.com" -__version__ = "4.0.0" +__version__ = "5.0.0" from .aws_lambda import ( deploy, diff --git a/setup.cfg b/setup.cfg index 7f38f2f9..fcd23099 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 4.0.0 +current_version = 5.0.0 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} diff --git a/setup.py b/setup.py index ef951c3a..7977befd 100755 --- a/setup.py +++ b/setup.py @@ -24,7 +24,7 @@ setup( name="python-lambda", - version="4.0.0", + version="5.0.0", description="The bare minimum for a Python app running on Amazon Lambda.", long_description=readme, author="Nick Ficano", From ff302a248c2b145079d15f0f9271400b1da4fbe9 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 09:40:48 -0400 Subject: [PATCH 066/120] Fixed old dependancy --- Pipfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Pipfile b/Pipfile index 3fe6cff9..bff986e8 100644 --- a/Pipfile +++ b/Pipfile @@ -16,7 +16,7 @@ wheel = "*" boto3 = "==1.4.4" botocore = "==1.5.62" click = "==6.6" -docutils = "==0.12" +docutils = "*" jmespath = "==0.9.0" pyaml = "==15.8.2" python-dateutil = "==2.5.3" From a91f609a63626ac8875a5bd049f01151f0449e52 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 09:40:51 -0400 Subject: [PATCH 067/120] =?UTF-8?q?Bump=20version:=205.0.0=20=E2=86=92=206?= =?UTF-8?q?.0.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index 852da363..21b541d8 100644 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -1,7 +1,7 @@ # flake8: noqa __author__ = "Nick Ficano" __email__ = "nficano@gmail.com" -__version__ = "5.0.0" +__version__ = "6.0.0" from .aws_lambda import ( deploy, diff --git a/setup.cfg b/setup.cfg index fcd23099..ace63af0 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 5.0.0 +current_version = 6.0.0 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} diff --git a/setup.py b/setup.py index 7977befd..3c914e1f 100755 --- a/setup.py +++ b/setup.py @@ -24,7 +24,7 @@ setup( name="python-lambda", - version="5.0.0", + version="6.0.0", description="The bare minimum for a Python app running on Amazon Lambda.", long_description=readme, author="Nick Ficano", From 6756439a2a8a0f35eca1f9014600fa8ea1cad5da Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 09:42:12 -0400 Subject: [PATCH 068/120] Updated old dependancy --- Pipfile | 1 - Pipfile.lock | 524 --------------------------------------------------- 2 files changed, 525 deletions(-) delete mode 100644 Pipfile.lock diff --git a/Pipfile b/Pipfile index bff986e8..04fce9be 100644 --- a/Pipfile +++ b/Pipfile @@ -20,7 +20,6 @@ docutils = "*" jmespath = "==0.9.0" pyaml = "==15.8.2" python-dateutil = "==2.5.3" -six = "==1.10.0" PyYAML = "==5.1" [requires] diff --git a/Pipfile.lock b/Pipfile.lock deleted file mode 100644 index b171435b..00000000 --- a/Pipfile.lock +++ /dev/null @@ -1,524 +0,0 @@ -{ - "_meta": { - "hash": { - "sha256": "a1116920416fcf686825ee0749b8eadd5a0017d8539f27edb5957ee5bcc90327" - }, - "pipfile-spec": 6, - "requires": { - "python_version": "3.8" - }, - "sources": [ - { - "name": "pypi", - "url": "https://pypi.org/simple", - "verify_ssl": true - } - ] - }, - "default": { - "boto3": { - "hashes": [ - "sha256:5050c29353fec97301116386f469fa5858ccf47201623b53cf9f74e603bda52f", - "sha256:518f724c4758e5a5bed114fbcbd1cf470a15306d416ff421a025b76f1d390939" - ], - "index": "pypi", - "version": "==1.4.4" - }, - "botocore": { - "hashes": [ - "sha256:79c9347b1333f94372c0c2fea950326b41c83ff16e67298db0a016708fe45be6", - "sha256:9878598a9db8be63788dc1030616d1e5b64e4a9c2d85dba34b4a5c3b6b049fa6" - ], - "index": "pypi", - "version": "==1.5.62" - }, - "click": { - "hashes": [ - "sha256:cc6a19da8ebff6e7074f731447ef7e112bd23adf3de5c597cf9989f2fd8defe9", - "sha256:fcf697e1fd4b567d817c69dab10a4035937fe6af175c05fd6806b69f74cbc6c4" - ], - "index": "pypi", - "version": "==6.6" - }, - "docutils": { - "hashes": [ - "sha256:c7db717810ab6965f66c8cf0398a98c9d8df982da39b4cd7f162911eb89596fa", - "sha256:dcebd4928112631626f4c4d0df59787c748404e66dda952110030ea883d3b8cd" - ], - "index": "pypi", - "version": "==0.12" - }, - "jmespath": { - "hashes": [ - "sha256:08dfaa06d4397f283a01e57089f3360e3b52b5b9da91a70e1fd91e9f0cdd3d3d", - "sha256:ade5261b0d7d34b6f53accc91e6881b579b40161ed575e6ac465de5edad32815" - ], - "index": "pypi", - "version": "==0.9.0" - }, - "pyaml": { - "hashes": [ - "sha256:9c54fb5f17b58572c4cef50affea60bb73f445ab153580dac07a12383712b5b8" - ], - "index": "pypi", - "version": "==15.8.2" - }, - "python-dateutil": { - "hashes": [ - "sha256:1408fdb07c6a1fa9997567ce3fcee6a337b39a503d80699e0f213de4aa4b32ed", - "sha256:598499a75be2e5e18a66f12c00dd47a069de24794effeda4228bfc760f44f527", - "sha256:9d94861f04ce14f9a3d835206067c889b8f1244f1415035dadcf9c10066adf04" - ], - "index": "pypi", - "version": "==2.5.3" - }, - "pyyaml": { - "hashes": [ - "sha256:1adecc22f88d38052fb787d959f003811ca858b799590a5eaa70e63dca50308c", - "sha256:436bc774ecf7c103814098159fbb84c2715d25980175292c648f2da143909f95", - "sha256:460a5a4248763f6f37ea225d19d5c205677d8d525f6a83357ca622ed541830c2", - "sha256:5a22a9c84653debfbf198d02fe592c176ea548cccce47553f35f466e15cf2fd4", - "sha256:7a5d3f26b89d688db27822343dfa25c599627bc92093e788956372285c6298ad", - "sha256:9372b04a02080752d9e6f990179a4ab840227c6e2ce15b95e1278456664cf2ba", - "sha256:a5dcbebee834eaddf3fa7366316b880ff4062e4bcc9787b78c7fbb4a26ff2dd1", - "sha256:aee5bab92a176e7cd034e57f46e9df9a9862a71f8f37cad167c6fc74c65f5b4e", - "sha256:c51f642898c0bacd335fc119da60baae0824f2cde95b0330b56c0553439f0673", - "sha256:c68ea4d3ba1705da1e0d85da6684ac657912679a649e8868bd850d2c299cce13", - "sha256:e23d0cc5299223dcc37885dae624f382297717e459ea24053709675a976a3e19" - ], - "index": "pypi", - "version": "==5.1" - }, - "s3transfer": { - "hashes": [ - "sha256:90dc18e028989c609146e241ea153250be451e05ecc0c2832565231dacdf59c1", - "sha256:c7a9ec356982d5e9ab2d4b46391a7d6a950e2b04c472419f5fdec70cc0ada72f" - ], - "version": "==0.1.13" - }, - "six": { - "hashes": [ - "sha256:0ff78c403d9bccf5a425a6d31a12aa6b47f1c21ca4dc2573a7e2f32a97335eb1", - "sha256:105f8d68616f8248e24bf0e9372ef04d3cc10104f1980f54d57b2ce73a5ad56a" - ], - "index": "pypi", - "version": "==1.10.0" - } - }, - "develop": { - "appdirs": { - "hashes": [ - "sha256:9e5896d1372858f8dd3344faf4e5014d21849c756c8d5701f78f8a103b372d92", - "sha256:d8b24664561d0d34ddfaec54636d502d7cea6e29c3eaf68f3df6180863e2166e" - ], - "version": "==1.4.3" - }, - "appnope": { - "hashes": [ - "sha256:5b26757dc6f79a3b7dc9fab95359328d5747fcb2409d331ea66d0272b90ab2a0", - "sha256:8b995ffe925347a2138d7ac0fe77155e4311a0ea6d6da4f5128fe4b3cbe5ed71" - ], - "markers": "sys_platform == 'darwin'", - "version": "==0.1.0" - }, - "attrs": { - "hashes": [ - "sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c", - "sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72" - ], - "version": "==19.3.0" - }, - "backcall": { - "hashes": [ - "sha256:38ecd85be2c1e78f77fd91700c76e14667dc21e2713b63876c0eb901196e01e4", - "sha256:bbbf4b1e5cd2bdb08f915895b51081c041bac22394fdfcfdfbe9f14b77c08bf2" - ], - "version": "==0.1.0" - }, - "black": { - "hashes": [ - "sha256:1b30e59be925fafc1ee4565e5e08abef6b03fe455102883820fe5ee2e4734e0b", - "sha256:c2edb73a08e9e0e6f65a0e6af18b059b8b1cdd5bef997d7a0b181df93dc81539" - ], - "index": "pypi", - "version": "==19.10b0" - }, - "bleach": { - "hashes": [ - "sha256:cc8da25076a1fe56c3ac63671e2194458e0c4d9c7becfd52ca251650d517903c", - "sha256:e78e426105ac07026ba098f04de8abe9b6e3e98b5befbf89b51a5ef0a4292b03" - ], - "version": "==3.1.4" - }, - "bumpversion": { - "hashes": [ - "sha256:6744c873dd7aafc24453d8b6a1a0d6d109faf63cd0cd19cb78fd46e74932c77e", - "sha256:6753d9ff3552013e2130f7bc03c1007e24473b4835952679653fb132367bdd57" - ], - "index": "pypi", - "version": "==0.5.3" - }, - "certifi": { - "hashes": [ - "sha256:017c25db2a153ce562900032d5bc68e9f191e44e9a0f762f373977de9df1fbb3", - "sha256:25b64c7da4cd7479594d035c08c2d809eb4aab3a26e5a990ea98cc450c320f1f" - ], - "version": "==2019.11.28" - }, - "chardet": { - "hashes": [ - "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae", - "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691" - ], - "version": "==3.0.4" - }, - "click": { - "hashes": [ - "sha256:cc6a19da8ebff6e7074f731447ef7e112bd23adf3de5c597cf9989f2fd8defe9", - "sha256:fcf697e1fd4b567d817c69dab10a4035937fe6af175c05fd6806b69f74cbc6c4" - ], - "index": "pypi", - "version": "==6.6" - }, - "decorator": { - "hashes": [ - "sha256:41fa54c2a0cc4ba648be4fd43cff00aedf5b9465c9bf18d64325bc225f08f760", - "sha256:e3a62f0520172440ca0dcc823749319382e377f37f140a0b99ef45fecb84bfe7" - ], - "version": "==4.4.2" - }, - "distlib": { - "hashes": [ - "sha256:2e166e231a26b36d6dfe35a48c4464346620f8645ed0ace01ee31822b288de21" - ], - "version": "==0.3.0" - }, - "docutils": { - "hashes": [ - "sha256:c7db717810ab6965f66c8cf0398a98c9d8df982da39b4cd7f162911eb89596fa", - "sha256:dcebd4928112631626f4c4d0df59787c748404e66dda952110030ea883d3b8cd" - ], - "index": "pypi", - "version": "==0.12" - }, - "entrypoints": { - "hashes": [ - "sha256:589f874b313739ad35be6e0cd7efde2a4e9b6fea91edcc34e58ecbb8dbe56d19", - "sha256:c70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451" - ], - "version": "==0.3" - }, - "filelock": { - "hashes": [ - "sha256:18d82244ee114f543149c66a6e0c14e9c4f8a1044b5cdaadd0f82159d6a6ff59", - "sha256:929b7d63ec5b7d6b71b0fa5ac14e030b3f70b75747cef1b10da9b879fef15836" - ], - "version": "==3.0.12" - }, - "flake8": { - "hashes": [ - "sha256:45681a117ecc81e870cbf1262835ae4af5e7a8b08e40b944a8a6e6b895914cfb", - "sha256:49356e766643ad15072a789a20915d3c91dc89fd313ccd71802303fd67e4deca" - ], - "index": "pypi", - "version": "==3.7.9" - }, - "idna": { - "hashes": [ - "sha256:7588d1c14ae4c77d74036e8c22ff447b26d0fde8f007354fd48a7814db15b7cb", - "sha256:a068a21ceac8a4d63dbfd964670474107f541babbd2250d61922f029858365fa" - ], - "version": "==2.9" - }, - "ipython": { - "hashes": [ - "sha256:ca478e52ae1f88da0102360e57e528b92f3ae4316aabac80a2cd7f7ab2efb48a", - "sha256:eb8d075de37f678424527b5ef6ea23f7b80240ca031c2dd6de5879d687a65333" - ], - "index": "pypi", - "version": "==7.13.0" - }, - "ipython-genutils": { - "hashes": [ - "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8", - "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8" - ], - "version": "==0.2.0" - }, - "jedi": { - "hashes": [ - "sha256:b4f4052551025c6b0b0b193b29a6ff7bdb74c52450631206c262aef9f7159ad2", - "sha256:d5c871cb9360b414f981e7072c52c33258d598305280fef91c6cae34739d65d5" - ], - "version": "==0.16.0" - }, - "keyring": { - "hashes": [ - "sha256:197fd5903901030ef7b82fe247f43cfed2c157a28e7747d1cfcf4bc5e699dd03", - "sha256:8179b1cdcdcbc221456b5b74e6b7cfa06f8dd9f239eb81892166d9223d82c5ba" - ], - "version": "==21.2.0" - }, - "mccabe": { - "hashes": [ - "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", - "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f" - ], - "version": "==0.6.1" - }, - "parso": { - "hashes": [ - "sha256:0c5659e0c6eba20636f99a04f469798dca8da279645ce5c387315b2c23912157", - "sha256:8515fc12cfca6ee3aa59138741fc5624d62340c97e401c74875769948d4f2995" - ], - "version": "==0.6.2" - }, - "pathspec": { - "hashes": [ - "sha256:163b0632d4e31cef212976cf57b43d9fd6b0bac6e67c26015d611a647d5e7424", - "sha256:562aa70af2e0d434367d9790ad37aed893de47f1693e4201fd1d3dca15d19b96" - ], - "version": "==0.7.0" - }, - "pbr": { - "hashes": [ - "sha256:139d2625547dbfa5fb0b81daebb39601c478c21956dc57e2e07b74450a8c506b", - "sha256:61aa52a0f18b71c5cc58232d2cf8f8d09cd67fcad60b742a60124cb8d6951488" - ], - "version": "==5.4.4" - }, - "pexpect": { - "hashes": [ - "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937", - "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c" - ], - "markers": "sys_platform != 'win32'", - "version": "==4.8.0" - }, - "pickleshare": { - "hashes": [ - "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca", - "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56" - ], - "version": "==0.7.5" - }, - "pipenv": { - "hashes": [ - "sha256:56ad5f5cb48f1e58878e14525a6e3129d4306049cb76d2f6a3e95df0d5fc6330", - "sha256:7df8e33a2387de6f537836f48ac6fcd94eda6ed9ba3d5e3fd52e35b5bc7ff49e", - "sha256:a673e606e8452185e9817a987572b55360f4d28b50831ef3b42ac3cab3fee846" - ], - "version": "==2018.11.26" - }, - "pipenv-to-requirements": { - "hashes": [ - "sha256:1c18682a4ec70eb07261d2b558df3ee22ea00192663a1b98fd1e45e22946c163", - "sha256:cb70471a17a7d4658caffe989539413313d51df1b3a54838bcd7e7d3ab3fcc18" - ], - "index": "pypi", - "version": "==0.9.0" - }, - "pkginfo": { - "hashes": [ - "sha256:7424f2c8511c186cd5424bbf31045b77435b37a8d604990b79d4e70d741148bb", - "sha256:a6d9e40ca61ad3ebd0b72fbadd4fba16e4c0e4df0428c041e01e06eb6ee71f32" - ], - "version": "==1.5.0.1" - }, - "precommit": { - "hashes": [ - "sha256:b0a4d47045db0fd23a2999113a93a7de510f567ea8d989360209248cdf0856d1" - ], - "index": "pypi", - "version": "==0.1.1" - }, - "prompt-toolkit": { - "hashes": [ - "sha256:563d1a4140b63ff9dd587bda9557cffb2fe73650205ab6f4383092fb882e7dc8", - "sha256:df7e9e63aea609b1da3a65641ceaf5bc7d05e0a04de5bd45d05dbeffbabf9e04" - ], - "version": "==3.0.5" - }, - "ptyprocess": { - "hashes": [ - "sha256:923f299cc5ad920c68f2bc0bc98b75b9f838b93b599941a6b63ddbc2476394c0", - "sha256:d7cc528d76e76342423ca640335bd3633420dc1366f258cb31d05e865ef5ca1f" - ], - "version": "==0.6.0" - }, - "pycodestyle": { - "hashes": [ - "sha256:95a2219d12372f05704562a14ec30bc76b05a5b297b21a5dfe3f6fac3491ae56", - "sha256:e40a936c9a450ad81df37f549d676d127b1b66000a6c500caa2b085bc0ca976c" - ], - "version": "==2.5.0" - }, - "pyflakes": { - "hashes": [ - "sha256:17dbeb2e3f4d772725c777fabc446d5634d1038f234e77343108ce445ea69ce0", - "sha256:d976835886f8c5b31d47970ed689944a0262b5f3afa00a5a7b4dc81e5449f8a2" - ], - "version": "==2.1.1" - }, - "pygments": { - "hashes": [ - "sha256:647344a061c249a3b74e230c739f434d7ea4d8b1d5f3721bc0f3558049b38f44", - "sha256:ff7a40b4860b727ab48fad6360eb351cc1b33cbf9b15a0f689ca5353e9463324" - ], - "version": "==2.6.1" - }, - "readme-renderer": { - "hashes": [ - "sha256:1b6d8dd1673a0b293766b4106af766b6eff3654605f9c4f239e65de6076bc222", - "sha256:e67d64242f0174a63c3b727801a2fff4c1f38ebe5d71d95ff7ece081945a6cd4" - ], - "version": "==25.0" - }, - "regex": { - "hashes": [ - "sha256:01b2d70cbaed11f72e57c1cfbaca71b02e3b98f739ce33f5f26f71859ad90431", - "sha256:046e83a8b160aff37e7034139a336b660b01dbfe58706f9d73f5cdc6b3460242", - "sha256:113309e819634f499d0006f6200700c8209a2a8bf6bd1bdc863a4d9d6776a5d1", - "sha256:200539b5124bc4721247a823a47d116a7a23e62cc6695744e3eb5454a8888e6d", - "sha256:25f4ce26b68425b80a233ce7b6218743c71cf7297dbe02feab1d711a2bf90045", - "sha256:269f0c5ff23639316b29f31df199f401e4cb87529eafff0c76828071635d417b", - "sha256:5de40649d4f88a15c9489ed37f88f053c15400257eeb18425ac7ed0a4e119400", - "sha256:7f78f963e62a61e294adb6ff5db901b629ef78cb2a1cfce3cf4eeba80c1c67aa", - "sha256:82469a0c1330a4beb3d42568f82dffa32226ced006e0b063719468dcd40ffdf0", - "sha256:8c2b7fa4d72781577ac45ab658da44c7518e6d96e2a50d04ecb0fd8f28b21d69", - "sha256:974535648f31c2b712a6b2595969f8ab370834080e00ab24e5dbb9d19b8bfb74", - "sha256:99272d6b6a68c7ae4391908fc15f6b8c9a6c345a46b632d7fdb7ef6c883a2bbb", - "sha256:9b64a4cc825ec4df262050c17e18f60252cdd94742b4ba1286bcfe481f1c0f26", - "sha256:9e9624440d754733eddbcd4614378c18713d2d9d0dc647cf9c72f64e39671be5", - "sha256:9ff16d994309b26a1cdf666a6309c1ef51ad4f72f99d3392bcd7b7139577a1f2", - "sha256:b33ebcd0222c1d77e61dbcd04a9fd139359bded86803063d3d2d197b796c63ce", - "sha256:bba52d72e16a554d1894a0cc74041da50eea99a8483e591a9edf1025a66843ab", - "sha256:bed7986547ce54d230fd8721aba6fd19459cdc6d315497b98686d0416efaff4e", - "sha256:c7f58a0e0e13fb44623b65b01052dae8e820ed9b8b654bb6296bc9c41f571b70", - "sha256:d58a4fa7910102500722defbde6e2816b0372a4fcc85c7e239323767c74f5cbc", - "sha256:f1ac2dc65105a53c1c2d72b1d3e98c2464a133b4067a51a3d2477b28449709a0" - ], - "version": "==2020.2.20" - }, - "requests": { - "hashes": [ - "sha256:43999036bfa82904b6af1d99e4882b560e5e2c68e5c4b0aa03b655f3d7d73fee", - "sha256:b3f43d496c6daba4493e7c431722aeb7dbc6288f52a6e04e7b6023b0247817e6" - ], - "version": "==2.23.0" - }, - "requests-toolbelt": { - "hashes": [ - "sha256:380606e1d10dc85c3bd47bf5a6095f815ec007be7a8b69c878507068df059e6f", - "sha256:968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0" - ], - "version": "==0.9.1" - }, - "six": { - "hashes": [ - "sha256:0ff78c403d9bccf5a425a6d31a12aa6b47f1c21ca4dc2573a7e2f32a97335eb1", - "sha256:105f8d68616f8248e24bf0e9372ef04d3cc10104f1980f54d57b2ce73a5ad56a" - ], - "index": "pypi", - "version": "==1.10.0" - }, - "toml": { - "hashes": [ - "sha256:229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c", - "sha256:235682dd292d5899d361a811df37e04a8828a5b1da3115886b73cf81ebc9100e" - ], - "version": "==0.10.0" - }, - "tqdm": { - "hashes": [ - "sha256:4f882b23c492e7060f50d83af86f163b67e4cfbe35dfe12077e748c56282f438", - "sha256:f0fc945df434e5e612fb7eb93bf29e924940913590450c3760f198dd75a2cd19" - ], - "version": "==4.44.0" - }, - "traitlets": { - "hashes": [ - "sha256:70b4c6a1d9019d7b4f6846832288f86998aa3b9207c6821f3578a6a6a467fe44", - "sha256:d023ee369ddd2763310e4c3eae1ff649689440d4ae59d7485eb4cfbbe3e359f7" - ], - "version": "==4.3.3" - }, - "twine": { - "hashes": [ - "sha256:c1af8ca391e43b0a06bbc155f7f67db0bf0d19d284bfc88d1675da497a946124", - "sha256:d561a5e511f70275e5a485a6275ff61851c16ffcb3a95a602189161112d9f160" - ], - "index": "pypi", - "version": "==3.1.1" - }, - "typed-ast": { - "hashes": [ - "sha256:0666aa36131496aed8f7be0410ff974562ab7eeac11ef351def9ea6fa28f6355", - "sha256:0c2c07682d61a629b68433afb159376e24e5b2fd4641d35424e462169c0a7919", - "sha256:249862707802d40f7f29f6e1aad8d84b5aa9e44552d2cc17384b209f091276aa", - "sha256:24995c843eb0ad11a4527b026b4dde3da70e1f2d8806c99b7b4a7cf491612652", - "sha256:269151951236b0f9a6f04015a9004084a5ab0d5f19b57de779f908621e7d8b75", - "sha256:4083861b0aa07990b619bd7ddc365eb7fa4b817e99cf5f8d9cf21a42780f6e01", - "sha256:498b0f36cc7054c1fead3d7fc59d2150f4d5c6c56ba7fb150c013fbc683a8d2d", - "sha256:4e3e5da80ccbebfff202a67bf900d081906c358ccc3d5e3c8aea42fdfdfd51c1", - "sha256:6daac9731f172c2a22ade6ed0c00197ee7cc1221aa84cfdf9c31defeb059a907", - "sha256:715ff2f2df46121071622063fc7543d9b1fd19ebfc4f5c8895af64a77a8c852c", - "sha256:73d785a950fc82dd2a25897d525d003f6378d1cb23ab305578394694202a58c3", - "sha256:8c8aaad94455178e3187ab22c8b01a3837f8ee50e09cf31f1ba129eb293ec30b", - "sha256:8ce678dbaf790dbdb3eba24056d5364fb45944f33553dd5869b7580cdbb83614", - "sha256:aaee9905aee35ba5905cfb3c62f3e83b3bec7b39413f0a7f19be4e547ea01ebb", - "sha256:bcd3b13b56ea479b3650b82cabd6b5343a625b0ced5429e4ccad28a8973f301b", - "sha256:c9e348e02e4d2b4a8b2eedb48210430658df6951fa484e59de33ff773fbd4b41", - "sha256:d205b1b46085271b4e15f670058ce182bd1199e56b317bf2ec004b6a44f911f6", - "sha256:d43943ef777f9a1c42bf4e552ba23ac77a6351de620aa9acf64ad54933ad4d34", - "sha256:d5d33e9e7af3b34a40dc05f498939f0ebf187f07c385fd58d591c533ad8562fe", - "sha256:fc0fea399acb12edbf8a628ba8d2312f583bdbdb3335635db062fa98cf71fca4", - "sha256:fe460b922ec15dd205595c9b5b99e2f056fd98ae8f9f56b888e7a17dc2b757e7" - ], - "version": "==1.4.1" - }, - "urllib3": { - "hashes": [ - "sha256:2f3db8b19923a873b3e5256dc9c2dedfa883e33d87c690d9c7913e1f40673cdc", - "sha256:87716c2d2a7121198ebcb7ce7cccf6ce5e9ba539041cfbaeecfb641dc0bf6acc" - ], - "version": "==1.25.8" - }, - "virtualenv": { - "hashes": [ - "sha256:4e399f48c6b71228bf79f5febd27e3bbb753d9d5905776a86667bc61ab628a25", - "sha256:9e81279f4a9d16d1c0654a127c2c86e5bca2073585341691882c1e66e31ef8a5" - ], - "version": "==20.0.15" - }, - "virtualenv-clone": { - "hashes": [ - "sha256:07e74418b7cc64f4fda987bf5bc71ebd59af27a7bc9e8a8ee9fd54b1f2390a27", - "sha256:665e48dd54c84b98b71a657acb49104c54e7652bce9c1c4f6c6976ed4c827a29" - ], - "version": "==0.5.4" - }, - "wcwidth": { - "hashes": [ - "sha256:cafe2186b3c009a04067022ce1dcd79cb38d8d65ee4f4791b8888d6599d1bbe1", - "sha256:ee73862862a156bf77ff92b09034fc4825dd3af9cf81bc5b360668d425f3c5f1" - ], - "version": "==0.1.9" - }, - "webencodings": { - "hashes": [ - "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", - "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923" - ], - "version": "==0.5.1" - }, - "wheel": { - "hashes": [ - "sha256:8788e9155fe14f54164c1b9eb0a319d98ef02c160725587ad60f14ddc57b6f96", - "sha256:df277cb51e61359aba502208d680f90c0493adec6f0e848af94948778aed386e" - ], - "index": "pypi", - "version": "==0.34.2" - } - } -} From 475990c633816933e12adcdf018e424ae7bb9bc1 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 09:42:18 -0400 Subject: [PATCH 069/120] =?UTF-8?q?Bump=20version:=206.0.0=20=E2=86=92=207?= =?UTF-8?q?.0.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index 21b541d8..1975f3b7 100644 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -1,7 +1,7 @@ # flake8: noqa __author__ = "Nick Ficano" __email__ = "nficano@gmail.com" -__version__ = "6.0.0" +__version__ = "7.0.0" from .aws_lambda import ( deploy, diff --git a/setup.cfg b/setup.cfg index ace63af0..ad82d2d1 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 6.0.0 +current_version = 7.0.0 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} diff --git a/setup.py b/setup.py index 3c914e1f..3f24bf78 100755 --- a/setup.py +++ b/setup.py @@ -24,7 +24,7 @@ setup( name="python-lambda", - version="6.0.0", + version="7.0.0", description="The bare minimum for a Python app running on Amazon Lambda.", long_description=readme, author="Nick Ficano", From 81080a3f10a88671f75fcbefa3c6da34fe05363a Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 09:44:20 -0400 Subject: [PATCH 070/120] Cleaned up manifest --- MANIFEST.in | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/MANIFEST.in b/MANIFEST.in index f65748af..0ff2cf52 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,11 +1,5 @@ -include HISTORY.rst include LICENSE -include README.rst -include python/boto/endpoints.json -include aws_lambda/project_template/config.yaml -recursive-include tests *.json *.py *.txt *.yaml +include README.md +recursive-include tests *.py *.txt *.yaml recursive-include templates * -recursive-exclude * __pycache__ recursive-exclude * *.py[co] - -recursive-include docs *.rst conf.py Makefile make.bat From a871a79d5a440e34ee4884ef4c3d528109a1c661 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 09:44:30 -0400 Subject: [PATCH 071/120] Cleaned up manifest --- MANIFEST.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MANIFEST.in b/MANIFEST.in index 0ff2cf52..93485f26 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,5 +1,5 @@ include LICENSE include README.md -recursive-include tests *.py *.txt *.yaml +recursive-include tests *.py *.yaml recursive-include templates * recursive-exclude * *.py[co] From 40acadc118f019f6ce40144b27c529b4b93baa58 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 09:44:34 -0400 Subject: [PATCH 072/120] =?UTF-8?q?Bump=20version:=207.0.0=20=E2=86=92=208?= =?UTF-8?q?.0.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index 1975f3b7..c853610e 100644 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -1,7 +1,7 @@ # flake8: noqa __author__ = "Nick Ficano" __email__ = "nficano@gmail.com" -__version__ = "7.0.0" +__version__ = "8.0.0" from .aws_lambda import ( deploy, diff --git a/setup.cfg b/setup.cfg index ad82d2d1..236d0174 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 7.0.0 +current_version = 8.0.0 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} diff --git a/setup.py b/setup.py index 3f24bf78..1e891042 100755 --- a/setup.py +++ b/setup.py @@ -24,7 +24,7 @@ setup( name="python-lambda", - version="7.0.0", + version="8.0.0", description="The bare minimum for a Python app running on Amazon Lambda.", long_description=readme, author="Nick Ficano", From fe01dcad0295534bfd6976b0636d0a3832e0fc2d Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 09:47:02 -0400 Subject: [PATCH 073/120] Updated old dependancy --- MANIFEST.in | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/MANIFEST.in b/MANIFEST.in index 93485f26..5b88d8e7 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,5 +1,10 @@ include LICENSE include README.md -recursive-include tests *.py *.yaml +recursive-include tests +recursiveinclude *.json +recursive-include *.py +recursive-include *.txt +recursive-include *.yaml recursive-include templates * -recursive-exclude * *.py[co] +recursive-exclude * __pycache__ +recursive-include conf.py From 96f7e2a716ecc32e3d07a842afb538050ffa5055 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 09:47:08 -0400 Subject: [PATCH 074/120] =?UTF-8?q?Bump=20version:=208.0.0=20=E2=86=92=209?= =?UTF-8?q?.0.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index c853610e..c2eecbf4 100644 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -1,7 +1,7 @@ # flake8: noqa __author__ = "Nick Ficano" __email__ = "nficano@gmail.com" -__version__ = "8.0.0" +__version__ = "9.0.0" from .aws_lambda import ( deploy, diff --git a/setup.cfg b/setup.cfg index 236d0174..48c0d3ee 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 8.0.0 +current_version = 9.0.0 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} diff --git a/setup.py b/setup.py index 1e891042..6050baa4 100755 --- a/setup.py +++ b/setup.py @@ -24,7 +24,7 @@ setup( name="python-lambda", - version="8.0.0", + version="9.0.0", description="The bare minimum for a Python app running on Amazon Lambda.", long_description=readme, author="Nick Ficano", From 487aeb444390610d006b9b525326198bd10d9e8a Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 09:57:19 -0400 Subject: [PATCH 075/120] Modernize setup.py --- Pipfile.lock | 515 +++++++++++++++++++++++++++++++++++++++++++++++++++ setup.py | 83 ++++++--- 2 files changed, 569 insertions(+), 29 deletions(-) create mode 100644 Pipfile.lock diff --git a/Pipfile.lock b/Pipfile.lock new file mode 100644 index 00000000..158cff56 --- /dev/null +++ b/Pipfile.lock @@ -0,0 +1,515 @@ +{ + "_meta": { + "hash": { + "sha256": "07666526aa823227b659eb552a293da4ca7ffca2e86ee50efa3e6037ea969bc9" + }, + "pipfile-spec": 6, + "requires": { + "python_version": "3.8" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "boto3": { + "hashes": [ + "sha256:5050c29353fec97301116386f469fa5858ccf47201623b53cf9f74e603bda52f", + "sha256:518f724c4758e5a5bed114fbcbd1cf470a15306d416ff421a025b76f1d390939" + ], + "index": "pypi", + "version": "==1.4.4" + }, + "botocore": { + "hashes": [ + "sha256:79c9347b1333f94372c0c2fea950326b41c83ff16e67298db0a016708fe45be6", + "sha256:9878598a9db8be63788dc1030616d1e5b64e4a9c2d85dba34b4a5c3b6b049fa6" + ], + "index": "pypi", + "version": "==1.5.62" + }, + "click": { + "hashes": [ + "sha256:cc6a19da8ebff6e7074f731447ef7e112bd23adf3de5c597cf9989f2fd8defe9", + "sha256:fcf697e1fd4b567d817c69dab10a4035937fe6af175c05fd6806b69f74cbc6c4" + ], + "index": "pypi", + "version": "==6.6" + }, + "docutils": { + "hashes": [ + "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af", + "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc" + ], + "index": "pypi", + "version": "==0.16" + }, + "jmespath": { + "hashes": [ + "sha256:08dfaa06d4397f283a01e57089f3360e3b52b5b9da91a70e1fd91e9f0cdd3d3d", + "sha256:ade5261b0d7d34b6f53accc91e6881b579b40161ed575e6ac465de5edad32815" + ], + "index": "pypi", + "version": "==0.9.0" + }, + "pyaml": { + "hashes": [ + "sha256:9c54fb5f17b58572c4cef50affea60bb73f445ab153580dac07a12383712b5b8" + ], + "index": "pypi", + "version": "==15.8.2" + }, + "python-dateutil": { + "hashes": [ + "sha256:1408fdb07c6a1fa9997567ce3fcee6a337b39a503d80699e0f213de4aa4b32ed", + "sha256:598499a75be2e5e18a66f12c00dd47a069de24794effeda4228bfc760f44f527", + "sha256:9d94861f04ce14f9a3d835206067c889b8f1244f1415035dadcf9c10066adf04" + ], + "index": "pypi", + "version": "==2.5.3" + }, + "pyyaml": { + "hashes": [ + "sha256:1adecc22f88d38052fb787d959f003811ca858b799590a5eaa70e63dca50308c", + "sha256:436bc774ecf7c103814098159fbb84c2715d25980175292c648f2da143909f95", + "sha256:460a5a4248763f6f37ea225d19d5c205677d8d525f6a83357ca622ed541830c2", + "sha256:5a22a9c84653debfbf198d02fe592c176ea548cccce47553f35f466e15cf2fd4", + "sha256:7a5d3f26b89d688db27822343dfa25c599627bc92093e788956372285c6298ad", + "sha256:9372b04a02080752d9e6f990179a4ab840227c6e2ce15b95e1278456664cf2ba", + "sha256:a5dcbebee834eaddf3fa7366316b880ff4062e4bcc9787b78c7fbb4a26ff2dd1", + "sha256:aee5bab92a176e7cd034e57f46e9df9a9862a71f8f37cad167c6fc74c65f5b4e", + "sha256:c51f642898c0bacd335fc119da60baae0824f2cde95b0330b56c0553439f0673", + "sha256:c68ea4d3ba1705da1e0d85da6684ac657912679a649e8868bd850d2c299cce13", + "sha256:e23d0cc5299223dcc37885dae624f382297717e459ea24053709675a976a3e19" + ], + "index": "pypi", + "version": "==5.1" + }, + "s3transfer": { + "hashes": [ + "sha256:90dc18e028989c609146e241ea153250be451e05ecc0c2832565231dacdf59c1", + "sha256:c7a9ec356982d5e9ab2d4b46391a7d6a950e2b04c472419f5fdec70cc0ada72f" + ], + "version": "==0.1.13" + }, + "six": { + "hashes": [ + "sha256:236bdbdce46e6e6a3d61a337c0f8b763ca1e8717c03b369e87a7ec7ce1319c0a", + "sha256:8f3cd2e254d8f793e7f3d6d9df77b92252b52637291d0f0da013c76ea2724b6c" + ], + "version": "==1.14.0" + } + }, + "develop": { + "appdirs": { + "hashes": [ + "sha256:9e5896d1372858f8dd3344faf4e5014d21849c756c8d5701f78f8a103b372d92", + "sha256:d8b24664561d0d34ddfaec54636d502d7cea6e29c3eaf68f3df6180863e2166e" + ], + "version": "==1.4.3" + }, + "appnope": { + "hashes": [ + "sha256:5b26757dc6f79a3b7dc9fab95359328d5747fcb2409d331ea66d0272b90ab2a0", + "sha256:8b995ffe925347a2138d7ac0fe77155e4311a0ea6d6da4f5128fe4b3cbe5ed71" + ], + "markers": "sys_platform == 'darwin'", + "version": "==0.1.0" + }, + "attrs": { + "hashes": [ + "sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c", + "sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72" + ], + "version": "==19.3.0" + }, + "backcall": { + "hashes": [ + "sha256:38ecd85be2c1e78f77fd91700c76e14667dc21e2713b63876c0eb901196e01e4", + "sha256:bbbf4b1e5cd2bdb08f915895b51081c041bac22394fdfcfdfbe9f14b77c08bf2" + ], + "version": "==0.1.0" + }, + "black": { + "hashes": [ + "sha256:1b30e59be925fafc1ee4565e5e08abef6b03fe455102883820fe5ee2e4734e0b", + "sha256:c2edb73a08e9e0e6f65a0e6af18b059b8b1cdd5bef997d7a0b181df93dc81539" + ], + "index": "pypi", + "version": "==19.10b0" + }, + "bleach": { + "hashes": [ + "sha256:cc8da25076a1fe56c3ac63671e2194458e0c4d9c7becfd52ca251650d517903c", + "sha256:e78e426105ac07026ba098f04de8abe9b6e3e98b5befbf89b51a5ef0a4292b03" + ], + "version": "==3.1.4" + }, + "bumpversion": { + "hashes": [ + "sha256:6744c873dd7aafc24453d8b6a1a0d6d109faf63cd0cd19cb78fd46e74932c77e", + "sha256:6753d9ff3552013e2130f7bc03c1007e24473b4835952679653fb132367bdd57" + ], + "index": "pypi", + "version": "==0.5.3" + }, + "certifi": { + "hashes": [ + "sha256:017c25db2a153ce562900032d5bc68e9f191e44e9a0f762f373977de9df1fbb3", + "sha256:25b64c7da4cd7479594d035c08c2d809eb4aab3a26e5a990ea98cc450c320f1f" + ], + "version": "==2019.11.28" + }, + "chardet": { + "hashes": [ + "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae", + "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691" + ], + "version": "==3.0.4" + }, + "click": { + "hashes": [ + "sha256:cc6a19da8ebff6e7074f731447ef7e112bd23adf3de5c597cf9989f2fd8defe9", + "sha256:fcf697e1fd4b567d817c69dab10a4035937fe6af175c05fd6806b69f74cbc6c4" + ], + "index": "pypi", + "version": "==6.6" + }, + "decorator": { + "hashes": [ + "sha256:41fa54c2a0cc4ba648be4fd43cff00aedf5b9465c9bf18d64325bc225f08f760", + "sha256:e3a62f0520172440ca0dcc823749319382e377f37f140a0b99ef45fecb84bfe7" + ], + "version": "==4.4.2" + }, + "distlib": { + "hashes": [ + "sha256:2e166e231a26b36d6dfe35a48c4464346620f8645ed0ace01ee31822b288de21" + ], + "version": "==0.3.0" + }, + "docutils": { + "hashes": [ + "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af", + "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc" + ], + "index": "pypi", + "version": "==0.16" + }, + "entrypoints": { + "hashes": [ + "sha256:589f874b313739ad35be6e0cd7efde2a4e9b6fea91edcc34e58ecbb8dbe56d19", + "sha256:c70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451" + ], + "version": "==0.3" + }, + "filelock": { + "hashes": [ + "sha256:18d82244ee114f543149c66a6e0c14e9c4f8a1044b5cdaadd0f82159d6a6ff59", + "sha256:929b7d63ec5b7d6b71b0fa5ac14e030b3f70b75747cef1b10da9b879fef15836" + ], + "version": "==3.0.12" + }, + "flake8": { + "hashes": [ + "sha256:45681a117ecc81e870cbf1262835ae4af5e7a8b08e40b944a8a6e6b895914cfb", + "sha256:49356e766643ad15072a789a20915d3c91dc89fd313ccd71802303fd67e4deca" + ], + "index": "pypi", + "version": "==3.7.9" + }, + "idna": { + "hashes": [ + "sha256:7588d1c14ae4c77d74036e8c22ff447b26d0fde8f007354fd48a7814db15b7cb", + "sha256:a068a21ceac8a4d63dbfd964670474107f541babbd2250d61922f029858365fa" + ], + "version": "==2.9" + }, + "ipython": { + "hashes": [ + "sha256:ca478e52ae1f88da0102360e57e528b92f3ae4316aabac80a2cd7f7ab2efb48a", + "sha256:eb8d075de37f678424527b5ef6ea23f7b80240ca031c2dd6de5879d687a65333" + ], + "index": "pypi", + "version": "==7.13.0" + }, + "ipython-genutils": { + "hashes": [ + "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8", + "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8" + ], + "version": "==0.2.0" + }, + "jedi": { + "hashes": [ + "sha256:b4f4052551025c6b0b0b193b29a6ff7bdb74c52450631206c262aef9f7159ad2", + "sha256:d5c871cb9360b414f981e7072c52c33258d598305280fef91c6cae34739d65d5" + ], + "version": "==0.16.0" + }, + "keyring": { + "hashes": [ + "sha256:197fd5903901030ef7b82fe247f43cfed2c157a28e7747d1cfcf4bc5e699dd03", + "sha256:8179b1cdcdcbc221456b5b74e6b7cfa06f8dd9f239eb81892166d9223d82c5ba" + ], + "version": "==21.2.0" + }, + "mccabe": { + "hashes": [ + "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", + "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f" + ], + "version": "==0.6.1" + }, + "parso": { + "hashes": [ + "sha256:0c5659e0c6eba20636f99a04f469798dca8da279645ce5c387315b2c23912157", + "sha256:8515fc12cfca6ee3aa59138741fc5624d62340c97e401c74875769948d4f2995" + ], + "version": "==0.6.2" + }, + "pathspec": { + "hashes": [ + "sha256:163b0632d4e31cef212976cf57b43d9fd6b0bac6e67c26015d611a647d5e7424", + "sha256:562aa70af2e0d434367d9790ad37aed893de47f1693e4201fd1d3dca15d19b96" + ], + "version": "==0.7.0" + }, + "pbr": { + "hashes": [ + "sha256:139d2625547dbfa5fb0b81daebb39601c478c21956dc57e2e07b74450a8c506b", + "sha256:61aa52a0f18b71c5cc58232d2cf8f8d09cd67fcad60b742a60124cb8d6951488" + ], + "version": "==5.4.4" + }, + "pexpect": { + "hashes": [ + "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937", + "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c" + ], + "markers": "sys_platform != 'win32'", + "version": "==4.8.0" + }, + "pickleshare": { + "hashes": [ + "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca", + "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56" + ], + "version": "==0.7.5" + }, + "pipenv": { + "hashes": [ + "sha256:56ad5f5cb48f1e58878e14525a6e3129d4306049cb76d2f6a3e95df0d5fc6330", + "sha256:7df8e33a2387de6f537836f48ac6fcd94eda6ed9ba3d5e3fd52e35b5bc7ff49e", + "sha256:a673e606e8452185e9817a987572b55360f4d28b50831ef3b42ac3cab3fee846" + ], + "version": "==2018.11.26" + }, + "pipenv-to-requirements": { + "hashes": [ + "sha256:1c18682a4ec70eb07261d2b558df3ee22ea00192663a1b98fd1e45e22946c163", + "sha256:cb70471a17a7d4658caffe989539413313d51df1b3a54838bcd7e7d3ab3fcc18" + ], + "index": "pypi", + "version": "==0.9.0" + }, + "pkginfo": { + "hashes": [ + "sha256:7424f2c8511c186cd5424bbf31045b77435b37a8d604990b79d4e70d741148bb", + "sha256:a6d9e40ca61ad3ebd0b72fbadd4fba16e4c0e4df0428c041e01e06eb6ee71f32" + ], + "version": "==1.5.0.1" + }, + "prompt-toolkit": { + "hashes": [ + "sha256:563d1a4140b63ff9dd587bda9557cffb2fe73650205ab6f4383092fb882e7dc8", + "sha256:df7e9e63aea609b1da3a65641ceaf5bc7d05e0a04de5bd45d05dbeffbabf9e04" + ], + "version": "==3.0.5" + }, + "ptyprocess": { + "hashes": [ + "sha256:923f299cc5ad920c68f2bc0bc98b75b9f838b93b599941a6b63ddbc2476394c0", + "sha256:d7cc528d76e76342423ca640335bd3633420dc1366f258cb31d05e865ef5ca1f" + ], + "version": "==0.6.0" + }, + "pycodestyle": { + "hashes": [ + "sha256:95a2219d12372f05704562a14ec30bc76b05a5b297b21a5dfe3f6fac3491ae56", + "sha256:e40a936c9a450ad81df37f549d676d127b1b66000a6c500caa2b085bc0ca976c" + ], + "version": "==2.5.0" + }, + "pyflakes": { + "hashes": [ + "sha256:17dbeb2e3f4d772725c777fabc446d5634d1038f234e77343108ce445ea69ce0", + "sha256:d976835886f8c5b31d47970ed689944a0262b5f3afa00a5a7b4dc81e5449f8a2" + ], + "version": "==2.1.1" + }, + "pygments": { + "hashes": [ + "sha256:647344a061c249a3b74e230c739f434d7ea4d8b1d5f3721bc0f3558049b38f44", + "sha256:ff7a40b4860b727ab48fad6360eb351cc1b33cbf9b15a0f689ca5353e9463324" + ], + "version": "==2.6.1" + }, + "readme-renderer": { + "hashes": [ + "sha256:1b6d8dd1673a0b293766b4106af766b6eff3654605f9c4f239e65de6076bc222", + "sha256:e67d64242f0174a63c3b727801a2fff4c1f38ebe5d71d95ff7ece081945a6cd4" + ], + "version": "==25.0" + }, + "regex": { + "hashes": [ + "sha256:01b2d70cbaed11f72e57c1cfbaca71b02e3b98f739ce33f5f26f71859ad90431", + "sha256:046e83a8b160aff37e7034139a336b660b01dbfe58706f9d73f5cdc6b3460242", + "sha256:113309e819634f499d0006f6200700c8209a2a8bf6bd1bdc863a4d9d6776a5d1", + "sha256:200539b5124bc4721247a823a47d116a7a23e62cc6695744e3eb5454a8888e6d", + "sha256:25f4ce26b68425b80a233ce7b6218743c71cf7297dbe02feab1d711a2bf90045", + "sha256:269f0c5ff23639316b29f31df199f401e4cb87529eafff0c76828071635d417b", + "sha256:5de40649d4f88a15c9489ed37f88f053c15400257eeb18425ac7ed0a4e119400", + "sha256:7f78f963e62a61e294adb6ff5db901b629ef78cb2a1cfce3cf4eeba80c1c67aa", + "sha256:82469a0c1330a4beb3d42568f82dffa32226ced006e0b063719468dcd40ffdf0", + "sha256:8c2b7fa4d72781577ac45ab658da44c7518e6d96e2a50d04ecb0fd8f28b21d69", + "sha256:974535648f31c2b712a6b2595969f8ab370834080e00ab24e5dbb9d19b8bfb74", + "sha256:99272d6b6a68c7ae4391908fc15f6b8c9a6c345a46b632d7fdb7ef6c883a2bbb", + "sha256:9b64a4cc825ec4df262050c17e18f60252cdd94742b4ba1286bcfe481f1c0f26", + "sha256:9e9624440d754733eddbcd4614378c18713d2d9d0dc647cf9c72f64e39671be5", + "sha256:9ff16d994309b26a1cdf666a6309c1ef51ad4f72f99d3392bcd7b7139577a1f2", + "sha256:b33ebcd0222c1d77e61dbcd04a9fd139359bded86803063d3d2d197b796c63ce", + "sha256:bba52d72e16a554d1894a0cc74041da50eea99a8483e591a9edf1025a66843ab", + "sha256:bed7986547ce54d230fd8721aba6fd19459cdc6d315497b98686d0416efaff4e", + "sha256:c7f58a0e0e13fb44623b65b01052dae8e820ed9b8b654bb6296bc9c41f571b70", + "sha256:d58a4fa7910102500722defbde6e2816b0372a4fcc85c7e239323767c74f5cbc", + "sha256:f1ac2dc65105a53c1c2d72b1d3e98c2464a133b4067a51a3d2477b28449709a0" + ], + "version": "==2020.2.20" + }, + "requests": { + "hashes": [ + "sha256:43999036bfa82904b6af1d99e4882b560e5e2c68e5c4b0aa03b655f3d7d73fee", + "sha256:b3f43d496c6daba4493e7c431722aeb7dbc6288f52a6e04e7b6023b0247817e6" + ], + "version": "==2.23.0" + }, + "requests-toolbelt": { + "hashes": [ + "sha256:380606e1d10dc85c3bd47bf5a6095f815ec007be7a8b69c878507068df059e6f", + "sha256:968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0" + ], + "version": "==0.9.1" + }, + "six": { + "hashes": [ + "sha256:236bdbdce46e6e6a3d61a337c0f8b763ca1e8717c03b369e87a7ec7ce1319c0a", + "sha256:8f3cd2e254d8f793e7f3d6d9df77b92252b52637291d0f0da013c76ea2724b6c" + ], + "version": "==1.14.0" + }, + "toml": { + "hashes": [ + "sha256:229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c", + "sha256:235682dd292d5899d361a811df37e04a8828a5b1da3115886b73cf81ebc9100e" + ], + "version": "==0.10.0" + }, + "tqdm": { + "hashes": [ + "sha256:4f882b23c492e7060f50d83af86f163b67e4cfbe35dfe12077e748c56282f438", + "sha256:f0fc945df434e5e612fb7eb93bf29e924940913590450c3760f198dd75a2cd19" + ], + "version": "==4.44.0" + }, + "traitlets": { + "hashes": [ + "sha256:70b4c6a1d9019d7b4f6846832288f86998aa3b9207c6821f3578a6a6a467fe44", + "sha256:d023ee369ddd2763310e4c3eae1ff649689440d4ae59d7485eb4cfbbe3e359f7" + ], + "version": "==4.3.3" + }, + "twine": { + "hashes": [ + "sha256:c1af8ca391e43b0a06bbc155f7f67db0bf0d19d284bfc88d1675da497a946124", + "sha256:d561a5e511f70275e5a485a6275ff61851c16ffcb3a95a602189161112d9f160" + ], + "index": "pypi", + "version": "==3.1.1" + }, + "typed-ast": { + "hashes": [ + "sha256:0666aa36131496aed8f7be0410ff974562ab7eeac11ef351def9ea6fa28f6355", + "sha256:0c2c07682d61a629b68433afb159376e24e5b2fd4641d35424e462169c0a7919", + "sha256:249862707802d40f7f29f6e1aad8d84b5aa9e44552d2cc17384b209f091276aa", + "sha256:24995c843eb0ad11a4527b026b4dde3da70e1f2d8806c99b7b4a7cf491612652", + "sha256:269151951236b0f9a6f04015a9004084a5ab0d5f19b57de779f908621e7d8b75", + "sha256:4083861b0aa07990b619bd7ddc365eb7fa4b817e99cf5f8d9cf21a42780f6e01", + "sha256:498b0f36cc7054c1fead3d7fc59d2150f4d5c6c56ba7fb150c013fbc683a8d2d", + "sha256:4e3e5da80ccbebfff202a67bf900d081906c358ccc3d5e3c8aea42fdfdfd51c1", + "sha256:6daac9731f172c2a22ade6ed0c00197ee7cc1221aa84cfdf9c31defeb059a907", + "sha256:715ff2f2df46121071622063fc7543d9b1fd19ebfc4f5c8895af64a77a8c852c", + "sha256:73d785a950fc82dd2a25897d525d003f6378d1cb23ab305578394694202a58c3", + "sha256:8c8aaad94455178e3187ab22c8b01a3837f8ee50e09cf31f1ba129eb293ec30b", + "sha256:8ce678dbaf790dbdb3eba24056d5364fb45944f33553dd5869b7580cdbb83614", + "sha256:aaee9905aee35ba5905cfb3c62f3e83b3bec7b39413f0a7f19be4e547ea01ebb", + "sha256:bcd3b13b56ea479b3650b82cabd6b5343a625b0ced5429e4ccad28a8973f301b", + "sha256:c9e348e02e4d2b4a8b2eedb48210430658df6951fa484e59de33ff773fbd4b41", + "sha256:d205b1b46085271b4e15f670058ce182bd1199e56b317bf2ec004b6a44f911f6", + "sha256:d43943ef777f9a1c42bf4e552ba23ac77a6351de620aa9acf64ad54933ad4d34", + "sha256:d5d33e9e7af3b34a40dc05f498939f0ebf187f07c385fd58d591c533ad8562fe", + "sha256:fc0fea399acb12edbf8a628ba8d2312f583bdbdb3335635db062fa98cf71fca4", + "sha256:fe460b922ec15dd205595c9b5b99e2f056fd98ae8f9f56b888e7a17dc2b757e7" + ], + "version": "==1.4.1" + }, + "urllib3": { + "hashes": [ + "sha256:2f3db8b19923a873b3e5256dc9c2dedfa883e33d87c690d9c7913e1f40673cdc", + "sha256:87716c2d2a7121198ebcb7ce7cccf6ce5e9ba539041cfbaeecfb641dc0bf6acc" + ], + "version": "==1.25.8" + }, + "virtualenv": { + "hashes": [ + "sha256:4e399f48c6b71228bf79f5febd27e3bbb753d9d5905776a86667bc61ab628a25", + "sha256:9e81279f4a9d16d1c0654a127c2c86e5bca2073585341691882c1e66e31ef8a5" + ], + "version": "==20.0.15" + }, + "virtualenv-clone": { + "hashes": [ + "sha256:07e74418b7cc64f4fda987bf5bc71ebd59af27a7bc9e8a8ee9fd54b1f2390a27", + "sha256:665e48dd54c84b98b71a657acb49104c54e7652bce9c1c4f6c6976ed4c827a29" + ], + "version": "==0.5.4" + }, + "wcwidth": { + "hashes": [ + "sha256:cafe2186b3c009a04067022ce1dcd79cb38d8d65ee4f4791b8888d6599d1bbe1", + "sha256:ee73862862a156bf77ff92b09034fc4825dd3af9cf81bc5b360668d425f3c5f1" + ], + "version": "==0.1.9" + }, + "webencodings": { + "hashes": [ + "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", + "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923" + ], + "version": "==0.5.1" + }, + "wheel": { + "hashes": [ + "sha256:8788e9155fe14f54164c1b9eb0a319d98ef02c160725587ad60f14ddc57b6f96", + "sha256:df277cb51e61359aba502208d680f90c0493adec6f0e848af94948778aed386e" + ], + "index": "pypi", + "version": "==0.34.2" + } + } +} diff --git a/setup.py b/setup.py index 6050baa4..b3866110 100755 --- a/setup.py +++ b/setup.py @@ -1,46 +1,66 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- +"""This module contains setup instructions for python-lambda.""" +import codecs +import os import sys +from shutil import rmtree from setuptools import find_packages +from setuptools import Command from setuptools import setup -with open("README.md") as readme_file: - readme = readme_file.read() +THIS_DIR = os.path.abspath(os.path.dirname(__file__)) +README = os.path.join(THIS_DIR, "README.md") -requirements = [ - "boto3", - "click", - "PyYAML", -] +with codecs.open(README, encoding="utf-8") as fh: + long_description = "\n" + fh.read() -# Only install futures package if using a Python version <= 2.7 -if sys.version_info < (3, 0): - requirements.append("futures") -test_requirements = [ - # TODO: put package test requirements here -] +class UploadCommand(Command): + """Support setup.py publish.""" + + description = "Build and publish the package." + user_options = [] + + @staticmethod + def status(s): + """Print in bold.""" + print(f"\033[1m{s}\033[0m") + + def initialize_options(self): + """Initialize options.""" + pass + + def finalize_options(self): + """Finialize options.""" + pass + + def run(self): + """Upload release to Pypi.""" + try: + self.status("Removing previous builds ...") + rmtree(os.path.join(THIS_DIR, "dist")) + except Exception: + pass + self.status("Building Source distribution ...") + os.system(f"{sys.executable} setup.py sdist") + self.status("Uploading the package to PyPI via Twine ...") + os.system("twine upload dist/*") + sys.exit() + +package_data = { + "aws_lambda": ["project_templates/*"], + "": ["*.json"], +} setup( name="python-lambda", version="9.0.0", - description="The bare minimum for a Python app running on Amazon Lambda.", - long_description=readme, author="Nick Ficano", author_email="nficano@gmail.com", - url="https://github.com/nficano/python-lambda", packages=find_packages(), - package_data={ - "aws_lambda": ["project_templates/*"], - "": ["*.json"], - }, # noqa - include_package_data=True, - scripts=["scripts/lambda"], - install_requires=requirements, + url="https://github.com/nficano/python-lambda", license="ISCL", - zip_safe=False, - keywords="python-lambda", + package_data=package_data, classifiers=[ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", @@ -51,6 +71,11 @@ "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", ], - test_suite="tests", - tests_require=test_requirements, + description="The bare minimum for a Python app running on Amazon Lambda.", + include_package_data=True, + long_description_content_type="text/markdown", + long_description=long_description, + zip_safe=True, + cmdclass={"upload": UploadCommand}, + scripts=["scripts/lambda"], ) From 55829f9dd961583123426a193789227c54008df9 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 09:57:24 -0400 Subject: [PATCH 076/120] =?UTF-8?q?Bump=20version:=209.0.0=20=E2=86=92=201?= =?UTF-8?q?0.0.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index c2eecbf4..286edbb5 100644 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -1,7 +1,7 @@ # flake8: noqa __author__ = "Nick Ficano" __email__ = "nficano@gmail.com" -__version__ = "9.0.0" +__version__ = "10.0.0" from .aws_lambda import ( deploy, diff --git a/setup.cfg b/setup.cfg index 48c0d3ee..2ce519fb 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 9.0.0 +current_version = 10.0.0 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} diff --git a/setup.py b/setup.py index b3866110..571ffab3 100755 --- a/setup.py +++ b/setup.py @@ -54,7 +54,7 @@ def run(self): setup( name="python-lambda", - version="9.0.0", + version="10.0.0", author="Nick Ficano", author_email="nficano@gmail.com", packages=find_packages(), From dc7ef8cae72efd95587ffc40ca927f440c687a24 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 10:17:37 -0400 Subject: [PATCH 077/120] Updated README --- README.md | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 53772595..1fccf057 100644 --- a/README.md +++ b/README.md @@ -218,25 +218,25 @@ Contributions in the form of patches, tests and feature creation and/or requests are very welcome and highly encouraged. Please open an issue if this tool does not function as you'd expect. - -### How to release updates -If this is the first time you're releasing to pypi, -you'll need to run: ``pip install -r tests/dev_requirements.txt``. - -Once complete, execute the following commands: - -```bash -git checkout master - -# Increment the version number and tag the release. -bumpversion [major|minor|patch] - -# Upload the distribution to PyPi -python setup.py sdist bdist_wheel upload - -# Since master often contains work-in-progress changes, increment the version -# to a patch release to prevent inaccurate attribution. -bumpversion --no-tag patch - -git push origin master --tags -``` +### Environment Setup +1. [Install pipenv](https://github.com/pypa/pipenv) +2. [Install direnv](https://direnv.net/) +3. [Install Precommit](https://pre-commit.com/#install) (optional but preferred) +4. ``cd`` into the project and enter "direnv allow" when prompted. This will begin + installing all the development dependancies. +5. If you installed pre-commit, run ``pre-commit install`` inside the project + directory to setup the githooks. + +### Releasing to Pypi +Once you pushed your chances to master, run **one** of the following: + + ```sh + # If you're installing a major release: + make deploy-major + + # If you're installing a minor release: + make deploy-minor + +# If you're installing a patch release: +make deploy-patch + ``` From a6923704fba2c8a22ef10be2bb6e12dfdd24c889 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 11:25:58 -0400 Subject: [PATCH 078/120] fix setup.py --- setup.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/setup.py b/setup.py index 571ffab3..dbbea934 100755 --- a/setup.py +++ b/setup.py @@ -8,6 +8,15 @@ from setuptools import Command from setuptools import setup +REQUIREMENTS = [ + "boto3", + "click", + "PyYAML", +] +PACKAGE_DATA = { + "aws_lambda": ["project_templates/*"], + "": ["*.json"], +} THIS_DIR = os.path.abspath(os.path.dirname(__file__)) README = os.path.join(THIS_DIR, "README.md") @@ -47,10 +56,6 @@ def run(self): os.system("twine upload dist/*") sys.exit() -package_data = { - "aws_lambda": ["project_templates/*"], - "": ["*.json"], -} setup( name="python-lambda", @@ -60,7 +65,10 @@ def run(self): packages=find_packages(), url="https://github.com/nficano/python-lambda", license="ISCL", - package_data=package_data, + package_data=PACKAGE_DATA, + test_suite="tests", + tests_require=[], + install_requires=REQUIREMENTS, classifiers=[ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", From b905c89362849ea258c9c5f5be275f6fb1dd3dec Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 11:26:02 -0400 Subject: [PATCH 079/120] =?UTF-8?q?Bump=20version:=2010.0.0=20=E2=86=92=20?= =?UTF-8?q?10.0.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index 286edbb5..500f0b2f 100644 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -1,7 +1,7 @@ # flake8: noqa __author__ = "Nick Ficano" __email__ = "nficano@gmail.com" -__version__ = "10.0.0" +__version__ = "10.0.1" from .aws_lambda import ( deploy, diff --git a/setup.cfg b/setup.cfg index 2ce519fb..723f2e7a 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 10.0.0 +current_version = 10.0.1 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} diff --git a/setup.py b/setup.py index dbbea934..d164dc75 100755 --- a/setup.py +++ b/setup.py @@ -59,7 +59,7 @@ def run(self): setup( name="python-lambda", - version="10.0.0", + version="10.0.1", author="Nick Ficano", author_email="nficano@gmail.com", packages=find_packages(), From e494ee98bcb951f1439152763d9bb5f6d99c968e Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 11:27:35 -0400 Subject: [PATCH 080/120] fix travis --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 7d9c1f85..7ccdcc12 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,9 +1,9 @@ language: python python: - - "2.7" - - "3.4" - "3.5" - "3.6" + - "3.7" + - "3.8" install: - pip install -r requirements.txt - pip install -r tests/dev_requirements.txt From be9892da856f2e8434a7a754d68cbb889a0f8507 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 11:27:46 -0400 Subject: [PATCH 081/120] =?UTF-8?q?Bump=20version:=2010.0.1=20=E2=86=92=20?= =?UTF-8?q?10.0.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index 500f0b2f..0fa4ecf9 100644 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -1,7 +1,7 @@ # flake8: noqa __author__ = "Nick Ficano" __email__ = "nficano@gmail.com" -__version__ = "10.0.1" +__version__ = "10.0.2" from .aws_lambda import ( deploy, diff --git a/setup.cfg b/setup.cfg index 723f2e7a..bfb64018 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 10.0.1 +current_version = 10.0.2 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} diff --git a/setup.py b/setup.py index d164dc75..84d6906b 100755 --- a/setup.py +++ b/setup.py @@ -59,7 +59,7 @@ def run(self): setup( name="python-lambda", - version="10.0.1", + version="10.0.2", author="Nick Ficano", author_email="nficano@gmail.com", packages=find_packages(), From 7efaf792c8391ee810e464f7449a9fd3dfe25e55 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 11:33:50 -0400 Subject: [PATCH 082/120] fix manifest --- MANIFEST.in | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/MANIFEST.in b/MANIFEST.in index 5b88d8e7..f65748af 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,10 +1,11 @@ +include HISTORY.rst include LICENSE -include README.md -recursive-include tests -recursiveinclude *.json -recursive-include *.py -recursive-include *.txt -recursive-include *.yaml +include README.rst +include python/boto/endpoints.json +include aws_lambda/project_template/config.yaml +recursive-include tests *.json *.py *.txt *.yaml recursive-include templates * recursive-exclude * __pycache__ -recursive-include conf.py +recursive-exclude * *.py[co] + +recursive-include docs *.rst conf.py Makefile make.bat From c1f52e6dba46d17d18b2d5a2acb369f070ecbce3 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 11:34:01 -0400 Subject: [PATCH 083/120] =?UTF-8?q?Bump=20version:=2010.0.2=20=E2=86=92=20?= =?UTF-8?q?10.0.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index 0fa4ecf9..eb64d78f 100644 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -1,7 +1,7 @@ # flake8: noqa __author__ = "Nick Ficano" __email__ = "nficano@gmail.com" -__version__ = "10.0.2" +__version__ = "10.0.3" from .aws_lambda import ( deploy, diff --git a/setup.cfg b/setup.cfg index bfb64018..a1ad3461 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 10.0.2 +current_version = 10.0.3 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} diff --git a/setup.py b/setup.py index 84d6906b..e1804a8c 100755 --- a/setup.py +++ b/setup.py @@ -59,7 +59,7 @@ def run(self): setup( name="python-lambda", - version="10.0.2", + version="10.0.3", author="Nick Ficano", author_email="nficano@gmail.com", packages=find_packages(), From 68ad7f6be26094b4c1a121b7e0e269c282969e21 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 11:40:20 -0400 Subject: [PATCH 084/120] fix manifest --- MANIFEST.in | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/MANIFEST.in b/MANIFEST.in index f65748af..3a8f5aa3 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,11 +1,11 @@ -include HISTORY.rst +include requirements.txt include LICENSE -include README.rst +include README.md include python/boto/endpoints.json +include *.txt include aws_lambda/project_template/config.yaml recursive-include tests *.json *.py *.txt *.yaml recursive-include templates * recursive-exclude * __pycache__ -recursive-exclude * *.py[co] -recursive-include docs *.rst conf.py Makefile make.bat +recursive-include docs *.md conf.py Makefile make.bat From 769b26c2c879e4cc6370a71d57112cbf4bd5b108 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 11:40:35 -0400 Subject: [PATCH 085/120] =?UTF-8?q?Bump=20version:=2010.0.3=20=E2=86=92=20?= =?UTF-8?q?10.0.4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index eb64d78f..951878db 100644 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -1,7 +1,7 @@ # flake8: noqa __author__ = "Nick Ficano" __email__ = "nficano@gmail.com" -__version__ = "10.0.3" +__version__ = "10.0.4" from .aws_lambda import ( deploy, diff --git a/setup.cfg b/setup.cfg index a1ad3461..83e76e2e 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 10.0.3 +current_version = 10.0.4 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} diff --git a/setup.py b/setup.py index e1804a8c..f357e9ac 100755 --- a/setup.py +++ b/setup.py @@ -59,7 +59,7 @@ def run(self): setup( name="python-lambda", - version="10.0.3", + version="10.0.4", author="Nick Ficano", author_email="nficano@gmail.com", packages=find_packages(), From 30a74e746a4500e66d56f80d0ef855fe4f73e562 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 11:57:01 -0400 Subject: [PATCH 086/120] fix build --- .travis.yml | 15 ++++++-- Makefile | 14 +++++-- Pipfile | 3 ++ Pipfile.lock | 103 ++++++++++++++++++++++++++++++++++++++++++++++++++- setup.py | 6 --- 5 files changed, 126 insertions(+), 15 deletions(-) diff --git a/.travis.yml b/.travis.yml index 7ccdcc12..8f2a274d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,10 +1,17 @@ language: python +cache: + - apt + - pip python: - "3.5" - "3.6" - "3.7" - "3.8" -install: - - pip install -r requirements.txt - - pip install -r tests/dev_requirements.txt -script: pytest +before_install: + - pip install pipenv --upgrade +script: + - pipenv + - pytest +sudo: false +notifications: + slack: watchcloud:rNoT5kJJakPqwLSKuev6oa4C diff --git a/Makefile b/Makefile index d94ffdd1..c8f4dc8f 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,10 @@ dev: pipenv install --dev +pipenv: + pip install pipenv + pipenv install --dev + deploy-patch: requirements bumpversion-patch sdist bdist wheels upload clean deploy-minor: requirements bumpversion-minor sdist bdist wheels upload clean @@ -19,8 +23,6 @@ bdist: requirements wheels: requirements python setup.py bdist_wheel -clean: clean-build clean-pyc - bumpversion-patch: bumpversion patch git push @@ -36,8 +38,7 @@ bumpversion-major: git push git push --tags -upload: - python setup.py sdist bdist bdist_wheel upload +clean: clean-build clean-pyc clean-build: rm -fr build/ @@ -53,3 +54,8 @@ clean-pyc: find . -name '*~' -exec rm -f {} + find . -name '__pycache__' -exec rm -fr {} + find . -name '.pytest_cache' -exec rm -fr {} + + find . -name '.mypy_cache' -exec rm -fr {} + + +upload: clean + python setup.py sdist bdist_wheel + twine upload dist/* diff --git a/Pipfile b/Pipfile index 04fce9be..a809285a 100644 --- a/Pipfile +++ b/Pipfile @@ -11,6 +11,9 @@ black = "*" bumpversion = "*" pipenv-to-requirements = "*" wheel = "*" +pytest = "*" +codecov = "*" +coveralls = "*" [packages] boto3 = "==1.4.4" diff --git a/Pipfile.lock b/Pipfile.lock index 158cff56..b223a095 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "07666526aa823227b659eb552a293da4ca7ffca2e86ee50efa3e6037ea969bc9" + "sha256": "b7f85451ae1f20d8de53012c81c8edb43936f51079f69b08fb6b36021443f33e" }, "pipfile-spec": 6, "requires": { @@ -179,6 +179,58 @@ "index": "pypi", "version": "==6.6" }, + "codecov": { + "hashes": [ + "sha256:09fb045eb044a619cd2b9dacd7789ae8e322cb7f18196378579fd8d883e6b665", + "sha256:aeeefa3a03cac8a78e4f988e935b51a4689bb1f17f20d4e827807ee11135f845" + ], + "index": "pypi", + "version": "==2.0.22" + }, + "coverage": { + "hashes": [ + "sha256:03f630aba2b9b0d69871c2e8d23a69b7fe94a1e2f5f10df5049c0df99db639a0", + "sha256:046a1a742e66d065d16fb564a26c2a15867f17695e7f3d358d7b1ad8a61bca30", + "sha256:0a907199566269e1cfa304325cc3b45c72ae341fbb3253ddde19fa820ded7a8b", + "sha256:165a48268bfb5a77e2d9dbb80de7ea917332a79c7adb747bd005b3a07ff8caf0", + "sha256:1b60a95fc995649464e0cd48cecc8288bac5f4198f21d04b8229dc4097d76823", + "sha256:1f66cf263ec77af5b8fe14ef14c5e46e2eb4a795ac495ad7c03adc72ae43fafe", + "sha256:2e08c32cbede4a29e2a701822291ae2bc9b5220a971bba9d1e7615312efd3037", + "sha256:3844c3dab800ca8536f75ae89f3cf566848a3eb2af4d9f7b1103b4f4f7a5dad6", + "sha256:408ce64078398b2ee2ec08199ea3fcf382828d2f8a19c5a5ba2946fe5ddc6c31", + "sha256:443be7602c790960b9514567917af538cac7807a7c0c0727c4d2bbd4014920fd", + "sha256:4482f69e0701139d0f2c44f3c395d1d1d37abd81bfafbf9b6efbe2542679d892", + "sha256:4a8a259bf990044351baf69d3b23e575699dd60b18460c71e81dc565f5819ac1", + "sha256:513e6526e0082c59a984448f4104c9bf346c2da9961779ede1fc458e8e8a1f78", + "sha256:5f587dfd83cb669933186661a351ad6fc7166273bc3e3a1531ec5c783d997aac", + "sha256:62061e87071497951155cbccee487980524d7abea647a1b2a6eb6b9647df9006", + "sha256:641e329e7f2c01531c45c687efcec8aeca2a78a4ff26d49184dce3d53fc35014", + "sha256:65a7e00c00472cd0f59ae09d2fb8a8aaae7f4a0cf54b2b74f3138d9f9ceb9cb2", + "sha256:6ad6ca45e9e92c05295f638e78cd42bfaaf8ee07878c9ed73e93190b26c125f7", + "sha256:73aa6e86034dad9f00f4bbf5a666a889d17d79db73bc5af04abd6c20a014d9c8", + "sha256:7c9762f80a25d8d0e4ab3cb1af5d9dffbddb3ee5d21c43e3474c84bf5ff941f7", + "sha256:85596aa5d9aac1bf39fe39d9fa1051b0f00823982a1de5766e35d495b4a36ca9", + "sha256:86a0ea78fd851b313b2e712266f663e13b6bc78c2fb260b079e8b67d970474b1", + "sha256:8a620767b8209f3446197c0e29ba895d75a1e272a36af0786ec70fe7834e4307", + "sha256:922fb9ef2c67c3ab20e22948dcfd783397e4c043a5c5fa5ff5e9df5529074b0a", + "sha256:9fad78c13e71546a76c2f8789623eec8e499f8d2d799f4b4547162ce0a4df435", + "sha256:a37c6233b28e5bc340054cf6170e7090a4e85069513320275a4dc929144dccf0", + "sha256:c3fc325ce4cbf902d05a80daa47b645d07e796a80682c1c5800d6ac5045193e5", + "sha256:cda33311cb9fb9323958a69499a667bd728a39a7aa4718d7622597a44c4f1441", + "sha256:db1d4e38c9b15be1521722e946ee24f6db95b189d1447fa9ff18dd16ba89f732", + "sha256:eda55e6e9ea258f5e4add23bcf33dc53b2c319e70806e180aecbff8d90ea24de", + "sha256:f372cdbb240e09ee855735b9d85e7f50730dcfb6296b74b95a3e5dea0615c4c1" + ], + "version": "==5.0.4" + }, + "coveralls": { + "hashes": [ + "sha256:4b6bfc2a2a77b890f556bc631e35ba1ac21193c356393b66c84465c06218e135", + "sha256:67188c7ec630c5f708c31552f2bcdac4580e172219897c4136504f14b823132f" + ], + "index": "pypi", + "version": "==1.11.1" + }, "decorator": { "hashes": [ "sha256:41fa54c2a0cc4ba648be4fd43cff00aedf5b9465c9bf18d64325bc225f08f760", @@ -192,6 +244,12 @@ ], "version": "==0.3.0" }, + "docopt": { + "hashes": [ + "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491" + ], + "version": "==0.6.2" + }, "docutils": { "hashes": [ "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af", @@ -265,6 +323,20 @@ ], "version": "==0.6.1" }, + "more-itertools": { + "hashes": [ + "sha256:5dd8bcf33e5f9513ffa06d5ad33d78f31e1931ac9a18f33d37e77a180d393a7c", + "sha256:b1ddb932186d8a6ac451e1d95844b382f55e12686d51ca0c68b6f61f2ab7a507" + ], + "version": "==8.2.0" + }, + "packaging": { + "hashes": [ + "sha256:3c292b474fda1671ec57d46d739d072bfd495a4f51ad01a055121d81e952b7a3", + "sha256:82f77b9bee21c1bafbf35a84905d604d5d1223801d639cf3ed140bd651c08752" + ], + "version": "==20.3" + }, "parso": { "hashes": [ "sha256:0c5659e0c6eba20636f99a04f469798dca8da279645ce5c387315b2c23912157", @@ -324,6 +396,13 @@ ], "version": "==1.5.0.1" }, + "pluggy": { + "hashes": [ + "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0", + "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d" + ], + "version": "==0.13.1" + }, "prompt-toolkit": { "hashes": [ "sha256:563d1a4140b63ff9dd587bda9557cffb2fe73650205ab6f4383092fb882e7dc8", @@ -338,6 +417,13 @@ ], "version": "==0.6.0" }, + "py": { + "hashes": [ + "sha256:5e27081401262157467ad6e7f851b7aa402c5852dbcb3dae06768434de5752aa", + "sha256:c20fdd83a5dbc0af9efd622bee9a5564e278f6380fffcacc43ba6f43db2813b0" + ], + "version": "==1.8.1" + }, "pycodestyle": { "hashes": [ "sha256:95a2219d12372f05704562a14ec30bc76b05a5b297b21a5dfe3f6fac3491ae56", @@ -359,6 +445,21 @@ ], "version": "==2.6.1" }, + "pyparsing": { + "hashes": [ + "sha256:4c830582a84fb022400b85429791bc551f1f4871c33f23e44f353119e92f969f", + "sha256:c342dccb5250c08d45fd6f8b4a559613ca603b57498511740e65cd11a2e7dcec" + ], + "version": "==2.4.6" + }, + "pytest": { + "hashes": [ + "sha256:0e5b30f5cb04e887b91b1ee519fa3d89049595f428c1db76e73bd7f17b09b172", + "sha256:84dde37075b8805f3d1f392cc47e38a0e59518fb46a431cfdaf7cf1ce805f970" + ], + "index": "pypi", + "version": "==5.4.1" + }, "readme-renderer": { "hashes": [ "sha256:1b6d8dd1673a0b293766b4106af766b6eff3654605f9c4f239e65de6076bc222", diff --git a/setup.py b/setup.py index f357e9ac..0a18242d 100755 --- a/setup.py +++ b/setup.py @@ -8,11 +8,6 @@ from setuptools import Command from setuptools import setup -REQUIREMENTS = [ - "boto3", - "click", - "PyYAML", -] PACKAGE_DATA = { "aws_lambda": ["project_templates/*"], "": ["*.json"], @@ -68,7 +63,6 @@ def run(self): package_data=PACKAGE_DATA, test_suite="tests", tests_require=[], - install_requires=REQUIREMENTS, classifiers=[ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", From 23d095e0862b4946b146ef4cfe713f27c2267a41 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 11:58:44 -0400 Subject: [PATCH 087/120] added pytest-cov --- Pipfile | 1 + Pipfile.lock | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/Pipfile b/Pipfile index a809285a..d15a3729 100644 --- a/Pipfile +++ b/Pipfile @@ -14,6 +14,7 @@ wheel = "*" pytest = "*" codecov = "*" coveralls = "*" +pytest-cov = "*" [packages] boto3 = "==1.4.4" diff --git a/Pipfile.lock b/Pipfile.lock index b223a095..e844ea21 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "b7f85451ae1f20d8de53012c81c8edb43936f51079f69b08fb6b36021443f33e" + "sha256": "38f19dcadebb28a56d2de2806a5b1fd413fc824591f7982b534b6869df056d73" }, "pipfile-spec": 6, "requires": { @@ -460,6 +460,14 @@ "index": "pypi", "version": "==5.4.1" }, + "pytest-cov": { + "hashes": [ + "sha256:cc6742d8bac45070217169f5f72ceee1e0e55b0221f54bcf24845972d3a47f2b", + "sha256:cdbdef4f870408ebdbfeb44e63e07eb18bb4619fae852f6e760645fa36172626" + ], + "index": "pypi", + "version": "==2.8.1" + }, "readme-renderer": { "hashes": [ "sha256:1b6d8dd1673a0b293766b4106af766b6eff3654605f9c4f239e65de6076bc222", @@ -523,10 +531,10 @@ }, "tqdm": { "hashes": [ - "sha256:4f882b23c492e7060f50d83af86f163b67e4cfbe35dfe12077e748c56282f438", - "sha256:f0fc945df434e5e612fb7eb93bf29e924940913590450c3760f198dd75a2cd19" + "sha256:03d2366c64d44c7f61e74c700d9b202d57e9efe355ea5c28814c52bfe7a50b8c", + "sha256:be5ddeec77d78ba781ea41eacb2358a77f74cc2407f54b82222d7ee7dc8c8ccf" ], - "version": "==4.44.0" + "version": "==4.44.1" }, "traitlets": { "hashes": [ From 26099ba953eb383347efbf371bfeee93f344da14 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 11:58:52 -0400 Subject: [PATCH 088/120] =?UTF-8?q?Bump=20version:=2010.0.4=20=E2=86=92=20?= =?UTF-8?q?11.0.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index 951878db..5e3bcf7b 100644 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -1,7 +1,7 @@ # flake8: noqa __author__ = "Nick Ficano" __email__ = "nficano@gmail.com" -__version__ = "10.0.4" +__version__ = "11.0.0" from .aws_lambda import ( deploy, diff --git a/setup.cfg b/setup.cfg index 83e76e2e..e807a43e 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 10.0.4 +current_version = 11.0.0 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} diff --git a/setup.py b/setup.py index 0a18242d..a00cb631 100755 --- a/setup.py +++ b/setup.py @@ -54,7 +54,7 @@ def run(self): setup( name="python-lambda", - version="10.0.4", + version="11.0.0", author="Nick Ficano", author_email="nficano@gmail.com", packages=find_packages(), From 39bf0d4cf2fd185a2a3bed05d32ecc66b6b4c5ef Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 12:01:00 -0400 Subject: [PATCH 089/120] fix tests --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 8f2a274d..64e0ab18 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,7 +10,7 @@ python: before_install: - pip install pipenv --upgrade script: - - pipenv + - pipenv install --dev - pytest sudo: false notifications: From f35b56a4014a9d364f4785b61215ddc3ab1a6d1f Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 12:01:11 -0400 Subject: [PATCH 090/120] =?UTF-8?q?Bump=20version:=2011.0.0=20=E2=86=92=20?= =?UTF-8?q?11.1.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index 5e3bcf7b..50ad9fd9 100644 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -1,7 +1,7 @@ # flake8: noqa __author__ = "Nick Ficano" __email__ = "nficano@gmail.com" -__version__ = "11.0.0" +__version__ = "11.1.0" from .aws_lambda import ( deploy, diff --git a/setup.cfg b/setup.cfg index e807a43e..b9bbdca3 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 11.0.0 +current_version = 11.1.0 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} diff --git a/setup.py b/setup.py index a00cb631..e4df23f5 100755 --- a/setup.py +++ b/setup.py @@ -54,7 +54,7 @@ def run(self): setup( name="python-lambda", - version="11.0.0", + version="11.1.0", author="Nick Ficano", author_email="nficano@gmail.com", packages=find_packages(), From 427c59634e4f674b5eeb95786efad50234babc60 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 12:18:28 -0400 Subject: [PATCH 091/120] fix tests --- Makefile | 1 + aws_lambda/aws_lambda.py | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index c8f4dc8f..4d1ac4d3 100644 --- a/Makefile +++ b/Makefile @@ -47,6 +47,7 @@ clean-build: find . -name '*.egg-info' -exec rm -fr {} + find . -name '*.egg' -exec rm -f {} + find . -name '*.DS_Store' -exec rm -f {} + + rm -f requirements.* clean-pyc: find . -name '*.pyc' -exec rm -f {} + diff --git a/aws_lambda/aws_lambda.py b/aws_lambda/aws_lambda.py index 3f2553ea..0d5f994e 100644 --- a/aws_lambda/aws_lambda.py +++ b/aws_lambda/aws_lambda.py @@ -6,7 +6,7 @@ import sys import time from collections import defaultdict -from imp import load_source + from shutil import copy from shutil import copyfile from shutil import copystat @@ -16,6 +16,7 @@ import boto3 import botocore import yaml +import sys from .helpers import archive from .helpers import get_environment_variable_value @@ -34,6 +35,21 @@ log = logging.getLogger(__name__) +def load_source(module_name, module_path): + """Loads a python module from the path of the corresponding file.""" + + if sys.version_info[0] == 3 and sys.version_info[1] >= 5: + import importlib.util + spec = importlib.util.spec_from_file_location(module_name, module_path) + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + elif sys.version_info[0] == 3 and sys.version_info[1] < 5: + import importlib.machinery + loader = importlib.machinery.SourceFileLoader(module_name, module_path) + module = loader.load_module() + return module + + def cleanup_old_versions( src, keep_last_versions, config_file="config.yaml", profile_name=None, ): From 53760d27aed5b603fc601863999d9803fe7672f0 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 12:18:37 -0400 Subject: [PATCH 092/120] =?UTF-8?q?Bump=20version:=2011.1.0=20=E2=86=92=20?= =?UTF-8?q?11.2.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index 50ad9fd9..9d8791f7 100644 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -1,7 +1,7 @@ # flake8: noqa __author__ = "Nick Ficano" __email__ = "nficano@gmail.com" -__version__ = "11.1.0" +__version__ = "11.2.0" from .aws_lambda import ( deploy, diff --git a/setup.cfg b/setup.cfg index b9bbdca3..66f4b224 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 11.1.0 +current_version = 11.2.0 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} diff --git a/setup.py b/setup.py index e4df23f5..b2e10cfc 100755 --- a/setup.py +++ b/setup.py @@ -54,7 +54,7 @@ def run(self): setup( name="python-lambda", - version="11.1.0", + version="11.2.0", author="Nick Ficano", author_email="nficano@gmail.com", packages=find_packages(), From c6a3a333ea3857e670b1e5eb7624a2f888881983 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 12:19:22 -0400 Subject: [PATCH 093/120] fix tests --- Makefile | 1 - 1 file changed, 1 deletion(-) diff --git a/Makefile b/Makefile index 4d1ac4d3..c42f1139 100644 --- a/Makefile +++ b/Makefile @@ -58,5 +58,4 @@ clean-pyc: find . -name '.mypy_cache' -exec rm -fr {} + upload: clean - python setup.py sdist bdist_wheel twine upload dist/* From 4a3a233f929aef0663c8697fae933b88f73f8a93 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 12:19:24 -0400 Subject: [PATCH 094/120] =?UTF-8?q?Bump=20version:=2011.2.0=20=E2=86=92=20?= =?UTF-8?q?11.3.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index 9d8791f7..0f3cbb72 100644 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -1,7 +1,7 @@ # flake8: noqa __author__ = "Nick Ficano" __email__ = "nficano@gmail.com" -__version__ = "11.2.0" +__version__ = "11.3.0" from .aws_lambda import ( deploy, diff --git a/setup.cfg b/setup.cfg index 66f4b224..409464ed 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 11.2.0 +current_version = 11.3.0 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} diff --git a/setup.py b/setup.py index b2e10cfc..dcc70b05 100755 --- a/setup.py +++ b/setup.py @@ -54,7 +54,7 @@ def run(self): setup( name="python-lambda", - version="11.2.0", + version="11.3.0", author="Nick Ficano", author_email="nficano@gmail.com", packages=find_packages(), From 98a48bf30ca362a2f076f3b73350b2b68f03c1fa Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 12:20:05 -0400 Subject: [PATCH 095/120] fix tests --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index c42f1139..17b5a175 100644 --- a/Makefile +++ b/Makefile @@ -57,5 +57,6 @@ clean-pyc: find . -name '.pytest_cache' -exec rm -fr {} + find . -name '.mypy_cache' -exec rm -fr {} + -upload: clean +upload: + python setup.py sdist bdist_wheel twine upload dist/* From e19aa721c12c193c133597702df177d2d4cebc18 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 12:20:08 -0400 Subject: [PATCH 096/120] =?UTF-8?q?Bump=20version:=2011.3.0=20=E2=86=92=20?= =?UTF-8?q?11.4.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index 0f3cbb72..59fbbb71 100644 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -1,7 +1,7 @@ # flake8: noqa __author__ = "Nick Ficano" __email__ = "nficano@gmail.com" -__version__ = "11.3.0" +__version__ = "11.4.0" from .aws_lambda import ( deploy, diff --git a/setup.cfg b/setup.cfg index 409464ed..b5cff2d7 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 11.3.0 +current_version = 11.4.0 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} diff --git a/setup.py b/setup.py index dcc70b05..74d286db 100755 --- a/setup.py +++ b/setup.py @@ -54,7 +54,7 @@ def run(self): setup( name="python-lambda", - version="11.3.0", + version="11.4.0", author="Nick Ficano", author_email="nficano@gmail.com", packages=find_packages(), From 27958360e3fab9cf56362636741bca20bf48f344 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 12:20:36 -0400 Subject: [PATCH 097/120] fix tests --- Makefile | 1 - 1 file changed, 1 deletion(-) diff --git a/Makefile b/Makefile index 17b5a175..5eb54f4d 100644 --- a/Makefile +++ b/Makefile @@ -58,5 +58,4 @@ clean-pyc: find . -name '.mypy_cache' -exec rm -fr {} + upload: - python setup.py sdist bdist_wheel twine upload dist/* From 3594a48a7e095e1ad06431e8ccf4a5072c8670b9 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 12:20:38 -0400 Subject: [PATCH 098/120] =?UTF-8?q?Bump=20version:=2011.4.0=20=E2=86=92=20?= =?UTF-8?q?11.5.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index 59fbbb71..645842a0 100644 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -1,7 +1,7 @@ # flake8: noqa __author__ = "Nick Ficano" __email__ = "nficano@gmail.com" -__version__ = "11.4.0" +__version__ = "11.5.0" from .aws_lambda import ( deploy, diff --git a/setup.cfg b/setup.cfg index b5cff2d7..74277fe6 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 11.4.0 +current_version = 11.5.0 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} diff --git a/setup.py b/setup.py index 74d286db..cb77982f 100755 --- a/setup.py +++ b/setup.py @@ -54,7 +54,7 @@ def run(self): setup( name="python-lambda", - version="11.4.0", + version="11.5.0", author="Nick Ficano", author_email="nficano@gmail.com", packages=find_packages(), From a3caaf78b5327cc04a8779938b7856dd66692813 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 12:21:47 -0400 Subject: [PATCH 099/120] fix tests --- Makefile | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/Makefile b/Makefile index 5eb54f4d..ae0a43bc 100644 --- a/Makefile +++ b/Makefile @@ -5,24 +5,15 @@ pipenv: pip install pipenv pipenv install --dev -deploy-patch: requirements bumpversion-patch sdist bdist wheels upload clean +deploy-patch: requirements bumpversion-patch upload clean -deploy-minor: requirements bumpversion-minor sdist bdist wheels upload clean +deploy-minor: requirements bumpversion-minor upload clean -deploy-major: requirements bumpversion-major sdist bdist wheels upload clean +deploy-major: requirements bumpversion-major upload clean requirements: pipenv_to_requirements -sdist: requirements - python setup.py sdist - -bdist: requirements - python setup.py bdist - -wheels: requirements - python setup.py bdist_wheel - bumpversion-patch: bumpversion patch git push @@ -58,4 +49,5 @@ clean-pyc: find . -name '.mypy_cache' -exec rm -fr {} + upload: + python setup.py sdist bdist_wheel twine upload dist/* From 70952c983b672b8d35efefe6700d5925fde2033c Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 12:21:49 -0400 Subject: [PATCH 100/120] =?UTF-8?q?Bump=20version:=2011.5.0=20=E2=86=92=20?= =?UTF-8?q?11.6.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index 645842a0..4a84de3c 100644 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -1,7 +1,7 @@ # flake8: noqa __author__ = "Nick Ficano" __email__ = "nficano@gmail.com" -__version__ = "11.5.0" +__version__ = "11.6.0" from .aws_lambda import ( deploy, diff --git a/setup.cfg b/setup.cfg index 74277fe6..ddb55815 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 11.5.0 +current_version = 11.6.0 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} diff --git a/setup.py b/setup.py index cb77982f..2f836436 100755 --- a/setup.py +++ b/setup.py @@ -54,7 +54,7 @@ def run(self): setup( name="python-lambda", - version="11.5.0", + version="11.6.0", author="Nick Ficano", author_email="nficano@gmail.com", packages=find_packages(), From 61cbeff22a59ab2d84242bdcf02eb0aee5c6b36f Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 12:22:38 -0400 Subject: [PATCH 101/120] fix tests --- Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index ae0a43bc..3a8f3410 100644 --- a/Makefile +++ b/Makefile @@ -5,11 +5,11 @@ pipenv: pip install pipenv pipenv install --dev -deploy-patch: requirements bumpversion-patch upload clean +deploy-patch: clean requirements bumpversion-patch upload clean -deploy-minor: requirements bumpversion-minor upload clean +deploy-minor: clean requirements bumpversion-minor upload clean -deploy-major: requirements bumpversion-major upload clean +deploy-major: clean requirements bumpversion-major upload clean requirements: pipenv_to_requirements From 04bb5f119c1da212082e7110f991f14510a24cb1 Mon Sep 17 00:00:00 2001 From: Nick Ficano Date: Sun, 29 Mar 2020 12:22:44 -0400 Subject: [PATCH 102/120] =?UTF-8?q?Bump=20version:=2011.6.0=20=E2=86=92=20?= =?UTF-8?q?11.6.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index 4a84de3c..dd340d0b 100644 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -1,7 +1,7 @@ # flake8: noqa __author__ = "Nick Ficano" __email__ = "nficano@gmail.com" -__version__ = "11.6.0" +__version__ = "11.6.1" from .aws_lambda import ( deploy, diff --git a/setup.cfg b/setup.cfg index ddb55815..fcc6c779 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 11.6.0 +current_version = 11.6.1 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} diff --git a/setup.py b/setup.py index 2f836436..d74e86f0 100755 --- a/setup.py +++ b/setup.py @@ -54,7 +54,7 @@ def run(self): setup( name="python-lambda", - version="11.6.0", + version="11.6.1", author="Nick Ficano", author_email="nficano@gmail.com", packages=find_packages(), From d732121735bd2b86cc7bc483395b17028a38dbe4 Mon Sep 17 00:00:00 2001 From: Rishabh Bhargava Date: Mon, 6 Apr 2020 19:45:48 -0700 Subject: [PATCH 103/120] Tests passing for all Python versions >= 3.6 (#487) * Allowing all Python versions * Removing Python 3.5 from travis config file since it is not supported by AWS Lambda * Updating readme * Escaping the tilde for the benefit of my code editor --- .travis.yml | 5 +- Pipfile | 3 - Pipfile.lock | 1255 +++++++++++++++++++++++++------------------------- README.md | 11 +- 4 files changed, 642 insertions(+), 632 deletions(-) diff --git a/.travis.yml b/.travis.yml index 64e0ab18..8cbfa800 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,13 +3,12 @@ cache: - apt - pip python: - - "3.5" - "3.6" - "3.7" - - "3.8" + - "3.8" before_install: - pip install pipenv --upgrade -script: +script: - pipenv install --dev - pytest sudo: false diff --git a/Pipfile b/Pipfile index d15a3729..a40b3320 100644 --- a/Pipfile +++ b/Pipfile @@ -26,8 +26,5 @@ pyaml = "==15.8.2" python-dateutil = "==2.5.3" PyYAML = "==5.1" -[requires] -python_version = "3.8" - [pipenv] allow_prereleases = true diff --git a/Pipfile.lock b/Pipfile.lock index e844ea21..2eb8fac4 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,624 +1,637 @@ { - "_meta": { - "hash": { - "sha256": "38f19dcadebb28a56d2de2806a5b1fd413fc824591f7982b534b6869df056d73" - }, - "pipfile-spec": 6, - "requires": { - "python_version": "3.8" - }, - "sources": [ - { - "name": "pypi", - "url": "https://pypi.org/simple", - "verify_ssl": true - } - ] - }, - "default": { - "boto3": { - "hashes": [ - "sha256:5050c29353fec97301116386f469fa5858ccf47201623b53cf9f74e603bda52f", - "sha256:518f724c4758e5a5bed114fbcbd1cf470a15306d416ff421a025b76f1d390939" - ], - "index": "pypi", - "version": "==1.4.4" - }, - "botocore": { - "hashes": [ - "sha256:79c9347b1333f94372c0c2fea950326b41c83ff16e67298db0a016708fe45be6", - "sha256:9878598a9db8be63788dc1030616d1e5b64e4a9c2d85dba34b4a5c3b6b049fa6" - ], - "index": "pypi", - "version": "==1.5.62" - }, - "click": { - "hashes": [ - "sha256:cc6a19da8ebff6e7074f731447ef7e112bd23adf3de5c597cf9989f2fd8defe9", - "sha256:fcf697e1fd4b567d817c69dab10a4035937fe6af175c05fd6806b69f74cbc6c4" - ], - "index": "pypi", - "version": "==6.6" - }, - "docutils": { - "hashes": [ - "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af", - "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc" - ], - "index": "pypi", - "version": "==0.16" - }, - "jmespath": { - "hashes": [ - "sha256:08dfaa06d4397f283a01e57089f3360e3b52b5b9da91a70e1fd91e9f0cdd3d3d", - "sha256:ade5261b0d7d34b6f53accc91e6881b579b40161ed575e6ac465de5edad32815" - ], - "index": "pypi", - "version": "==0.9.0" - }, - "pyaml": { - "hashes": [ - "sha256:9c54fb5f17b58572c4cef50affea60bb73f445ab153580dac07a12383712b5b8" - ], - "index": "pypi", - "version": "==15.8.2" - }, - "python-dateutil": { - "hashes": [ - "sha256:1408fdb07c6a1fa9997567ce3fcee6a337b39a503d80699e0f213de4aa4b32ed", - "sha256:598499a75be2e5e18a66f12c00dd47a069de24794effeda4228bfc760f44f527", - "sha256:9d94861f04ce14f9a3d835206067c889b8f1244f1415035dadcf9c10066adf04" - ], - "index": "pypi", - "version": "==2.5.3" - }, - "pyyaml": { - "hashes": [ - "sha256:1adecc22f88d38052fb787d959f003811ca858b799590a5eaa70e63dca50308c", - "sha256:436bc774ecf7c103814098159fbb84c2715d25980175292c648f2da143909f95", - "sha256:460a5a4248763f6f37ea225d19d5c205677d8d525f6a83357ca622ed541830c2", - "sha256:5a22a9c84653debfbf198d02fe592c176ea548cccce47553f35f466e15cf2fd4", - "sha256:7a5d3f26b89d688db27822343dfa25c599627bc92093e788956372285c6298ad", - "sha256:9372b04a02080752d9e6f990179a4ab840227c6e2ce15b95e1278456664cf2ba", - "sha256:a5dcbebee834eaddf3fa7366316b880ff4062e4bcc9787b78c7fbb4a26ff2dd1", - "sha256:aee5bab92a176e7cd034e57f46e9df9a9862a71f8f37cad167c6fc74c65f5b4e", - "sha256:c51f642898c0bacd335fc119da60baae0824f2cde95b0330b56c0553439f0673", - "sha256:c68ea4d3ba1705da1e0d85da6684ac657912679a649e8868bd850d2c299cce13", - "sha256:e23d0cc5299223dcc37885dae624f382297717e459ea24053709675a976a3e19" - ], - "index": "pypi", - "version": "==5.1" - }, - "s3transfer": { - "hashes": [ - "sha256:90dc18e028989c609146e241ea153250be451e05ecc0c2832565231dacdf59c1", - "sha256:c7a9ec356982d5e9ab2d4b46391a7d6a950e2b04c472419f5fdec70cc0ada72f" - ], - "version": "==0.1.13" - }, - "six": { - "hashes": [ - "sha256:236bdbdce46e6e6a3d61a337c0f8b763ca1e8717c03b369e87a7ec7ce1319c0a", - "sha256:8f3cd2e254d8f793e7f3d6d9df77b92252b52637291d0f0da013c76ea2724b6c" - ], - "version": "==1.14.0" - } - }, - "develop": { - "appdirs": { - "hashes": [ - "sha256:9e5896d1372858f8dd3344faf4e5014d21849c756c8d5701f78f8a103b372d92", - "sha256:d8b24664561d0d34ddfaec54636d502d7cea6e29c3eaf68f3df6180863e2166e" - ], - "version": "==1.4.3" - }, - "appnope": { - "hashes": [ - "sha256:5b26757dc6f79a3b7dc9fab95359328d5747fcb2409d331ea66d0272b90ab2a0", - "sha256:8b995ffe925347a2138d7ac0fe77155e4311a0ea6d6da4f5128fe4b3cbe5ed71" - ], - "markers": "sys_platform == 'darwin'", - "version": "==0.1.0" - }, - "attrs": { - "hashes": [ - "sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c", - "sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72" - ], - "version": "==19.3.0" - }, - "backcall": { - "hashes": [ - "sha256:38ecd85be2c1e78f77fd91700c76e14667dc21e2713b63876c0eb901196e01e4", - "sha256:bbbf4b1e5cd2bdb08f915895b51081c041bac22394fdfcfdfbe9f14b77c08bf2" - ], - "version": "==0.1.0" - }, - "black": { - "hashes": [ - "sha256:1b30e59be925fafc1ee4565e5e08abef6b03fe455102883820fe5ee2e4734e0b", - "sha256:c2edb73a08e9e0e6f65a0e6af18b059b8b1cdd5bef997d7a0b181df93dc81539" - ], - "index": "pypi", - "version": "==19.10b0" - }, - "bleach": { - "hashes": [ - "sha256:cc8da25076a1fe56c3ac63671e2194458e0c4d9c7becfd52ca251650d517903c", - "sha256:e78e426105ac07026ba098f04de8abe9b6e3e98b5befbf89b51a5ef0a4292b03" - ], - "version": "==3.1.4" - }, - "bumpversion": { - "hashes": [ - "sha256:6744c873dd7aafc24453d8b6a1a0d6d109faf63cd0cd19cb78fd46e74932c77e", - "sha256:6753d9ff3552013e2130f7bc03c1007e24473b4835952679653fb132367bdd57" - ], - "index": "pypi", - "version": "==0.5.3" - }, - "certifi": { - "hashes": [ - "sha256:017c25db2a153ce562900032d5bc68e9f191e44e9a0f762f373977de9df1fbb3", - "sha256:25b64c7da4cd7479594d035c08c2d809eb4aab3a26e5a990ea98cc450c320f1f" - ], - "version": "==2019.11.28" - }, - "chardet": { - "hashes": [ - "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae", - "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691" - ], - "version": "==3.0.4" - }, - "click": { - "hashes": [ - "sha256:cc6a19da8ebff6e7074f731447ef7e112bd23adf3de5c597cf9989f2fd8defe9", - "sha256:fcf697e1fd4b567d817c69dab10a4035937fe6af175c05fd6806b69f74cbc6c4" - ], - "index": "pypi", - "version": "==6.6" - }, - "codecov": { - "hashes": [ - "sha256:09fb045eb044a619cd2b9dacd7789ae8e322cb7f18196378579fd8d883e6b665", - "sha256:aeeefa3a03cac8a78e4f988e935b51a4689bb1f17f20d4e827807ee11135f845" - ], - "index": "pypi", - "version": "==2.0.22" - }, - "coverage": { - "hashes": [ - "sha256:03f630aba2b9b0d69871c2e8d23a69b7fe94a1e2f5f10df5049c0df99db639a0", - "sha256:046a1a742e66d065d16fb564a26c2a15867f17695e7f3d358d7b1ad8a61bca30", - "sha256:0a907199566269e1cfa304325cc3b45c72ae341fbb3253ddde19fa820ded7a8b", - "sha256:165a48268bfb5a77e2d9dbb80de7ea917332a79c7adb747bd005b3a07ff8caf0", - "sha256:1b60a95fc995649464e0cd48cecc8288bac5f4198f21d04b8229dc4097d76823", - "sha256:1f66cf263ec77af5b8fe14ef14c5e46e2eb4a795ac495ad7c03adc72ae43fafe", - "sha256:2e08c32cbede4a29e2a701822291ae2bc9b5220a971bba9d1e7615312efd3037", - "sha256:3844c3dab800ca8536f75ae89f3cf566848a3eb2af4d9f7b1103b4f4f7a5dad6", - "sha256:408ce64078398b2ee2ec08199ea3fcf382828d2f8a19c5a5ba2946fe5ddc6c31", - "sha256:443be7602c790960b9514567917af538cac7807a7c0c0727c4d2bbd4014920fd", - "sha256:4482f69e0701139d0f2c44f3c395d1d1d37abd81bfafbf9b6efbe2542679d892", - "sha256:4a8a259bf990044351baf69d3b23e575699dd60b18460c71e81dc565f5819ac1", - "sha256:513e6526e0082c59a984448f4104c9bf346c2da9961779ede1fc458e8e8a1f78", - "sha256:5f587dfd83cb669933186661a351ad6fc7166273bc3e3a1531ec5c783d997aac", - "sha256:62061e87071497951155cbccee487980524d7abea647a1b2a6eb6b9647df9006", - "sha256:641e329e7f2c01531c45c687efcec8aeca2a78a4ff26d49184dce3d53fc35014", - "sha256:65a7e00c00472cd0f59ae09d2fb8a8aaae7f4a0cf54b2b74f3138d9f9ceb9cb2", - "sha256:6ad6ca45e9e92c05295f638e78cd42bfaaf8ee07878c9ed73e93190b26c125f7", - "sha256:73aa6e86034dad9f00f4bbf5a666a889d17d79db73bc5af04abd6c20a014d9c8", - "sha256:7c9762f80a25d8d0e4ab3cb1af5d9dffbddb3ee5d21c43e3474c84bf5ff941f7", - "sha256:85596aa5d9aac1bf39fe39d9fa1051b0f00823982a1de5766e35d495b4a36ca9", - "sha256:86a0ea78fd851b313b2e712266f663e13b6bc78c2fb260b079e8b67d970474b1", - "sha256:8a620767b8209f3446197c0e29ba895d75a1e272a36af0786ec70fe7834e4307", - "sha256:922fb9ef2c67c3ab20e22948dcfd783397e4c043a5c5fa5ff5e9df5529074b0a", - "sha256:9fad78c13e71546a76c2f8789623eec8e499f8d2d799f4b4547162ce0a4df435", - "sha256:a37c6233b28e5bc340054cf6170e7090a4e85069513320275a4dc929144dccf0", - "sha256:c3fc325ce4cbf902d05a80daa47b645d07e796a80682c1c5800d6ac5045193e5", - "sha256:cda33311cb9fb9323958a69499a667bd728a39a7aa4718d7622597a44c4f1441", - "sha256:db1d4e38c9b15be1521722e946ee24f6db95b189d1447fa9ff18dd16ba89f732", - "sha256:eda55e6e9ea258f5e4add23bcf33dc53b2c319e70806e180aecbff8d90ea24de", - "sha256:f372cdbb240e09ee855735b9d85e7f50730dcfb6296b74b95a3e5dea0615c4c1" - ], - "version": "==5.0.4" - }, - "coveralls": { - "hashes": [ - "sha256:4b6bfc2a2a77b890f556bc631e35ba1ac21193c356393b66c84465c06218e135", - "sha256:67188c7ec630c5f708c31552f2bcdac4580e172219897c4136504f14b823132f" - ], - "index": "pypi", - "version": "==1.11.1" - }, - "decorator": { - "hashes": [ - "sha256:41fa54c2a0cc4ba648be4fd43cff00aedf5b9465c9bf18d64325bc225f08f760", - "sha256:e3a62f0520172440ca0dcc823749319382e377f37f140a0b99ef45fecb84bfe7" - ], - "version": "==4.4.2" - }, - "distlib": { - "hashes": [ - "sha256:2e166e231a26b36d6dfe35a48c4464346620f8645ed0ace01ee31822b288de21" - ], - "version": "==0.3.0" - }, - "docopt": { - "hashes": [ - "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491" - ], - "version": "==0.6.2" - }, - "docutils": { - "hashes": [ - "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af", - "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc" - ], - "index": "pypi", - "version": "==0.16" - }, - "entrypoints": { - "hashes": [ - "sha256:589f874b313739ad35be6e0cd7efde2a4e9b6fea91edcc34e58ecbb8dbe56d19", - "sha256:c70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451" - ], - "version": "==0.3" - }, - "filelock": { - "hashes": [ - "sha256:18d82244ee114f543149c66a6e0c14e9c4f8a1044b5cdaadd0f82159d6a6ff59", - "sha256:929b7d63ec5b7d6b71b0fa5ac14e030b3f70b75747cef1b10da9b879fef15836" - ], - "version": "==3.0.12" - }, - "flake8": { - "hashes": [ - "sha256:45681a117ecc81e870cbf1262835ae4af5e7a8b08e40b944a8a6e6b895914cfb", - "sha256:49356e766643ad15072a789a20915d3c91dc89fd313ccd71802303fd67e4deca" - ], - "index": "pypi", - "version": "==3.7.9" - }, - "idna": { - "hashes": [ - "sha256:7588d1c14ae4c77d74036e8c22ff447b26d0fde8f007354fd48a7814db15b7cb", - "sha256:a068a21ceac8a4d63dbfd964670474107f541babbd2250d61922f029858365fa" - ], - "version": "==2.9" - }, - "ipython": { - "hashes": [ - "sha256:ca478e52ae1f88da0102360e57e528b92f3ae4316aabac80a2cd7f7ab2efb48a", - "sha256:eb8d075de37f678424527b5ef6ea23f7b80240ca031c2dd6de5879d687a65333" - ], - "index": "pypi", - "version": "==7.13.0" - }, - "ipython-genutils": { - "hashes": [ - "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8", - "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8" - ], - "version": "==0.2.0" - }, - "jedi": { - "hashes": [ - "sha256:b4f4052551025c6b0b0b193b29a6ff7bdb74c52450631206c262aef9f7159ad2", - "sha256:d5c871cb9360b414f981e7072c52c33258d598305280fef91c6cae34739d65d5" - ], - "version": "==0.16.0" - }, - "keyring": { - "hashes": [ - "sha256:197fd5903901030ef7b82fe247f43cfed2c157a28e7747d1cfcf4bc5e699dd03", - "sha256:8179b1cdcdcbc221456b5b74e6b7cfa06f8dd9f239eb81892166d9223d82c5ba" - ], - "version": "==21.2.0" - }, - "mccabe": { - "hashes": [ - "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", - "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f" - ], - "version": "==0.6.1" - }, - "more-itertools": { - "hashes": [ - "sha256:5dd8bcf33e5f9513ffa06d5ad33d78f31e1931ac9a18f33d37e77a180d393a7c", - "sha256:b1ddb932186d8a6ac451e1d95844b382f55e12686d51ca0c68b6f61f2ab7a507" - ], - "version": "==8.2.0" - }, - "packaging": { - "hashes": [ - "sha256:3c292b474fda1671ec57d46d739d072bfd495a4f51ad01a055121d81e952b7a3", - "sha256:82f77b9bee21c1bafbf35a84905d604d5d1223801d639cf3ed140bd651c08752" - ], - "version": "==20.3" - }, - "parso": { - "hashes": [ - "sha256:0c5659e0c6eba20636f99a04f469798dca8da279645ce5c387315b2c23912157", - "sha256:8515fc12cfca6ee3aa59138741fc5624d62340c97e401c74875769948d4f2995" - ], - "version": "==0.6.2" - }, - "pathspec": { - "hashes": [ - "sha256:163b0632d4e31cef212976cf57b43d9fd6b0bac6e67c26015d611a647d5e7424", - "sha256:562aa70af2e0d434367d9790ad37aed893de47f1693e4201fd1d3dca15d19b96" - ], - "version": "==0.7.0" - }, - "pbr": { - "hashes": [ - "sha256:139d2625547dbfa5fb0b81daebb39601c478c21956dc57e2e07b74450a8c506b", - "sha256:61aa52a0f18b71c5cc58232d2cf8f8d09cd67fcad60b742a60124cb8d6951488" - ], - "version": "==5.4.4" - }, - "pexpect": { - "hashes": [ - "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937", - "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c" - ], - "markers": "sys_platform != 'win32'", - "version": "==4.8.0" - }, - "pickleshare": { - "hashes": [ - "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca", - "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56" - ], - "version": "==0.7.5" - }, - "pipenv": { - "hashes": [ - "sha256:56ad5f5cb48f1e58878e14525a6e3129d4306049cb76d2f6a3e95df0d5fc6330", - "sha256:7df8e33a2387de6f537836f48ac6fcd94eda6ed9ba3d5e3fd52e35b5bc7ff49e", - "sha256:a673e606e8452185e9817a987572b55360f4d28b50831ef3b42ac3cab3fee846" - ], - "version": "==2018.11.26" - }, - "pipenv-to-requirements": { - "hashes": [ - "sha256:1c18682a4ec70eb07261d2b558df3ee22ea00192663a1b98fd1e45e22946c163", - "sha256:cb70471a17a7d4658caffe989539413313d51df1b3a54838bcd7e7d3ab3fcc18" - ], - "index": "pypi", - "version": "==0.9.0" - }, - "pkginfo": { - "hashes": [ - "sha256:7424f2c8511c186cd5424bbf31045b77435b37a8d604990b79d4e70d741148bb", - "sha256:a6d9e40ca61ad3ebd0b72fbadd4fba16e4c0e4df0428c041e01e06eb6ee71f32" - ], - "version": "==1.5.0.1" - }, - "pluggy": { - "hashes": [ - "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0", - "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d" - ], - "version": "==0.13.1" - }, - "prompt-toolkit": { - "hashes": [ - "sha256:563d1a4140b63ff9dd587bda9557cffb2fe73650205ab6f4383092fb882e7dc8", - "sha256:df7e9e63aea609b1da3a65641ceaf5bc7d05e0a04de5bd45d05dbeffbabf9e04" - ], - "version": "==3.0.5" - }, - "ptyprocess": { - "hashes": [ - "sha256:923f299cc5ad920c68f2bc0bc98b75b9f838b93b599941a6b63ddbc2476394c0", - "sha256:d7cc528d76e76342423ca640335bd3633420dc1366f258cb31d05e865ef5ca1f" - ], - "version": "==0.6.0" - }, - "py": { - "hashes": [ - "sha256:5e27081401262157467ad6e7f851b7aa402c5852dbcb3dae06768434de5752aa", - "sha256:c20fdd83a5dbc0af9efd622bee9a5564e278f6380fffcacc43ba6f43db2813b0" - ], - "version": "==1.8.1" - }, - "pycodestyle": { - "hashes": [ - "sha256:95a2219d12372f05704562a14ec30bc76b05a5b297b21a5dfe3f6fac3491ae56", - "sha256:e40a936c9a450ad81df37f549d676d127b1b66000a6c500caa2b085bc0ca976c" - ], - "version": "==2.5.0" - }, - "pyflakes": { - "hashes": [ - "sha256:17dbeb2e3f4d772725c777fabc446d5634d1038f234e77343108ce445ea69ce0", - "sha256:d976835886f8c5b31d47970ed689944a0262b5f3afa00a5a7b4dc81e5449f8a2" - ], - "version": "==2.1.1" - }, - "pygments": { - "hashes": [ - "sha256:647344a061c249a3b74e230c739f434d7ea4d8b1d5f3721bc0f3558049b38f44", - "sha256:ff7a40b4860b727ab48fad6360eb351cc1b33cbf9b15a0f689ca5353e9463324" - ], - "version": "==2.6.1" - }, - "pyparsing": { - "hashes": [ - "sha256:4c830582a84fb022400b85429791bc551f1f4871c33f23e44f353119e92f969f", - "sha256:c342dccb5250c08d45fd6f8b4a559613ca603b57498511740e65cd11a2e7dcec" - ], - "version": "==2.4.6" - }, - "pytest": { - "hashes": [ - "sha256:0e5b30f5cb04e887b91b1ee519fa3d89049595f428c1db76e73bd7f17b09b172", - "sha256:84dde37075b8805f3d1f392cc47e38a0e59518fb46a431cfdaf7cf1ce805f970" - ], - "index": "pypi", - "version": "==5.4.1" - }, - "pytest-cov": { - "hashes": [ - "sha256:cc6742d8bac45070217169f5f72ceee1e0e55b0221f54bcf24845972d3a47f2b", - "sha256:cdbdef4f870408ebdbfeb44e63e07eb18bb4619fae852f6e760645fa36172626" - ], - "index": "pypi", - "version": "==2.8.1" - }, - "readme-renderer": { - "hashes": [ - "sha256:1b6d8dd1673a0b293766b4106af766b6eff3654605f9c4f239e65de6076bc222", - "sha256:e67d64242f0174a63c3b727801a2fff4c1f38ebe5d71d95ff7ece081945a6cd4" - ], - "version": "==25.0" - }, - "regex": { - "hashes": [ - "sha256:01b2d70cbaed11f72e57c1cfbaca71b02e3b98f739ce33f5f26f71859ad90431", - "sha256:046e83a8b160aff37e7034139a336b660b01dbfe58706f9d73f5cdc6b3460242", - "sha256:113309e819634f499d0006f6200700c8209a2a8bf6bd1bdc863a4d9d6776a5d1", - "sha256:200539b5124bc4721247a823a47d116a7a23e62cc6695744e3eb5454a8888e6d", - "sha256:25f4ce26b68425b80a233ce7b6218743c71cf7297dbe02feab1d711a2bf90045", - "sha256:269f0c5ff23639316b29f31df199f401e4cb87529eafff0c76828071635d417b", - "sha256:5de40649d4f88a15c9489ed37f88f053c15400257eeb18425ac7ed0a4e119400", - "sha256:7f78f963e62a61e294adb6ff5db901b629ef78cb2a1cfce3cf4eeba80c1c67aa", - "sha256:82469a0c1330a4beb3d42568f82dffa32226ced006e0b063719468dcd40ffdf0", - "sha256:8c2b7fa4d72781577ac45ab658da44c7518e6d96e2a50d04ecb0fd8f28b21d69", - "sha256:974535648f31c2b712a6b2595969f8ab370834080e00ab24e5dbb9d19b8bfb74", - "sha256:99272d6b6a68c7ae4391908fc15f6b8c9a6c345a46b632d7fdb7ef6c883a2bbb", - "sha256:9b64a4cc825ec4df262050c17e18f60252cdd94742b4ba1286bcfe481f1c0f26", - "sha256:9e9624440d754733eddbcd4614378c18713d2d9d0dc647cf9c72f64e39671be5", - "sha256:9ff16d994309b26a1cdf666a6309c1ef51ad4f72f99d3392bcd7b7139577a1f2", - "sha256:b33ebcd0222c1d77e61dbcd04a9fd139359bded86803063d3d2d197b796c63ce", - "sha256:bba52d72e16a554d1894a0cc74041da50eea99a8483e591a9edf1025a66843ab", - "sha256:bed7986547ce54d230fd8721aba6fd19459cdc6d315497b98686d0416efaff4e", - "sha256:c7f58a0e0e13fb44623b65b01052dae8e820ed9b8b654bb6296bc9c41f571b70", - "sha256:d58a4fa7910102500722defbde6e2816b0372a4fcc85c7e239323767c74f5cbc", - "sha256:f1ac2dc65105a53c1c2d72b1d3e98c2464a133b4067a51a3d2477b28449709a0" - ], - "version": "==2020.2.20" - }, - "requests": { - "hashes": [ - "sha256:43999036bfa82904b6af1d99e4882b560e5e2c68e5c4b0aa03b655f3d7d73fee", - "sha256:b3f43d496c6daba4493e7c431722aeb7dbc6288f52a6e04e7b6023b0247817e6" - ], - "version": "==2.23.0" - }, - "requests-toolbelt": { - "hashes": [ - "sha256:380606e1d10dc85c3bd47bf5a6095f815ec007be7a8b69c878507068df059e6f", - "sha256:968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0" - ], - "version": "==0.9.1" - }, - "six": { - "hashes": [ - "sha256:236bdbdce46e6e6a3d61a337c0f8b763ca1e8717c03b369e87a7ec7ce1319c0a", - "sha256:8f3cd2e254d8f793e7f3d6d9df77b92252b52637291d0f0da013c76ea2724b6c" - ], - "version": "==1.14.0" - }, - "toml": { - "hashes": [ - "sha256:229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c", - "sha256:235682dd292d5899d361a811df37e04a8828a5b1da3115886b73cf81ebc9100e" - ], - "version": "==0.10.0" - }, - "tqdm": { - "hashes": [ - "sha256:03d2366c64d44c7f61e74c700d9b202d57e9efe355ea5c28814c52bfe7a50b8c", - "sha256:be5ddeec77d78ba781ea41eacb2358a77f74cc2407f54b82222d7ee7dc8c8ccf" - ], - "version": "==4.44.1" - }, - "traitlets": { - "hashes": [ - "sha256:70b4c6a1d9019d7b4f6846832288f86998aa3b9207c6821f3578a6a6a467fe44", - "sha256:d023ee369ddd2763310e4c3eae1ff649689440d4ae59d7485eb4cfbbe3e359f7" - ], - "version": "==4.3.3" - }, - "twine": { - "hashes": [ - "sha256:c1af8ca391e43b0a06bbc155f7f67db0bf0d19d284bfc88d1675da497a946124", - "sha256:d561a5e511f70275e5a485a6275ff61851c16ffcb3a95a602189161112d9f160" - ], - "index": "pypi", - "version": "==3.1.1" - }, - "typed-ast": { - "hashes": [ - "sha256:0666aa36131496aed8f7be0410ff974562ab7eeac11ef351def9ea6fa28f6355", - "sha256:0c2c07682d61a629b68433afb159376e24e5b2fd4641d35424e462169c0a7919", - "sha256:249862707802d40f7f29f6e1aad8d84b5aa9e44552d2cc17384b209f091276aa", - "sha256:24995c843eb0ad11a4527b026b4dde3da70e1f2d8806c99b7b4a7cf491612652", - "sha256:269151951236b0f9a6f04015a9004084a5ab0d5f19b57de779f908621e7d8b75", - "sha256:4083861b0aa07990b619bd7ddc365eb7fa4b817e99cf5f8d9cf21a42780f6e01", - "sha256:498b0f36cc7054c1fead3d7fc59d2150f4d5c6c56ba7fb150c013fbc683a8d2d", - "sha256:4e3e5da80ccbebfff202a67bf900d081906c358ccc3d5e3c8aea42fdfdfd51c1", - "sha256:6daac9731f172c2a22ade6ed0c00197ee7cc1221aa84cfdf9c31defeb059a907", - "sha256:715ff2f2df46121071622063fc7543d9b1fd19ebfc4f5c8895af64a77a8c852c", - "sha256:73d785a950fc82dd2a25897d525d003f6378d1cb23ab305578394694202a58c3", - "sha256:8c8aaad94455178e3187ab22c8b01a3837f8ee50e09cf31f1ba129eb293ec30b", - "sha256:8ce678dbaf790dbdb3eba24056d5364fb45944f33553dd5869b7580cdbb83614", - "sha256:aaee9905aee35ba5905cfb3c62f3e83b3bec7b39413f0a7f19be4e547ea01ebb", - "sha256:bcd3b13b56ea479b3650b82cabd6b5343a625b0ced5429e4ccad28a8973f301b", - "sha256:c9e348e02e4d2b4a8b2eedb48210430658df6951fa484e59de33ff773fbd4b41", - "sha256:d205b1b46085271b4e15f670058ce182bd1199e56b317bf2ec004b6a44f911f6", - "sha256:d43943ef777f9a1c42bf4e552ba23ac77a6351de620aa9acf64ad54933ad4d34", - "sha256:d5d33e9e7af3b34a40dc05f498939f0ebf187f07c385fd58d591c533ad8562fe", - "sha256:fc0fea399acb12edbf8a628ba8d2312f583bdbdb3335635db062fa98cf71fca4", - "sha256:fe460b922ec15dd205595c9b5b99e2f056fd98ae8f9f56b888e7a17dc2b757e7" - ], - "version": "==1.4.1" - }, - "urllib3": { - "hashes": [ - "sha256:2f3db8b19923a873b3e5256dc9c2dedfa883e33d87c690d9c7913e1f40673cdc", - "sha256:87716c2d2a7121198ebcb7ce7cccf6ce5e9ba539041cfbaeecfb641dc0bf6acc" - ], - "version": "==1.25.8" - }, - "virtualenv": { - "hashes": [ - "sha256:4e399f48c6b71228bf79f5febd27e3bbb753d9d5905776a86667bc61ab628a25", - "sha256:9e81279f4a9d16d1c0654a127c2c86e5bca2073585341691882c1e66e31ef8a5" - ], - "version": "==20.0.15" - }, - "virtualenv-clone": { - "hashes": [ - "sha256:07e74418b7cc64f4fda987bf5bc71ebd59af27a7bc9e8a8ee9fd54b1f2390a27", - "sha256:665e48dd54c84b98b71a657acb49104c54e7652bce9c1c4f6c6976ed4c827a29" - ], - "version": "==0.5.4" - }, - "wcwidth": { - "hashes": [ - "sha256:cafe2186b3c009a04067022ce1dcd79cb38d8d65ee4f4791b8888d6599d1bbe1", - "sha256:ee73862862a156bf77ff92b09034fc4825dd3af9cf81bc5b360668d425f3c5f1" - ], - "version": "==0.1.9" - }, - "webencodings": { - "hashes": [ - "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", - "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923" - ], - "version": "==0.5.1" - }, - "wheel": { - "hashes": [ - "sha256:8788e9155fe14f54164c1b9eb0a319d98ef02c160725587ad60f14ddc57b6f96", - "sha256:df277cb51e61359aba502208d680f90c0493adec6f0e848af94948778aed386e" - ], - "index": "pypi", - "version": "==0.34.2" - } + "_meta": { + "hash": { + "sha256": "05c579c0e5ca8245944f870018256ffa33eb3e0b8a44e941721a19b19add1701" + }, + "pipfile-spec": 6, + "requires": {}, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "boto3": { + "hashes": [ + "sha256:5050c29353fec97301116386f469fa5858ccf47201623b53cf9f74e603bda52f", + "sha256:518f724c4758e5a5bed114fbcbd1cf470a15306d416ff421a025b76f1d390939" + ], + "index": "pypi", + "version": "==1.4.4" + }, + "botocore": { + "hashes": [ + "sha256:79c9347b1333f94372c0c2fea950326b41c83ff16e67298db0a016708fe45be6", + "sha256:9878598a9db8be63788dc1030616d1e5b64e4a9c2d85dba34b4a5c3b6b049fa6" + ], + "index": "pypi", + "version": "==1.5.62" + }, + "click": { + "hashes": [ + "sha256:cc6a19da8ebff6e7074f731447ef7e112bd23adf3de5c597cf9989f2fd8defe9", + "sha256:fcf697e1fd4b567d817c69dab10a4035937fe6af175c05fd6806b69f74cbc6c4" + ], + "index": "pypi", + "version": "==6.6" + }, + "docutils": { + "hashes": [ + "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af", + "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc" + ], + "index": "pypi", + "version": "==0.16" + }, + "jmespath": { + "hashes": [ + "sha256:08dfaa06d4397f283a01e57089f3360e3b52b5b9da91a70e1fd91e9f0cdd3d3d", + "sha256:ade5261b0d7d34b6f53accc91e6881b579b40161ed575e6ac465de5edad32815" + ], + "index": "pypi", + "version": "==0.9.0" + }, + "pyaml": { + "hashes": [ + "sha256:9c54fb5f17b58572c4cef50affea60bb73f445ab153580dac07a12383712b5b8" + ], + "index": "pypi", + "version": "==15.8.2" + }, + "python-dateutil": { + "hashes": [ + "sha256:1408fdb07c6a1fa9997567ce3fcee6a337b39a503d80699e0f213de4aa4b32ed", + "sha256:598499a75be2e5e18a66f12c00dd47a069de24794effeda4228bfc760f44f527", + "sha256:9d94861f04ce14f9a3d835206067c889b8f1244f1415035dadcf9c10066adf04" + ], + "index": "pypi", + "version": "==2.5.3" + }, + "pyyaml": { + "hashes": [ + "sha256:1adecc22f88d38052fb787d959f003811ca858b799590a5eaa70e63dca50308c", + "sha256:436bc774ecf7c103814098159fbb84c2715d25980175292c648f2da143909f95", + "sha256:460a5a4248763f6f37ea225d19d5c205677d8d525f6a83357ca622ed541830c2", + "sha256:5a22a9c84653debfbf198d02fe592c176ea548cccce47553f35f466e15cf2fd4", + "sha256:7a5d3f26b89d688db27822343dfa25c599627bc92093e788956372285c6298ad", + "sha256:9372b04a02080752d9e6f990179a4ab840227c6e2ce15b95e1278456664cf2ba", + "sha256:a5dcbebee834eaddf3fa7366316b880ff4062e4bcc9787b78c7fbb4a26ff2dd1", + "sha256:aee5bab92a176e7cd034e57f46e9df9a9862a71f8f37cad167c6fc74c65f5b4e", + "sha256:c51f642898c0bacd335fc119da60baae0824f2cde95b0330b56c0553439f0673", + "sha256:c68ea4d3ba1705da1e0d85da6684ac657912679a649e8868bd850d2c299cce13", + "sha256:e23d0cc5299223dcc37885dae624f382297717e459ea24053709675a976a3e19" + ], + "index": "pypi", + "version": "==5.1" + }, + "s3transfer": { + "hashes": [ + "sha256:90dc18e028989c609146e241ea153250be451e05ecc0c2832565231dacdf59c1", + "sha256:c7a9ec356982d5e9ab2d4b46391a7d6a950e2b04c472419f5fdec70cc0ada72f" + ], + "version": "==0.1.13" + }, + "six": { + "hashes": [ + "sha256:236bdbdce46e6e6a3d61a337c0f8b763ca1e8717c03b369e87a7ec7ce1319c0a", + "sha256:8f3cd2e254d8f793e7f3d6d9df77b92252b52637291d0f0da013c76ea2724b6c" + ], + "version": "==1.14.0" + } + }, + "develop": { + "appdirs": { + "hashes": [ + "sha256:9e5896d1372858f8dd3344faf4e5014d21849c756c8d5701f78f8a103b372d92", + "sha256:d8b24664561d0d34ddfaec54636d502d7cea6e29c3eaf68f3df6180863e2166e" + ], + "version": "==1.4.3" + }, + "appnope": { + "hashes": [ + "sha256:5b26757dc6f79a3b7dc9fab95359328d5747fcb2409d331ea66d0272b90ab2a0", + "sha256:8b995ffe925347a2138d7ac0fe77155e4311a0ea6d6da4f5128fe4b3cbe5ed71" + ], + "markers": "sys_platform == 'darwin'", + "version": "==0.1.0" + }, + "attrs": { + "hashes": [ + "sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c", + "sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72" + ], + "version": "==19.3.0" + }, + "backcall": { + "hashes": [ + "sha256:38ecd85be2c1e78f77fd91700c76e14667dc21e2713b63876c0eb901196e01e4", + "sha256:bbbf4b1e5cd2bdb08f915895b51081c041bac22394fdfcfdfbe9f14b77c08bf2" + ], + "version": "==0.1.0" + }, + "black": { + "hashes": [ + "sha256:1b30e59be925fafc1ee4565e5e08abef6b03fe455102883820fe5ee2e4734e0b", + "sha256:c2edb73a08e9e0e6f65a0e6af18b059b8b1cdd5bef997d7a0b181df93dc81539" + ], + "index": "pypi", + "version": "==19.10b0" + }, + "bleach": { + "hashes": [ + "sha256:cc8da25076a1fe56c3ac63671e2194458e0c4d9c7becfd52ca251650d517903c", + "sha256:e78e426105ac07026ba098f04de8abe9b6e3e98b5befbf89b51a5ef0a4292b03" + ], + "version": "==3.1.4" + }, + "bumpversion": { + "hashes": [ + "sha256:6744c873dd7aafc24453d8b6a1a0d6d109faf63cd0cd19cb78fd46e74932c77e", + "sha256:6753d9ff3552013e2130f7bc03c1007e24473b4835952679653fb132367bdd57" + ], + "index": "pypi", + "version": "==0.5.3" + }, + "certifi": { + "hashes": [ + "sha256:1d987a998c75633c40847cc966fcf5904906c920a7f17ef374f5aa4282abd304", + "sha256:51fcb31174be6e6664c5f69e3e1691a2d72a1a12e90f872cbdb1567eb47b6519" + ], + "version": "==2020.4.5.1" + }, + "chardet": { + "hashes": [ + "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae", + "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691" + ], + "version": "==3.0.4" + }, + "click": { + "hashes": [ + "sha256:cc6a19da8ebff6e7074f731447ef7e112bd23adf3de5c597cf9989f2fd8defe9", + "sha256:fcf697e1fd4b567d817c69dab10a4035937fe6af175c05fd6806b69f74cbc6c4" + ], + "index": "pypi", + "version": "==6.6" + }, + "codecov": { + "hashes": [ + "sha256:09fb045eb044a619cd2b9dacd7789ae8e322cb7f18196378579fd8d883e6b665", + "sha256:aeeefa3a03cac8a78e4f988e935b51a4689bb1f17f20d4e827807ee11135f845" + ], + "index": "pypi", + "version": "==2.0.22" + }, + "coverage": { + "hashes": [ + "sha256:03f630aba2b9b0d69871c2e8d23a69b7fe94a1e2f5f10df5049c0df99db639a0", + "sha256:046a1a742e66d065d16fb564a26c2a15867f17695e7f3d358d7b1ad8a61bca30", + "sha256:0a907199566269e1cfa304325cc3b45c72ae341fbb3253ddde19fa820ded7a8b", + "sha256:165a48268bfb5a77e2d9dbb80de7ea917332a79c7adb747bd005b3a07ff8caf0", + "sha256:1b60a95fc995649464e0cd48cecc8288bac5f4198f21d04b8229dc4097d76823", + "sha256:1f66cf263ec77af5b8fe14ef14c5e46e2eb4a795ac495ad7c03adc72ae43fafe", + "sha256:2e08c32cbede4a29e2a701822291ae2bc9b5220a971bba9d1e7615312efd3037", + "sha256:3844c3dab800ca8536f75ae89f3cf566848a3eb2af4d9f7b1103b4f4f7a5dad6", + "sha256:408ce64078398b2ee2ec08199ea3fcf382828d2f8a19c5a5ba2946fe5ddc6c31", + "sha256:443be7602c790960b9514567917af538cac7807a7c0c0727c4d2bbd4014920fd", + "sha256:4482f69e0701139d0f2c44f3c395d1d1d37abd81bfafbf9b6efbe2542679d892", + "sha256:4a8a259bf990044351baf69d3b23e575699dd60b18460c71e81dc565f5819ac1", + "sha256:513e6526e0082c59a984448f4104c9bf346c2da9961779ede1fc458e8e8a1f78", + "sha256:5f587dfd83cb669933186661a351ad6fc7166273bc3e3a1531ec5c783d997aac", + "sha256:62061e87071497951155cbccee487980524d7abea647a1b2a6eb6b9647df9006", + "sha256:641e329e7f2c01531c45c687efcec8aeca2a78a4ff26d49184dce3d53fc35014", + "sha256:65a7e00c00472cd0f59ae09d2fb8a8aaae7f4a0cf54b2b74f3138d9f9ceb9cb2", + "sha256:6ad6ca45e9e92c05295f638e78cd42bfaaf8ee07878c9ed73e93190b26c125f7", + "sha256:73aa6e86034dad9f00f4bbf5a666a889d17d79db73bc5af04abd6c20a014d9c8", + "sha256:7c9762f80a25d8d0e4ab3cb1af5d9dffbddb3ee5d21c43e3474c84bf5ff941f7", + "sha256:85596aa5d9aac1bf39fe39d9fa1051b0f00823982a1de5766e35d495b4a36ca9", + "sha256:86a0ea78fd851b313b2e712266f663e13b6bc78c2fb260b079e8b67d970474b1", + "sha256:8a620767b8209f3446197c0e29ba895d75a1e272a36af0786ec70fe7834e4307", + "sha256:922fb9ef2c67c3ab20e22948dcfd783397e4c043a5c5fa5ff5e9df5529074b0a", + "sha256:9fad78c13e71546a76c2f8789623eec8e499f8d2d799f4b4547162ce0a4df435", + "sha256:a37c6233b28e5bc340054cf6170e7090a4e85069513320275a4dc929144dccf0", + "sha256:c3fc325ce4cbf902d05a80daa47b645d07e796a80682c1c5800d6ac5045193e5", + "sha256:cda33311cb9fb9323958a69499a667bd728a39a7aa4718d7622597a44c4f1441", + "sha256:db1d4e38c9b15be1521722e946ee24f6db95b189d1447fa9ff18dd16ba89f732", + "sha256:eda55e6e9ea258f5e4add23bcf33dc53b2c319e70806e180aecbff8d90ea24de", + "sha256:f372cdbb240e09ee855735b9d85e7f50730dcfb6296b74b95a3e5dea0615c4c1" + ], + "version": "==5.0.4" + }, + "coveralls": { + "hashes": [ + "sha256:4b6bfc2a2a77b890f556bc631e35ba1ac21193c356393b66c84465c06218e135", + "sha256:67188c7ec630c5f708c31552f2bcdac4580e172219897c4136504f14b823132f" + ], + "index": "pypi", + "version": "==1.11.1" + }, + "decorator": { + "hashes": [ + "sha256:41fa54c2a0cc4ba648be4fd43cff00aedf5b9465c9bf18d64325bc225f08f760", + "sha256:e3a62f0520172440ca0dcc823749319382e377f37f140a0b99ef45fecb84bfe7" + ], + "version": "==4.4.2" + }, + "distlib": { + "hashes": [ + "sha256:2e166e231a26b36d6dfe35a48c4464346620f8645ed0ace01ee31822b288de21" + ], + "version": "==0.3.0" + }, + "docopt": { + "hashes": [ + "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491" + ], + "version": "==0.6.2" + }, + "docutils": { + "hashes": [ + "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af", + "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc" + ], + "index": "pypi", + "version": "==0.16" + }, + "entrypoints": { + "hashes": [ + "sha256:589f874b313739ad35be6e0cd7efde2a4e9b6fea91edcc34e58ecbb8dbe56d19", + "sha256:c70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451" + ], + "version": "==0.3" + }, + "filelock": { + "hashes": [ + "sha256:18d82244ee114f543149c66a6e0c14e9c4f8a1044b5cdaadd0f82159d6a6ff59", + "sha256:929b7d63ec5b7d6b71b0fa5ac14e030b3f70b75747cef1b10da9b879fef15836" + ], + "version": "==3.0.12" + }, + "flake8": { + "hashes": [ + "sha256:45681a117ecc81e870cbf1262835ae4af5e7a8b08e40b944a8a6e6b895914cfb", + "sha256:49356e766643ad15072a789a20915d3c91dc89fd313ccd71802303fd67e4deca" + ], + "index": "pypi", + "version": "==3.7.9" + }, + "idna": { + "hashes": [ + "sha256:7588d1c14ae4c77d74036e8c22ff447b26d0fde8f007354fd48a7814db15b7cb", + "sha256:a068a21ceac8a4d63dbfd964670474107f541babbd2250d61922f029858365fa" + ], + "version": "==2.9" + }, + "importlib-metadata": { + "hashes": [ + "sha256:2a688cbaa90e0cc587f1df48bdc97a6eadccdcd9c35fb3f976a09e3b5016d90f", + "sha256:34513a8a0c4962bc66d35b359558fd8a5e10cd472d37aec5f66858addef32c1e" + ], + "markers": "python_version < '3.8'", + "version": "==1.6.0" + }, + "ipython": { + "hashes": [ + "sha256:ca478e52ae1f88da0102360e57e528b92f3ae4316aabac80a2cd7f7ab2efb48a", + "sha256:eb8d075de37f678424527b5ef6ea23f7b80240ca031c2dd6de5879d687a65333" + ], + "index": "pypi", + "version": "==7.13.0" + }, + "ipython-genutils": { + "hashes": [ + "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8", + "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8" + ], + "version": "==0.2.0" + }, + "jedi": { + "hashes": [ + "sha256:b4f4052551025c6b0b0b193b29a6ff7bdb74c52450631206c262aef9f7159ad2", + "sha256:d5c871cb9360b414f981e7072c52c33258d598305280fef91c6cae34739d65d5" + ], + "version": "==0.16.0" + }, + "keyring": { + "hashes": [ + "sha256:197fd5903901030ef7b82fe247f43cfed2c157a28e7747d1cfcf4bc5e699dd03", + "sha256:8179b1cdcdcbc221456b5b74e6b7cfa06f8dd9f239eb81892166d9223d82c5ba" + ], + "version": "==21.2.0" + }, + "mccabe": { + "hashes": [ + "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", + "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f" + ], + "version": "==0.6.1" + }, + "more-itertools": { + "hashes": [ + "sha256:5dd8bcf33e5f9513ffa06d5ad33d78f31e1931ac9a18f33d37e77a180d393a7c", + "sha256:b1ddb932186d8a6ac451e1d95844b382f55e12686d51ca0c68b6f61f2ab7a507" + ], + "version": "==8.2.0" + }, + "packaging": { + "hashes": [ + "sha256:3c292b474fda1671ec57d46d739d072bfd495a4f51ad01a055121d81e952b7a3", + "sha256:82f77b9bee21c1bafbf35a84905d604d5d1223801d639cf3ed140bd651c08752" + ], + "version": "==20.3" + }, + "parso": { + "hashes": [ + "sha256:0c5659e0c6eba20636f99a04f469798dca8da279645ce5c387315b2c23912157", + "sha256:8515fc12cfca6ee3aa59138741fc5624d62340c97e401c74875769948d4f2995" + ], + "version": "==0.6.2" + }, + "pathspec": { + "hashes": [ + "sha256:163b0632d4e31cef212976cf57b43d9fd6b0bac6e67c26015d611a647d5e7424", + "sha256:562aa70af2e0d434367d9790ad37aed893de47f1693e4201fd1d3dca15d19b96" + ], + "version": "==0.7.0" + }, + "pbr": { + "hashes": [ + "sha256:139d2625547dbfa5fb0b81daebb39601c478c21956dc57e2e07b74450a8c506b", + "sha256:61aa52a0f18b71c5cc58232d2cf8f8d09cd67fcad60b742a60124cb8d6951488" + ], + "version": "==5.4.4" + }, + "pexpect": { + "hashes": [ + "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937", + "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c" + ], + "markers": "sys_platform != 'win32'", + "version": "==4.8.0" + }, + "pickleshare": { + "hashes": [ + "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca", + "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56" + ], + "version": "==0.7.5" + }, + "pipenv": { + "hashes": [ + "sha256:56ad5f5cb48f1e58878e14525a6e3129d4306049cb76d2f6a3e95df0d5fc6330", + "sha256:7df8e33a2387de6f537836f48ac6fcd94eda6ed9ba3d5e3fd52e35b5bc7ff49e", + "sha256:a673e606e8452185e9817a987572b55360f4d28b50831ef3b42ac3cab3fee846" + ], + "version": "==2018.11.26" + }, + "pipenv-to-requirements": { + "hashes": [ + "sha256:1c18682a4ec70eb07261d2b558df3ee22ea00192663a1b98fd1e45e22946c163", + "sha256:cb70471a17a7d4658caffe989539413313d51df1b3a54838bcd7e7d3ab3fcc18" + ], + "index": "pypi", + "version": "==0.9.0" + }, + "pkginfo": { + "hashes": [ + "sha256:7424f2c8511c186cd5424bbf31045b77435b37a8d604990b79d4e70d741148bb", + "sha256:a6d9e40ca61ad3ebd0b72fbadd4fba16e4c0e4df0428c041e01e06eb6ee71f32" + ], + "version": "==1.5.0.1" + }, + "pluggy": { + "hashes": [ + "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0", + "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d" + ], + "version": "==0.13.1" + }, + "prompt-toolkit": { + "hashes": [ + "sha256:563d1a4140b63ff9dd587bda9557cffb2fe73650205ab6f4383092fb882e7dc8", + "sha256:df7e9e63aea609b1da3a65641ceaf5bc7d05e0a04de5bd45d05dbeffbabf9e04" + ], + "version": "==3.0.5" + }, + "ptyprocess": { + "hashes": [ + "sha256:923f299cc5ad920c68f2bc0bc98b75b9f838b93b599941a6b63ddbc2476394c0", + "sha256:d7cc528d76e76342423ca640335bd3633420dc1366f258cb31d05e865ef5ca1f" + ], + "version": "==0.6.0" + }, + "py": { + "hashes": [ + "sha256:5e27081401262157467ad6e7f851b7aa402c5852dbcb3dae06768434de5752aa", + "sha256:c20fdd83a5dbc0af9efd622bee9a5564e278f6380fffcacc43ba6f43db2813b0" + ], + "version": "==1.8.1" + }, + "pycodestyle": { + "hashes": [ + "sha256:95a2219d12372f05704562a14ec30bc76b05a5b297b21a5dfe3f6fac3491ae56", + "sha256:e40a936c9a450ad81df37f549d676d127b1b66000a6c500caa2b085bc0ca976c" + ], + "version": "==2.5.0" + }, + "pyflakes": { + "hashes": [ + "sha256:17dbeb2e3f4d772725c777fabc446d5634d1038f234e77343108ce445ea69ce0", + "sha256:d976835886f8c5b31d47970ed689944a0262b5f3afa00a5a7b4dc81e5449f8a2" + ], + "version": "==2.1.1" + }, + "pygments": { + "hashes": [ + "sha256:647344a061c249a3b74e230c739f434d7ea4d8b1d5f3721bc0f3558049b38f44", + "sha256:ff7a40b4860b727ab48fad6360eb351cc1b33cbf9b15a0f689ca5353e9463324" + ], + "version": "==2.6.1" + }, + "pyparsing": { + "hashes": [ + "sha256:67199f0c41a9c702154efb0e7a8cc08accf830eb003b4d9fa42c4059002e2492", + "sha256:700d17888d441604b0bd51535908dcb297561b040819cccde647a92439db5a2a" + ], + "version": "==3.0.0a1" + }, + "pytest": { + "hashes": [ + "sha256:0e5b30f5cb04e887b91b1ee519fa3d89049595f428c1db76e73bd7f17b09b172", + "sha256:84dde37075b8805f3d1f392cc47e38a0e59518fb46a431cfdaf7cf1ce805f970" + ], + "index": "pypi", + "version": "==5.4.1" + }, + "pytest-cov": { + "hashes": [ + "sha256:cc6742d8bac45070217169f5f72ceee1e0e55b0221f54bcf24845972d3a47f2b", + "sha256:cdbdef4f870408ebdbfeb44e63e07eb18bb4619fae852f6e760645fa36172626" + ], + "index": "pypi", + "version": "==2.8.1" + }, + "readme-renderer": { + "hashes": [ + "sha256:1b6d8dd1673a0b293766b4106af766b6eff3654605f9c4f239e65de6076bc222", + "sha256:e67d64242f0174a63c3b727801a2fff4c1f38ebe5d71d95ff7ece081945a6cd4" + ], + "version": "==25.0" + }, + "regex": { + "hashes": [ + "sha256:08119f707f0ebf2da60d2f24c2f39ca616277bb67ef6c92b72cbf90cbe3a556b", + "sha256:0ce9537396d8f556bcfc317c65b6a0705320701e5ce511f05fc04421ba05b8a8", + "sha256:1cbe0fa0b7f673400eb29e9ef41d4f53638f65f9a2143854de6b1ce2899185c3", + "sha256:2294f8b70e058a2553cd009df003a20802ef75b3c629506be20687df0908177e", + "sha256:23069d9c07e115537f37270d1d5faea3e0bdded8279081c4d4d607a2ad393683", + "sha256:24f4f4062eb16c5bbfff6a22312e8eab92c2c99c51a02e39b4eae54ce8255cd1", + "sha256:295badf61a51add2d428a46b8580309c520d8b26e769868b922750cf3ce67142", + "sha256:2a3bf8b48f8e37c3a40bb3f854bf0121c194e69a650b209628d951190b862de3", + "sha256:4385f12aa289d79419fede43f979e372f527892ac44a541b5446617e4406c468", + "sha256:5635cd1ed0a12b4c42cce18a8d2fb53ff13ff537f09de5fd791e97de27b6400e", + "sha256:5bfed051dbff32fd8945eccca70f5e22b55e4148d2a8a45141a3b053d6455ae3", + "sha256:7e1037073b1b7053ee74c3c6c0ada80f3501ec29d5f46e42669378eae6d4405a", + "sha256:90742c6ff121a9c5b261b9b215cb476eea97df98ea82037ec8ac95d1be7a034f", + "sha256:a58dd45cb865be0ce1d5ecc4cfc85cd8c6867bea66733623e54bd95131f473b6", + "sha256:c087bff162158536387c53647411db09b6ee3f9603c334c90943e97b1052a156", + "sha256:c162a21e0da33eb3d31a3ac17a51db5e634fc347f650d271f0305d96601dc15b", + "sha256:c9423a150d3a4fc0f3f2aae897a59919acd293f4cb397429b120a5fcd96ea3db", + "sha256:ccccdd84912875e34c5ad2d06e1989d890d43af6c2242c6fcfa51556997af6cd", + "sha256:e91ba11da11cf770f389e47c3f5c30473e6d85e06d7fd9dcba0017d2867aab4a", + "sha256:ea4adf02d23b437684cd388d557bf76e3afa72f7fed5bbc013482cc00c816948", + "sha256:fb95debbd1a824b2c4376932f2216cc186912e389bdb0e27147778cf6acb3f89" + ], + "version": "==2020.4.4" + }, + "requests": { + "hashes": [ + "sha256:43999036bfa82904b6af1d99e4882b560e5e2c68e5c4b0aa03b655f3d7d73fee", + "sha256:b3f43d496c6daba4493e7c431722aeb7dbc6288f52a6e04e7b6023b0247817e6" + ], + "version": "==2.23.0" + }, + "requests-toolbelt": { + "hashes": [ + "sha256:380606e1d10dc85c3bd47bf5a6095f815ec007be7a8b69c878507068df059e6f", + "sha256:968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0" + ], + "version": "==0.9.1" + }, + "six": { + "hashes": [ + "sha256:236bdbdce46e6e6a3d61a337c0f8b763ca1e8717c03b369e87a7ec7ce1319c0a", + "sha256:8f3cd2e254d8f793e7f3d6d9df77b92252b52637291d0f0da013c76ea2724b6c" + ], + "version": "==1.14.0" + }, + "toml": { + "hashes": [ + "sha256:229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c", + "sha256:235682dd292d5899d361a811df37e04a8828a5b1da3115886b73cf81ebc9100e" + ], + "version": "==0.10.0" + }, + "tqdm": { + "hashes": [ + "sha256:00339634a22c10a7a22476ee946bbde2dbe48d042ded784e4d88e0236eca5d81", + "sha256:ea9e3fd6bd9a37e8783d75bfc4c1faf3c6813da6bd1c3e776488b41ec683af94" + ], + "version": "==4.45.0" + }, + "traitlets": { + "hashes": [ + "sha256:70b4c6a1d9019d7b4f6846832288f86998aa3b9207c6821f3578a6a6a467fe44", + "sha256:d023ee369ddd2763310e4c3eae1ff649689440d4ae59d7485eb4cfbbe3e359f7" + ], + "version": "==4.3.3" + }, + "twine": { + "hashes": [ + "sha256:c1af8ca391e43b0a06bbc155f7f67db0bf0d19d284bfc88d1675da497a946124", + "sha256:d561a5e511f70275e5a485a6275ff61851c16ffcb3a95a602189161112d9f160" + ], + "index": "pypi", + "version": "==3.1.1" + }, + "typed-ast": { + "hashes": [ + "sha256:0666aa36131496aed8f7be0410ff974562ab7eeac11ef351def9ea6fa28f6355", + "sha256:0c2c07682d61a629b68433afb159376e24e5b2fd4641d35424e462169c0a7919", + "sha256:249862707802d40f7f29f6e1aad8d84b5aa9e44552d2cc17384b209f091276aa", + "sha256:24995c843eb0ad11a4527b026b4dde3da70e1f2d8806c99b7b4a7cf491612652", + "sha256:269151951236b0f9a6f04015a9004084a5ab0d5f19b57de779f908621e7d8b75", + "sha256:4083861b0aa07990b619bd7ddc365eb7fa4b817e99cf5f8d9cf21a42780f6e01", + "sha256:498b0f36cc7054c1fead3d7fc59d2150f4d5c6c56ba7fb150c013fbc683a8d2d", + "sha256:4e3e5da80ccbebfff202a67bf900d081906c358ccc3d5e3c8aea42fdfdfd51c1", + "sha256:6daac9731f172c2a22ade6ed0c00197ee7cc1221aa84cfdf9c31defeb059a907", + "sha256:715ff2f2df46121071622063fc7543d9b1fd19ebfc4f5c8895af64a77a8c852c", + "sha256:73d785a950fc82dd2a25897d525d003f6378d1cb23ab305578394694202a58c3", + "sha256:8c8aaad94455178e3187ab22c8b01a3837f8ee50e09cf31f1ba129eb293ec30b", + "sha256:8ce678dbaf790dbdb3eba24056d5364fb45944f33553dd5869b7580cdbb83614", + "sha256:aaee9905aee35ba5905cfb3c62f3e83b3bec7b39413f0a7f19be4e547ea01ebb", + "sha256:bcd3b13b56ea479b3650b82cabd6b5343a625b0ced5429e4ccad28a8973f301b", + "sha256:c9e348e02e4d2b4a8b2eedb48210430658df6951fa484e59de33ff773fbd4b41", + "sha256:d205b1b46085271b4e15f670058ce182bd1199e56b317bf2ec004b6a44f911f6", + "sha256:d43943ef777f9a1c42bf4e552ba23ac77a6351de620aa9acf64ad54933ad4d34", + "sha256:d5d33e9e7af3b34a40dc05f498939f0ebf187f07c385fd58d591c533ad8562fe", + "sha256:fc0fea399acb12edbf8a628ba8d2312f583bdbdb3335635db062fa98cf71fca4", + "sha256:fe460b922ec15dd205595c9b5b99e2f056fd98ae8f9f56b888e7a17dc2b757e7" + ], + "version": "==1.4.1" + }, + "urllib3": { + "hashes": [ + "sha256:2f3db8b19923a873b3e5256dc9c2dedfa883e33d87c690d9c7913e1f40673cdc", + "sha256:87716c2d2a7121198ebcb7ce7cccf6ce5e9ba539041cfbaeecfb641dc0bf6acc" + ], + "version": "==1.25.8" + }, + "virtualenv": { + "hashes": [ + "sha256:6ea131d41c477f6c4b7863948a9a54f7fa196854dbef73efbdff32b509f4d8bf", + "sha256:94f647e12d1e6ced2541b93215e51752aecbd1bbb18eb1816e2867f7532b1fe1" + ], + "version": "==20.0.16" + }, + "virtualenv-clone": { + "hashes": [ + "sha256:07e74418b7cc64f4fda987bf5bc71ebd59af27a7bc9e8a8ee9fd54b1f2390a27", + "sha256:665e48dd54c84b98b71a657acb49104c54e7652bce9c1c4f6c6976ed4c827a29" + ], + "version": "==0.5.4" + }, + "wcwidth": { + "hashes": [ + "sha256:cafe2186b3c009a04067022ce1dcd79cb38d8d65ee4f4791b8888d6599d1bbe1", + "sha256:ee73862862a156bf77ff92b09034fc4825dd3af9cf81bc5b360668d425f3c5f1" + ], + "version": "==0.1.9" + }, + "webencodings": { + "hashes": [ + "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", + "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923" + ], + "version": "==0.5.1" + }, + "wheel": { + "hashes": [ + "sha256:8788e9155fe14f54164c1b9eb0a319d98ef02c160725587ad60f14ddc57b6f96", + "sha256:df277cb51e61359aba502208d680f90c0493adec6f0e848af94948778aed386e" + ], + "index": "pypi", + "version": "==0.34.2" + }, + "zipp": { + "hashes": [ + "sha256:aa36550ff0c0b7ef7fa639055d797116ee891440eac1a56f378e2d3179e0320b", + "sha256:c599e4d75c98f6798c509911d08a22e6c021d074469042177c8c86fb92eefd96" + ], + "version": "==3.1.0" } + } } diff --git a/README.md b/README.md index 1fccf057..98a844da 100644 --- a/README.md +++ b/README.md @@ -32,10 +32,11 @@ parts. # Requirements -* Python 2.7 & 3.6 (At the time of writing this, AWS Lambda only supports Python 2.7/3.6). -* Pip (~8.1.1) -* Virtualenv (~15.0.0) -* Virtualenvwrapper (~4.7.1) +* Python 2.7, >= 3.6 (At the time of writing this, these are the Python runtimes supported by AWS Lambda). +* Pip (\~8.1.1) +* Virtualenv (\~15.0.0) +* Virtualenvwrapper (\~4.7.1) + # Getting Started @@ -212,7 +213,7 @@ You can also choose to use S3 as your source for Lambda deployments. This can be done by issuing ``lambda deploy-s3`` with the same variables/AWS permissions you'd set for executing the ``upload`` command. -### Development +## Development Development of "python-lambda" is facilitated exclusively on GitHub. Contributions in the form of patches, tests and feature creation and/or requests are very welcome and highly encouraged. Please open an issue if this From 66f803c3bdf2531c9feffc7285bf125e6c668711 Mon Sep 17 00:00:00 2001 From: Rishabh Bhargava Date: Mon, 6 Apr 2020 22:13:29 -0700 Subject: [PATCH 104/120] Adding back the required packages to setup.py for successful installation (#488) --- setup.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) mode change 100755 => 100644 setup.py diff --git a/setup.py b/setup.py old mode 100755 new mode 100644 index d74e86f0..565feea5 --- a/setup.py +++ b/setup.py @@ -4,10 +4,15 @@ import sys from shutil import rmtree -from setuptools import find_packages from setuptools import Command +from setuptools import find_packages from setuptools import setup +REQUIREMENTS = [ + "boto3==1.4.4", + "click==6.6", + "PyYAML==5.1", +] PACKAGE_DATA = { "aws_lambda": ["project_templates/*"], "": ["*.json"], @@ -60,6 +65,7 @@ def run(self): packages=find_packages(), url="https://github.com/nficano/python-lambda", license="ISCL", + install_requires=REQUIREMENTS, package_data=PACKAGE_DATA, test_suite="tests", tests_require=[], From 2e6b864e5fcb70db761f82cd076022b2ab0ede35 Mon Sep 17 00:00:00 2001 From: rishabh-bhargava Date: Mon, 6 Apr 2020 22:31:56 -0700 Subject: [PATCH 105/120] =?UTF-8?q?Bump=20version:=2011.6.1=20=E2=86=92=20?= =?UTF-8?q?11.7.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index dd340d0b..21bc015f 100644 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -1,7 +1,7 @@ # flake8: noqa __author__ = "Nick Ficano" __email__ = "nficano@gmail.com" -__version__ = "11.6.1" +__version__ = "11.7.0" from .aws_lambda import ( deploy, diff --git a/setup.cfg b/setup.cfg index fcc6c779..b2641966 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 11.6.1 +current_version = 11.7.0 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} diff --git a/setup.py b/setup.py index 565feea5..ea65f3f0 100644 --- a/setup.py +++ b/setup.py @@ -59,7 +59,7 @@ def run(self): setup( name="python-lambda", - version="11.6.1", + version="11.7.0", author="Nick Ficano", author_email="nficano@gmail.com", packages=find_packages(), From 84662f3311b2bf1037f3aa6c6f69fca4a3ef382c Mon Sep 17 00:00:00 2001 From: rishabh-bhargava Date: Mon, 6 Apr 2020 22:34:14 -0700 Subject: [PATCH 106/120] =?UTF-8?q?Bump=20version:=2011.7.0=20=E2=86=92=20?= =?UTF-8?q?11.7.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index 21bc015f..eba3f1d2 100644 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -1,7 +1,7 @@ # flake8: noqa __author__ = "Nick Ficano" __email__ = "nficano@gmail.com" -__version__ = "11.7.0" +__version__ = "11.7.1" from .aws_lambda import ( deploy, diff --git a/setup.cfg b/setup.cfg index b2641966..6871faee 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 11.7.0 +current_version = 11.7.1 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} diff --git a/setup.py b/setup.py index ea65f3f0..9c877e29 100644 --- a/setup.py +++ b/setup.py @@ -59,7 +59,7 @@ def run(self): setup( name="python-lambda", - version="11.7.0", + version="11.7.1", author="Nick Ficano", author_email="nficano@gmail.com", packages=find_packages(), From 922ed4bd3a7b48a9f4a4565fc3c78fbdc17eed40 Mon Sep 17 00:00:00 2001 From: Tim Gates Date: Tue, 14 Apr 2020 09:30:49 +1000 Subject: [PATCH 107/120] Fix simple typo: Tranlate -> Translate (#424) Closes #423 --- aws_lambda/aws_lambda.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aws_lambda/aws_lambda.py b/aws_lambda/aws_lambda.py index 0d5f994e..780715a9 100644 --- a/aws_lambda/aws_lambda.py +++ b/aws_lambda/aws_lambda.py @@ -412,7 +412,7 @@ def build( def get_callable_handler_function(src, handler): - """Tranlate a string of the form "module.function" into a callable + """Translate a string of the form "module.function" into a callable function. :param str src: From 9e2f9b49643d0e418bac588c7f983ca886eec879 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed, 8 Jul 2020 23:28:53 -0700 Subject: [PATCH 108/120] Bump pre-commit from 0.15.0 to 2.6.0 (#507) Bumps [pre-commit](https://github.com/pre-commit/pre-commit) from 0.15.0 to 2.6.0. - [Release notes](https://github.com/pre-commit/pre-commit/releases) - [Changelog](https://github.com/pre-commit/pre-commit/blob/master/CHANGELOG.md) - [Commits](https://github.com/pre-commit/pre-commit/compare/v0.15.0...v2.6.0) Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> --- tests/dev_requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/dev_requirements.txt b/tests/dev_requirements.txt index 25e724b3..0886536b 100644 --- a/tests/dev_requirements.txt +++ b/tests/dev_requirements.txt @@ -1,5 +1,5 @@ bumpversion==0.5.3 -pre-commit==0.15.0 +pre-commit==2.6.0 pytest>=3.6 pytest-cov flake8 From 5518a6a24ffdedcfb81989a2b83728448b00301d Mon Sep 17 00:00:00 2001 From: Rishabh Bhargava Date: Mon, 4 Jan 2021 03:45:39 -0800 Subject: [PATCH 109/120] Testing out a change with Travis config to stop Python3.6 CI failures (#532) --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 8cbfa800..a06a683f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,6 +7,7 @@ python: - "3.7" - "3.8" before_install: + - pip install --upgrade pip - pip install pipenv --upgrade script: - pipenv install --dev From 1051ad98bf85fffbe941b4e16f1db085fa306020 Mon Sep 17 00:00:00 2001 From: Rishabh Bhargava Date: Mon, 4 Jan 2021 12:20:42 -0800 Subject: [PATCH 110/120] Removing ipython as a dev dependency (#533) * Removing ipython as a dev dependency * Updating Pipefile using Python 3.7 instead of 3.6 --- Pipfile | 1 - Pipfile.lock | 574 +++++++++++++++++++++++++-------------------------- 2 files changed, 278 insertions(+), 297 deletions(-) diff --git a/Pipfile b/Pipfile index a40b3320..e7fbe551 100644 --- a/Pipfile +++ b/Pipfile @@ -5,7 +5,6 @@ verify_ssl = true [dev-packages] twine = "*" -ipython = "*" flake8 = "*" black = "*" bumpversion = "*" diff --git a/Pipfile.lock b/Pipfile.lock index 2eb8fac4..304b435a 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "05c579c0e5ca8245944f870018256ffa33eb3e0b8a44e941721a19b19add1701" + "sha256": "abfc715163f99fd278d10c1af4b23a8143dd19850dfb7cdc284ba79be06c4a3d" }, "pipfile-spec": 6, "requires": {}, @@ -96,78 +96,69 @@ }, "six": { "hashes": [ - "sha256:236bdbdce46e6e6a3d61a337c0f8b763ca1e8717c03b369e87a7ec7ce1319c0a", - "sha256:8f3cd2e254d8f793e7f3d6d9df77b92252b52637291d0f0da013c76ea2724b6c" + "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", + "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" ], - "version": "==1.14.0" + "version": "==1.15.0" } }, "develop": { "appdirs": { "hashes": [ - "sha256:9e5896d1372858f8dd3344faf4e5014d21849c756c8d5701f78f8a103b372d92", - "sha256:d8b24664561d0d34ddfaec54636d502d7cea6e29c3eaf68f3df6180863e2166e" + "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41", + "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128" ], - "version": "==1.4.3" - }, - "appnope": { - "hashes": [ - "sha256:5b26757dc6f79a3b7dc9fab95359328d5747fcb2409d331ea66d0272b90ab2a0", - "sha256:8b995ffe925347a2138d7ac0fe77155e4311a0ea6d6da4f5128fe4b3cbe5ed71" - ], - "markers": "sys_platform == 'darwin'", - "version": "==0.1.0" + "version": "==1.4.4" }, "attrs": { "hashes": [ - "sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c", - "sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72" - ], - "version": "==19.3.0" - }, - "backcall": { - "hashes": [ - "sha256:38ecd85be2c1e78f77fd91700c76e14667dc21e2713b63876c0eb901196e01e4", - "sha256:bbbf4b1e5cd2bdb08f915895b51081c041bac22394fdfcfdfbe9f14b77c08bf2" + "sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6", + "sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700" ], - "version": "==0.1.0" + "version": "==20.3.0" }, "black": { "hashes": [ - "sha256:1b30e59be925fafc1ee4565e5e08abef6b03fe455102883820fe5ee2e4734e0b", - "sha256:c2edb73a08e9e0e6f65a0e6af18b059b8b1cdd5bef997d7a0b181df93dc81539" + "sha256:1c02557aa099101b9d21496f8a914e9ed2222ef70336404eeeac8edba836fbea" ], "index": "pypi", - "version": "==19.10b0" + "version": "==20.8b1" }, "bleach": { "hashes": [ - "sha256:cc8da25076a1fe56c3ac63671e2194458e0c4d9c7becfd52ca251650d517903c", - "sha256:e78e426105ac07026ba098f04de8abe9b6e3e98b5befbf89b51a5ef0a4292b03" + "sha256:52b5919b81842b1854196eaae5ca29679a2f2e378905c346d3ca8227c2c66080", + "sha256:9f8ccbeb6183c6e6cddea37592dfb0167485c1e3b13b3363bc325aa8bda3adbd" ], - "version": "==3.1.4" + "version": "==3.2.1" + }, + "bump2version": { + "hashes": [ + "sha256:37f927ea17cde7ae2d7baf832f8e80ce3777624554a653006c9144f8017fe410", + "sha256:762cb2bfad61f4ec8e2bdf452c7c267416f8c70dd9ecb1653fd0bbb01fa936e6" + ], + "version": "==1.0.1" }, "bumpversion": { "hashes": [ - "sha256:6744c873dd7aafc24453d8b6a1a0d6d109faf63cd0cd19cb78fd46e74932c77e", - "sha256:6753d9ff3552013e2130f7bc03c1007e24473b4835952679653fb132367bdd57" + "sha256:4ba55e4080d373f80177b4dabef146c07ce73c7d1377aabf9d3c3ae1f94584a6", + "sha256:4eb3267a38194d09f048a2179980bb4803701969bff2c85fa8f6d1ce050be15e" ], "index": "pypi", - "version": "==0.5.3" + "version": "==0.6.0" }, "certifi": { "hashes": [ - "sha256:1d987a998c75633c40847cc966fcf5904906c920a7f17ef374f5aa4282abd304", - "sha256:51fcb31174be6e6664c5f69e3e1691a2d72a1a12e90f872cbdb1567eb47b6519" + "sha256:1a4995114262bffbc2413b159f2a1a480c969de6e6eb13ee966d470af86af59c", + "sha256:719a74fb9e33b9bd44cc7f3a8d94bc35e4049deebe19ba7d8e108280cfd59830" ], - "version": "==2020.4.5.1" + "version": "==2020.12.5" }, "chardet": { "hashes": [ - "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae", - "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691" + "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa", + "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5" ], - "version": "==3.0.4" + "version": "==4.0.0" }, "click": { "hashes": [ @@ -179,68 +170,87 @@ }, "codecov": { "hashes": [ - "sha256:09fb045eb044a619cd2b9dacd7789ae8e322cb7f18196378579fd8d883e6b665", - "sha256:aeeefa3a03cac8a78e4f988e935b51a4689bb1f17f20d4e827807ee11135f845" + "sha256:6cde272454009d27355f9434f4e49f238c0273b216beda8472a65dc4957f473b", + "sha256:ba8553a82942ce37d4da92b70ffd6d54cf635fc1793ab0a7dc3fecd6ebfb3df8" ], "index": "pypi", - "version": "==2.0.22" + "version": "==2.1.11" + }, + "colorama": { + "hashes": [ + "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b", + "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2" + ], + "version": "==0.4.4" }, "coverage": { "hashes": [ - "sha256:03f630aba2b9b0d69871c2e8d23a69b7fe94a1e2f5f10df5049c0df99db639a0", - "sha256:046a1a742e66d065d16fb564a26c2a15867f17695e7f3d358d7b1ad8a61bca30", - "sha256:0a907199566269e1cfa304325cc3b45c72ae341fbb3253ddde19fa820ded7a8b", - "sha256:165a48268bfb5a77e2d9dbb80de7ea917332a79c7adb747bd005b3a07ff8caf0", - "sha256:1b60a95fc995649464e0cd48cecc8288bac5f4198f21d04b8229dc4097d76823", - "sha256:1f66cf263ec77af5b8fe14ef14c5e46e2eb4a795ac495ad7c03adc72ae43fafe", - "sha256:2e08c32cbede4a29e2a701822291ae2bc9b5220a971bba9d1e7615312efd3037", - "sha256:3844c3dab800ca8536f75ae89f3cf566848a3eb2af4d9f7b1103b4f4f7a5dad6", - "sha256:408ce64078398b2ee2ec08199ea3fcf382828d2f8a19c5a5ba2946fe5ddc6c31", - "sha256:443be7602c790960b9514567917af538cac7807a7c0c0727c4d2bbd4014920fd", - "sha256:4482f69e0701139d0f2c44f3c395d1d1d37abd81bfafbf9b6efbe2542679d892", - "sha256:4a8a259bf990044351baf69d3b23e575699dd60b18460c71e81dc565f5819ac1", - "sha256:513e6526e0082c59a984448f4104c9bf346c2da9961779ede1fc458e8e8a1f78", - "sha256:5f587dfd83cb669933186661a351ad6fc7166273bc3e3a1531ec5c783d997aac", - "sha256:62061e87071497951155cbccee487980524d7abea647a1b2a6eb6b9647df9006", - "sha256:641e329e7f2c01531c45c687efcec8aeca2a78a4ff26d49184dce3d53fc35014", - "sha256:65a7e00c00472cd0f59ae09d2fb8a8aaae7f4a0cf54b2b74f3138d9f9ceb9cb2", - "sha256:6ad6ca45e9e92c05295f638e78cd42bfaaf8ee07878c9ed73e93190b26c125f7", - "sha256:73aa6e86034dad9f00f4bbf5a666a889d17d79db73bc5af04abd6c20a014d9c8", - "sha256:7c9762f80a25d8d0e4ab3cb1af5d9dffbddb3ee5d21c43e3474c84bf5ff941f7", - "sha256:85596aa5d9aac1bf39fe39d9fa1051b0f00823982a1de5766e35d495b4a36ca9", - "sha256:86a0ea78fd851b313b2e712266f663e13b6bc78c2fb260b079e8b67d970474b1", - "sha256:8a620767b8209f3446197c0e29ba895d75a1e272a36af0786ec70fe7834e4307", - "sha256:922fb9ef2c67c3ab20e22948dcfd783397e4c043a5c5fa5ff5e9df5529074b0a", - "sha256:9fad78c13e71546a76c2f8789623eec8e499f8d2d799f4b4547162ce0a4df435", - "sha256:a37c6233b28e5bc340054cf6170e7090a4e85069513320275a4dc929144dccf0", - "sha256:c3fc325ce4cbf902d05a80daa47b645d07e796a80682c1c5800d6ac5045193e5", - "sha256:cda33311cb9fb9323958a69499a667bd728a39a7aa4718d7622597a44c4f1441", - "sha256:db1d4e38c9b15be1521722e946ee24f6db95b189d1447fa9ff18dd16ba89f732", - "sha256:eda55e6e9ea258f5e4add23bcf33dc53b2c319e70806e180aecbff8d90ea24de", - "sha256:f372cdbb240e09ee855735b9d85e7f50730dcfb6296b74b95a3e5dea0615c4c1" - ], - "version": "==5.0.4" + "sha256:08b3ba72bd981531fd557f67beee376d6700fba183b167857038997ba30dd297", + "sha256:2757fa64e11ec12220968f65d086b7a29b6583d16e9a544c889b22ba98555ef1", + "sha256:3102bb2c206700a7d28181dbe04d66b30780cde1d1c02c5f3c165cf3d2489497", + "sha256:3498b27d8236057def41de3585f317abae235dd3a11d33e01736ffedb2ef8606", + "sha256:378ac77af41350a8c6b8801a66021b52da8a05fd77e578b7380e876c0ce4f528", + "sha256:38f16b1317b8dd82df67ed5daa5f5e7c959e46579840d77a67a4ceb9cef0a50b", + "sha256:3911c2ef96e5ddc748a3c8b4702c61986628bb719b8378bf1e4a6184bbd48fe4", + "sha256:3a3c3f8863255f3c31db3889f8055989527173ef6192a283eb6f4db3c579d830", + "sha256:3b14b1da110ea50c8bcbadc3b82c3933974dbeea1832e814aab93ca1163cd4c1", + "sha256:535dc1e6e68fad5355f9984d5637c33badbdc987b0c0d303ee95a6c979c9516f", + "sha256:6f61319e33222591f885c598e3e24f6a4be3533c1d70c19e0dc59e83a71ce27d", + "sha256:723d22d324e7997a651478e9c5a3120a0ecbc9a7e94071f7e1954562a8806cf3", + "sha256:76b2775dda7e78680d688daabcb485dc87cf5e3184a0b3e012e1d40e38527cc8", + "sha256:782a5c7df9f91979a7a21792e09b34a658058896628217ae6362088b123c8500", + "sha256:7e4d159021c2029b958b2363abec4a11db0ce8cd43abb0d9ce44284cb97217e7", + "sha256:8dacc4073c359f40fcf73aede8428c35f84639baad7e1b46fce5ab7a8a7be4bb", + "sha256:8f33d1156241c43755137288dea619105477961cfa7e47f48dbf96bc2c30720b", + "sha256:8ffd4b204d7de77b5dd558cdff986a8274796a1e57813ed005b33fd97e29f059", + "sha256:93a280c9eb736a0dcca19296f3c30c720cb41a71b1f9e617f341f0a8e791a69b", + "sha256:9a4f66259bdd6964d8cf26142733c81fb562252db74ea367d9beb4f815478e72", + "sha256:9a9d4ff06804920388aab69c5ea8a77525cf165356db70131616acd269e19b36", + "sha256:a2070c5affdb3a5e751f24208c5c4f3d5f008fa04d28731416e023c93b275277", + "sha256:a4857f7e2bc6921dbd487c5c88b84f5633de3e7d416c4dc0bb70256775551a6c", + "sha256:a607ae05b6c96057ba86c811d9c43423f35e03874ffb03fbdcd45e0637e8b631", + "sha256:a66ca3bdf21c653e47f726ca57f46ba7fc1f260ad99ba783acc3e58e3ebdb9ff", + "sha256:ab110c48bc3d97b4d19af41865e14531f300b482da21783fdaacd159251890e8", + "sha256:b239711e774c8eb910e9b1ac719f02f5ae4bf35fa0420f438cdc3a7e4e7dd6ec", + "sha256:be0416074d7f253865bb67630cf7210cbc14eb05f4099cc0f82430135aaa7a3b", + "sha256:c46643970dff9f5c976c6512fd35768c4a3819f01f61169d8cdac3f9290903b7", + "sha256:c5ec71fd4a43b6d84ddb88c1df94572479d9a26ef3f150cef3dacefecf888105", + "sha256:c6e5174f8ca585755988bc278c8bb5d02d9dc2e971591ef4a1baabdf2d99589b", + "sha256:c89b558f8a9a5a6f2cfc923c304d49f0ce629c3bd85cb442ca258ec20366394c", + "sha256:cc44e3545d908ecf3e5773266c487ad1877be718d9dc65fc7eb6e7d14960985b", + "sha256:cc6f8246e74dd210d7e2b56c76ceaba1cc52b025cd75dbe96eb48791e0250e98", + "sha256:cd556c79ad665faeae28020a0ab3bda6cd47d94bec48e36970719b0b86e4dcf4", + "sha256:ce6f3a147b4b1a8b09aae48517ae91139b1b010c5f36423fa2b866a8b23df879", + "sha256:ceb499d2b3d1d7b7ba23abe8bf26df5f06ba8c71127f188333dddcf356b4b63f", + "sha256:cef06fb382557f66d81d804230c11ab292d94b840b3cb7bf4450778377b592f4", + "sha256:e448f56cfeae7b1b3b5bcd99bb377cde7c4eb1970a525c770720a352bc4c8044", + "sha256:e52d3d95df81c8f6b2a1685aabffadf2d2d9ad97203a40f8d61e51b70f191e4e", + "sha256:ee2f1d1c223c3d2c24e3afbb2dd38be3f03b1a8d6a83ee3d9eb8c36a52bee899", + "sha256:f2c6888eada180814b8583c3e793f3f343a692fc802546eed45f40a001b1169f", + "sha256:f51dbba78d68a44e99d484ca8c8f604f17e957c1ca09c3ebc2c7e3bbd9ba0448", + "sha256:f54de00baf200b4539a5a092a759f000b5f45fd226d6d25a76b0dff71177a714", + "sha256:fa10fee7e32213f5c7b0d6428ea92e3a3fdd6d725590238a3f92c0de1c78b9d2", + "sha256:fabeeb121735d47d8eab8671b6b031ce08514c86b7ad8f7d5490a7b6dcd6267d", + "sha256:fac3c432851038b3e6afe086f777732bcf7f6ebbfd90951fa04ee53db6d0bcdd", + "sha256:fda29412a66099af6d6de0baa6bd7c52674de177ec2ad2630ca264142d69c6c7", + "sha256:ff1330e8bc996570221b450e2d539134baa9465f5cb98aff0e0f73f34172e0ae" + ], + "version": "==5.3.1" }, "coveralls": { "hashes": [ - "sha256:4b6bfc2a2a77b890f556bc631e35ba1ac21193c356393b66c84465c06218e135", - "sha256:67188c7ec630c5f708c31552f2bcdac4580e172219897c4136504f14b823132f" + "sha256:2301a19500b06649d2ec4f2858f9c69638d7699a4c63027c5d53daba666147cc", + "sha256:b990ba1f7bc4288e63340be0433698c1efe8217f78c689d254c2540af3d38617" ], "index": "pypi", - "version": "==1.11.1" - }, - "decorator": { - "hashes": [ - "sha256:41fa54c2a0cc4ba648be4fd43cff00aedf5b9465c9bf18d64325bc225f08f760", - "sha256:e3a62f0520172440ca0dcc823749319382e377f37f140a0b99ef45fecb84bfe7" - ], - "version": "==4.4.2" + "version": "==2.2.0" }, "distlib": { "hashes": [ - "sha256:2e166e231a26b36d6dfe35a48c4464346620f8645ed0ace01ee31822b288de21" + "sha256:8c09de2c67b3e7deef7184574fc060ab8a793e7adbb183d942c389c8b13c52fb", + "sha256:edf6116872c863e1aa9d5bb7cb5e05a022c519a4594dc703843343a9ddd9bff1" ], - "version": "==0.3.0" + "version": "==0.3.1" }, "docopt": { "hashes": [ @@ -256,13 +266,6 @@ "index": "pypi", "version": "==0.16" }, - "entrypoints": { - "hashes": [ - "sha256:589f874b313739ad35be6e0cd7efde2a4e9b6fea91edcc34e58ecbb8dbe56d19", - "sha256:c70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451" - ], - "version": "==0.3" - }, "filelock": { "hashes": [ "sha256:18d82244ee114f543149c66a6e0c14e9c4f8a1044b5cdaadd0f82159d6a6ff59", @@ -272,55 +275,40 @@ }, "flake8": { "hashes": [ - "sha256:45681a117ecc81e870cbf1262835ae4af5e7a8b08e40b944a8a6e6b895914cfb", - "sha256:49356e766643ad15072a789a20915d3c91dc89fd313ccd71802303fd67e4deca" + "sha256:749dbbd6bfd0cf1318af27bf97a14e28e5ff548ef8e5b1566ccfb25a11e7c839", + "sha256:aadae8761ec651813c24be05c6f7b4680857ef6afaae4651a4eccaef97ce6c3b" ], "index": "pypi", - "version": "==3.7.9" + "version": "==3.8.4" }, "idna": { "hashes": [ - "sha256:7588d1c14ae4c77d74036e8c22ff447b26d0fde8f007354fd48a7814db15b7cb", - "sha256:a068a21ceac8a4d63dbfd964670474107f541babbd2250d61922f029858365fa" + "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6", + "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0" ], - "version": "==2.9" + "version": "==2.10" }, "importlib-metadata": { "hashes": [ - "sha256:2a688cbaa90e0cc587f1df48bdc97a6eadccdcd9c35fb3f976a09e3b5016d90f", - "sha256:34513a8a0c4962bc66d35b359558fd8a5e10cd472d37aec5f66858addef32c1e" + "sha256:5c5a2720817414a6c41f0a49993908068243ae02c1635a228126519b509c8aed", + "sha256:bf792d480abbd5eda85794e4afb09dd538393f7d6e6ffef6e9f03d2014cf9450" ], "markers": "python_version < '3.8'", - "version": "==1.6.0" - }, - "ipython": { - "hashes": [ - "sha256:ca478e52ae1f88da0102360e57e528b92f3ae4316aabac80a2cd7f7ab2efb48a", - "sha256:eb8d075de37f678424527b5ef6ea23f7b80240ca031c2dd6de5879d687a65333" - ], - "index": "pypi", - "version": "==7.13.0" + "version": "==3.3.0" }, - "ipython-genutils": { + "iniconfig": { "hashes": [ - "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8", - "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8" + "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3", + "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32" ], - "version": "==0.2.0" - }, - "jedi": { - "hashes": [ - "sha256:b4f4052551025c6b0b0b193b29a6ff7bdb74c52450631206c262aef9f7159ad2", - "sha256:d5c871cb9360b414f981e7072c52c33258d598305280fef91c6cae34739d65d5" - ], - "version": "==0.16.0" + "version": "==1.1.1" }, "keyring": { "hashes": [ - "sha256:197fd5903901030ef7b82fe247f43cfed2c157a28e7747d1cfcf4bc5e699dd03", - "sha256:8179b1cdcdcbc221456b5b74e6b7cfa06f8dd9f239eb81892166d9223d82c5ba" + "sha256:1746d3ac913d449a090caf11e9e4af00e26c3f7f7e81027872192b2398b98675", + "sha256:4be9cbaaaf83e61d6399f733d113ede7d1c73bc75cb6aeb64eee0f6ac39b30ea" ], - "version": "==21.2.0" + "version": "==21.8.0" }, "mccabe": { "hashes": [ @@ -329,63 +317,40 @@ ], "version": "==0.6.1" }, - "more-itertools": { + "mypy-extensions": { "hashes": [ - "sha256:5dd8bcf33e5f9513ffa06d5ad33d78f31e1931ac9a18f33d37e77a180d393a7c", - "sha256:b1ddb932186d8a6ac451e1d95844b382f55e12686d51ca0c68b6f61f2ab7a507" + "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d", + "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8" ], - "version": "==8.2.0" + "version": "==0.4.3" }, "packaging": { "hashes": [ - "sha256:3c292b474fda1671ec57d46d739d072bfd495a4f51ad01a055121d81e952b7a3", - "sha256:82f77b9bee21c1bafbf35a84905d604d5d1223801d639cf3ed140bd651c08752" + "sha256:24e0da08660a87484d1602c30bb4902d74816b6985b93de36926f5bc95741858", + "sha256:78598185a7008a470d64526a8059de9aaa449238f280fc9eb6b13ba6c4109093" ], - "version": "==20.3" - }, - "parso": { - "hashes": [ - "sha256:0c5659e0c6eba20636f99a04f469798dca8da279645ce5c387315b2c23912157", - "sha256:8515fc12cfca6ee3aa59138741fc5624d62340c97e401c74875769948d4f2995" - ], - "version": "==0.6.2" + "version": "==20.8" }, "pathspec": { "hashes": [ - "sha256:163b0632d4e31cef212976cf57b43d9fd6b0bac6e67c26015d611a647d5e7424", - "sha256:562aa70af2e0d434367d9790ad37aed893de47f1693e4201fd1d3dca15d19b96" + "sha256:86379d6b86d75816baba717e64b1a3a3469deb93bb76d613c9ce79edc5cb68fd", + "sha256:aa0cb481c4041bf52ffa7b0d8fa6cd3e88a2ca4879c533c9153882ee2556790d" ], - "version": "==0.7.0" + "version": "==0.8.1" }, "pbr": { "hashes": [ - "sha256:139d2625547dbfa5fb0b81daebb39601c478c21956dc57e2e07b74450a8c506b", - "sha256:61aa52a0f18b71c5cc58232d2cf8f8d09cd67fcad60b742a60124cb8d6951488" - ], - "version": "==5.4.4" - }, - "pexpect": { - "hashes": [ - "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937", - "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c" - ], - "markers": "sys_platform != 'win32'", - "version": "==4.8.0" - }, - "pickleshare": { - "hashes": [ - "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca", - "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56" + "sha256:5fad80b613c402d5b7df7bd84812548b2a61e9977387a80a5fc5c396492b13c9", + "sha256:b236cde0ac9a6aedd5e3c34517b423cd4fd97ef723849da6b0d2231142d89c00" ], - "version": "==0.7.5" + "version": "==5.5.1" }, "pipenv": { "hashes": [ - "sha256:56ad5f5cb48f1e58878e14525a6e3129d4306049cb76d2f6a3e95df0d5fc6330", - "sha256:7df8e33a2387de6f537836f48ac6fcd94eda6ed9ba3d5e3fd52e35b5bc7ff49e", - "sha256:a673e606e8452185e9817a987572b55360f4d28b50831ef3b42ac3cab3fee846" + "sha256:4ab2f60742184d851ac44b9e1d423afe71dc2ea7a68bde07eb890c8b4ce5a420", + "sha256:8253fe6f9cfb3791a54da8a0571f73c918cb3457dd908684c1800a13a06ec4c1" ], - "version": "==2018.11.26" + "version": "==2020.11.15" }, "pipenv-to-requirements": { "hashes": [ @@ -397,122 +362,128 @@ }, "pkginfo": { "hashes": [ - "sha256:7424f2c8511c186cd5424bbf31045b77435b37a8d604990b79d4e70d741148bb", - "sha256:a6d9e40ca61ad3ebd0b72fbadd4fba16e4c0e4df0428c041e01e06eb6ee71f32" + "sha256:a6a4ac943b496745cec21f14f021bbd869d5e9b4f6ec06918cffea5a2f4b9193", + "sha256:ce14d7296c673dc4c61c759a0b6c14bae34e34eb819c0017bb6ca5b7292c56e9" ], - "version": "==1.5.0.1" + "version": "==1.6.1" }, "pluggy": { "hashes": [ - "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0", - "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d" + "sha256:265a94bf44ca13662f12fcd1b074c14d4b269a712f051b6f644ef7e705d6735f", + "sha256:467f0219e89bb5061a8429c6fc5cf055fa3983a0e68e84a1d205046306b37d9e" ], - "version": "==0.13.1" - }, - "prompt-toolkit": { - "hashes": [ - "sha256:563d1a4140b63ff9dd587bda9557cffb2fe73650205ab6f4383092fb882e7dc8", - "sha256:df7e9e63aea609b1da3a65641ceaf5bc7d05e0a04de5bd45d05dbeffbabf9e04" - ], - "version": "==3.0.5" - }, - "ptyprocess": { - "hashes": [ - "sha256:923f299cc5ad920c68f2bc0bc98b75b9f838b93b599941a6b63ddbc2476394c0", - "sha256:d7cc528d76e76342423ca640335bd3633420dc1366f258cb31d05e865ef5ca1f" - ], - "version": "==0.6.0" + "version": "==1.0.0.dev0" }, "py": { "hashes": [ - "sha256:5e27081401262157467ad6e7f851b7aa402c5852dbcb3dae06768434de5752aa", - "sha256:c20fdd83a5dbc0af9efd622bee9a5564e278f6380fffcacc43ba6f43db2813b0" + "sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3", + "sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a" ], - "version": "==1.8.1" + "version": "==1.10.0" }, "pycodestyle": { "hashes": [ - "sha256:95a2219d12372f05704562a14ec30bc76b05a5b297b21a5dfe3f6fac3491ae56", - "sha256:e40a936c9a450ad81df37f549d676d127b1b66000a6c500caa2b085bc0ca976c" + "sha256:2295e7b2f6b5bd100585ebcb1f616591b652db8a741695b3d8f5d28bdc934367", + "sha256:c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e" ], - "version": "==2.5.0" + "version": "==2.6.0" }, "pyflakes": { "hashes": [ - "sha256:17dbeb2e3f4d772725c777fabc446d5634d1038f234e77343108ce445ea69ce0", - "sha256:d976835886f8c5b31d47970ed689944a0262b5f3afa00a5a7b4dc81e5449f8a2" + "sha256:0d94e0e05a19e57a99444b6ddcf9a6eb2e5c68d3ca1e98e90707af8152c90a92", + "sha256:35b2d75ee967ea93b55750aa9edbbf72813e06a66ba54438df2cfac9e3c27fc8" ], - "version": "==2.1.1" + "version": "==2.2.0" }, "pygments": { "hashes": [ - "sha256:647344a061c249a3b74e230c739f434d7ea4d8b1d5f3721bc0f3558049b38f44", - "sha256:ff7a40b4860b727ab48fad6360eb351cc1b33cbf9b15a0f689ca5353e9463324" + "sha256:ccf3acacf3782cbed4a989426012f1c535c9a90d3a7fc3f16d231b9372d2b716", + "sha256:f275b6c0909e5dafd2d6269a656aa90fa58ebf4a74f8fcf9053195d226b24a08" ], - "version": "==2.6.1" + "version": "==2.7.3" }, "pyparsing": { "hashes": [ - "sha256:67199f0c41a9c702154efb0e7a8cc08accf830eb003b4d9fa42c4059002e2492", - "sha256:700d17888d441604b0bd51535908dcb297561b040819cccde647a92439db5a2a" + "sha256:1c6409312ce2ce2997896af5756753778d5f1603666dba5587804f09ad82ed27", + "sha256:f4896b4cc085a1f8f8ae53a1a90db5a86b3825ff73eb974dffee3d9e701007f4" ], - "version": "==3.0.0a1" + "version": "==3.0.0b2" }, "pytest": { "hashes": [ - "sha256:0e5b30f5cb04e887b91b1ee519fa3d89049595f428c1db76e73bd7f17b09b172", - "sha256:84dde37075b8805f3d1f392cc47e38a0e59518fb46a431cfdaf7cf1ce805f970" + "sha256:1969f797a1a0dbd8ccf0fecc80262312729afea9c17f1d70ebf85c5e76c6f7c8", + "sha256:66e419b1899bc27346cb2c993e12c5e5e8daba9073c1fbce33b9807abc95c306" ], "index": "pypi", - "version": "==5.4.1" + "version": "==6.2.1" }, "pytest-cov": { "hashes": [ - "sha256:cc6742d8bac45070217169f5f72ceee1e0e55b0221f54bcf24845972d3a47f2b", - "sha256:cdbdef4f870408ebdbfeb44e63e07eb18bb4619fae852f6e760645fa36172626" + "sha256:45ec2d5182f89a81fc3eb29e3d1ed3113b9e9a873bcddb2a71faaab066110191", + "sha256:47bd0ce14056fdd79f93e1713f88fad7bdcc583dcd7783da86ef2f085a0bb88e" ], "index": "pypi", - "version": "==2.8.1" + "version": "==2.10.1" }, "readme-renderer": { "hashes": [ - "sha256:1b6d8dd1673a0b293766b4106af766b6eff3654605f9c4f239e65de6076bc222", - "sha256:e67d64242f0174a63c3b727801a2fff4c1f38ebe5d71d95ff7ece081945a6cd4" + "sha256:267854ac3b1530633c2394ead828afcd060fc273217c42ac36b6be9c42cd9a9d", + "sha256:6b7e5aa59210a40de72eb79931491eaf46fefca2952b9181268bd7c7c65c260a" ], - "version": "==25.0" + "version": "==28.0" }, "regex": { "hashes": [ - "sha256:08119f707f0ebf2da60d2f24c2f39ca616277bb67ef6c92b72cbf90cbe3a556b", - "sha256:0ce9537396d8f556bcfc317c65b6a0705320701e5ce511f05fc04421ba05b8a8", - "sha256:1cbe0fa0b7f673400eb29e9ef41d4f53638f65f9a2143854de6b1ce2899185c3", - "sha256:2294f8b70e058a2553cd009df003a20802ef75b3c629506be20687df0908177e", - "sha256:23069d9c07e115537f37270d1d5faea3e0bdded8279081c4d4d607a2ad393683", - "sha256:24f4f4062eb16c5bbfff6a22312e8eab92c2c99c51a02e39b4eae54ce8255cd1", - "sha256:295badf61a51add2d428a46b8580309c520d8b26e769868b922750cf3ce67142", - "sha256:2a3bf8b48f8e37c3a40bb3f854bf0121c194e69a650b209628d951190b862de3", - "sha256:4385f12aa289d79419fede43f979e372f527892ac44a541b5446617e4406c468", - "sha256:5635cd1ed0a12b4c42cce18a8d2fb53ff13ff537f09de5fd791e97de27b6400e", - "sha256:5bfed051dbff32fd8945eccca70f5e22b55e4148d2a8a45141a3b053d6455ae3", - "sha256:7e1037073b1b7053ee74c3c6c0ada80f3501ec29d5f46e42669378eae6d4405a", - "sha256:90742c6ff121a9c5b261b9b215cb476eea97df98ea82037ec8ac95d1be7a034f", - "sha256:a58dd45cb865be0ce1d5ecc4cfc85cd8c6867bea66733623e54bd95131f473b6", - "sha256:c087bff162158536387c53647411db09b6ee3f9603c334c90943e97b1052a156", - "sha256:c162a21e0da33eb3d31a3ac17a51db5e634fc347f650d271f0305d96601dc15b", - "sha256:c9423a150d3a4fc0f3f2aae897a59919acd293f4cb397429b120a5fcd96ea3db", - "sha256:ccccdd84912875e34c5ad2d06e1989d890d43af6c2242c6fcfa51556997af6cd", - "sha256:e91ba11da11cf770f389e47c3f5c30473e6d85e06d7fd9dcba0017d2867aab4a", - "sha256:ea4adf02d23b437684cd388d557bf76e3afa72f7fed5bbc013482cc00c816948", - "sha256:fb95debbd1a824b2c4376932f2216cc186912e389bdb0e27147778cf6acb3f89" - ], - "version": "==2020.4.4" + "sha256:02951b7dacb123d8ea6da44fe45ddd084aa6777d4b2454fa0da61d569c6fa538", + "sha256:0d08e71e70c0237883d0bef12cad5145b84c3705e9c6a588b2a9c7080e5af2a4", + "sha256:1862a9d9194fae76a7aaf0150d5f2a8ec1da89e8b55890b1786b8f88a0f619dc", + "sha256:1ab79fcb02b930de09c76d024d279686ec5d532eb814fd0ed1e0051eb8bd2daa", + "sha256:1fa7ee9c2a0e30405e21031d07d7ba8617bc590d391adfc2b7f1e8b99f46f444", + "sha256:262c6825b309e6485ec2493ffc7e62a13cf13fb2a8b6d212f72bd53ad34118f1", + "sha256:2a11a3e90bd9901d70a5b31d7dd85114755a581a5da3fc996abfefa48aee78af", + "sha256:2c99e97d388cd0a8d30f7c514d67887d8021541b875baf09791a3baad48bb4f8", + "sha256:3128e30d83f2e70b0bed9b2a34e92707d0877e460b402faca908c6667092ada9", + "sha256:38c8fd190db64f513fe4e1baa59fed086ae71fa45083b6936b52d34df8f86a88", + "sha256:3bddc701bdd1efa0d5264d2649588cbfda549b2899dc8d50417e47a82e1387ba", + "sha256:4902e6aa086cbb224241adbc2f06235927d5cdacffb2425c73e6570e8d862364", + "sha256:49cae022fa13f09be91b2c880e58e14b6da5d10639ed45ca69b85faf039f7a4e", + "sha256:56e01daca75eae420bce184edd8bb341c8eebb19dd3bce7266332258f9fb9dd7", + "sha256:5862975b45d451b6db51c2e654990c1820523a5b07100fc6903e9c86575202a0", + "sha256:6a8ce43923c518c24a2579fda49f093f1397dad5d18346211e46f134fc624e31", + "sha256:6c54ce4b5d61a7129bad5c5dc279e222afd00e721bf92f9ef09e4fae28755683", + "sha256:6e4b08c6f8daca7d8f07c8d24e4331ae7953333dbd09c648ed6ebd24db5a10ee", + "sha256:717881211f46de3ab130b58ec0908267961fadc06e44f974466d1887f865bd5b", + "sha256:749078d1eb89484db5f34b4012092ad14b327944ee7f1c4f74d6279a6e4d1884", + "sha256:7913bd25f4ab274ba37bc97ad0e21c31004224ccb02765ad984eef43e04acc6c", + "sha256:7a25fcbeae08f96a754b45bdc050e1fb94b95cab046bf56b016c25e9ab127b3e", + "sha256:83d6b356e116ca119db8e7c6fc2983289d87b27b3fac238cfe5dca529d884562", + "sha256:8b882a78c320478b12ff024e81dc7d43c1462aa4a3341c754ee65d857a521f85", + "sha256:8f6a2229e8ad946e36815f2a03386bb8353d4bde368fdf8ca5f0cb97264d3b5c", + "sha256:9801c4c1d9ae6a70aeb2128e5b4b68c45d4f0af0d1535500884d644fa9b768c6", + "sha256:a15f64ae3a027b64496a71ab1f722355e570c3fac5ba2801cafce846bf5af01d", + "sha256:a3d748383762e56337c39ab35c6ed4deb88df5326f97a38946ddd19028ecce6b", + "sha256:a63f1a07932c9686d2d416fb295ec2c01ab246e89b4d58e5fa468089cab44b70", + "sha256:b2b1a5ddae3677d89b686e5c625fc5547c6e492bd755b520de5332773a8af06b", + "sha256:b2f4007bff007c96a173e24dcda236e5e83bde4358a557f9ccf5e014439eae4b", + "sha256:baf378ba6151f6e272824b86a774326f692bc2ef4cc5ce8d5bc76e38c813a55f", + "sha256:bafb01b4688833e099d79e7efd23f99172f501a15c44f21ea2118681473fdba0", + "sha256:bba349276b126947b014e50ab3316c027cac1495992f10e5682dc677b3dfa0c5", + "sha256:c084582d4215593f2f1d28b65d2a2f3aceff8342aa85afd7be23a9cad74a0de5", + "sha256:d1ebb090a426db66dd80df8ca85adc4abfcbad8a7c2e9a5ec7513ede522e0a8f", + "sha256:d2d8ce12b7c12c87e41123997ebaf1a5767a5be3ec545f64675388970f415e2e", + "sha256:e32f5f3d1b1c663af7f9c4c1e72e6ffe9a78c03a31e149259f531e0fed826512", + "sha256:e3faaf10a0d1e8e23a9b51d1900b72e1635c2d5b0e1bea1c18022486a8e2e52d", + "sha256:f7d29a6fc4760300f86ae329e3b6ca28ea9c20823df123a2ea8693e967b29917", + "sha256:f8f295db00ef5f8bae530fc39af0b40486ca6068733fb860b42115052206466f" + ], + "version": "==2020.11.13" }, "requests": { "hashes": [ - "sha256:43999036bfa82904b6af1d99e4882b560e5e2c68e5c4b0aa03b655f3d7d73fee", - "sha256:b3f43d496c6daba4493e7c431722aeb7dbc6288f52a6e04e7b6023b0247817e6" + "sha256:27973dd4a904a4f13b263a19c866c13b92a39ed1c964655f025f3f8d3d75b804", + "sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e" ], - "version": "==2.23.0" + "version": "==2.25.1" }, "requests-toolbelt": { "hashes": [ @@ -521,81 +492,99 @@ ], "version": "==0.9.1" }, - "six": { + "rfc3986": { "hashes": [ - "sha256:236bdbdce46e6e6a3d61a337c0f8b763ca1e8717c03b369e87a7ec7ce1319c0a", - "sha256:8f3cd2e254d8f793e7f3d6d9df77b92252b52637291d0f0da013c76ea2724b6c" + "sha256:112398da31a3344dc25dbf477d8df6cb34f9278a94fee2625d89e4514be8bb9d", + "sha256:af9147e9aceda37c91a05f4deb128d4b4b49d6b199775fd2d2927768abdc8f50" ], - "version": "==1.14.0" + "version": "==1.4.0" }, - "toml": { + "six": { "hashes": [ - "sha256:229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c", - "sha256:235682dd292d5899d361a811df37e04a8828a5b1da3115886b73cf81ebc9100e" + "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", + "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" ], - "version": "==0.10.0" + "version": "==1.15.0" }, - "tqdm": { + "toml": { "hashes": [ - "sha256:00339634a22c10a7a22476ee946bbde2dbe48d042ded784e4d88e0236eca5d81", - "sha256:ea9e3fd6bd9a37e8783d75bfc4c1faf3c6813da6bd1c3e776488b41ec683af94" + "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", + "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" ], - "version": "==4.45.0" + "version": "==0.10.2" }, - "traitlets": { + "tqdm": { "hashes": [ - "sha256:70b4c6a1d9019d7b4f6846832288f86998aa3b9207c6821f3578a6a6a467fe44", - "sha256:d023ee369ddd2763310e4c3eae1ff649689440d4ae59d7485eb4cfbbe3e359f7" + "sha256:556c55b081bd9aa746d34125d024b73f0e2a0e62d5927ff0e400e20ee0a03b9a", + "sha256:b8b46036fd00176d0870307123ef06bb851096964fa7fc578d789f90ce82c3e4" ], - "version": "==4.3.3" + "version": "==4.55.1" }, "twine": { "hashes": [ - "sha256:c1af8ca391e43b0a06bbc155f7f67db0bf0d19d284bfc88d1675da497a946124", - "sha256:d561a5e511f70275e5a485a6275ff61851c16ffcb3a95a602189161112d9f160" + "sha256:2f6942ec2a17417e19d2dd372fc4faa424c87ee9ce49b4e20c427eb00a0f3f41", + "sha256:fcffa8fc37e8083a5be0728371f299598870ee1eccc94e9a25cef7b1dcfa8297" ], "index": "pypi", - "version": "==3.1.1" + "version": "==3.3.0" }, "typed-ast": { "hashes": [ - "sha256:0666aa36131496aed8f7be0410ff974562ab7eeac11ef351def9ea6fa28f6355", - "sha256:0c2c07682d61a629b68433afb159376e24e5b2fd4641d35424e462169c0a7919", - "sha256:249862707802d40f7f29f6e1aad8d84b5aa9e44552d2cc17384b209f091276aa", - "sha256:24995c843eb0ad11a4527b026b4dde3da70e1f2d8806c99b7b4a7cf491612652", - "sha256:269151951236b0f9a6f04015a9004084a5ab0d5f19b57de779f908621e7d8b75", - "sha256:4083861b0aa07990b619bd7ddc365eb7fa4b817e99cf5f8d9cf21a42780f6e01", - "sha256:498b0f36cc7054c1fead3d7fc59d2150f4d5c6c56ba7fb150c013fbc683a8d2d", - "sha256:4e3e5da80ccbebfff202a67bf900d081906c358ccc3d5e3c8aea42fdfdfd51c1", - "sha256:6daac9731f172c2a22ade6ed0c00197ee7cc1221aa84cfdf9c31defeb059a907", - "sha256:715ff2f2df46121071622063fc7543d9b1fd19ebfc4f5c8895af64a77a8c852c", - "sha256:73d785a950fc82dd2a25897d525d003f6378d1cb23ab305578394694202a58c3", - "sha256:8c8aaad94455178e3187ab22c8b01a3837f8ee50e09cf31f1ba129eb293ec30b", - "sha256:8ce678dbaf790dbdb3eba24056d5364fb45944f33553dd5869b7580cdbb83614", - "sha256:aaee9905aee35ba5905cfb3c62f3e83b3bec7b39413f0a7f19be4e547ea01ebb", - "sha256:bcd3b13b56ea479b3650b82cabd6b5343a625b0ced5429e4ccad28a8973f301b", - "sha256:c9e348e02e4d2b4a8b2eedb48210430658df6951fa484e59de33ff773fbd4b41", - "sha256:d205b1b46085271b4e15f670058ce182bd1199e56b317bf2ec004b6a44f911f6", - "sha256:d43943ef777f9a1c42bf4e552ba23ac77a6351de620aa9acf64ad54933ad4d34", - "sha256:d5d33e9e7af3b34a40dc05f498939f0ebf187f07c385fd58d591c533ad8562fe", - "sha256:fc0fea399acb12edbf8a628ba8d2312f583bdbdb3335635db062fa98cf71fca4", - "sha256:fe460b922ec15dd205595c9b5b99e2f056fd98ae8f9f56b888e7a17dc2b757e7" - ], - "version": "==1.4.1" + "sha256:07d49388d5bf7e863f7fa2f124b1b1d89d8aa0e2f7812faff0a5658c01c59aa1", + "sha256:14bf1522cdee369e8f5581238edac09150c765ec1cb33615855889cf33dcb92d", + "sha256:240296b27397e4e37874abb1df2a608a92df85cf3e2a04d0d4d61055c8305ba6", + "sha256:36d829b31ab67d6fcb30e185ec996e1f72b892255a745d3a82138c97d21ed1cd", + "sha256:37f48d46d733d57cc70fd5f30572d11ab8ed92da6e6b28e024e4a3edfb456e37", + "sha256:4c790331247081ea7c632a76d5b2a265e6d325ecd3179d06e9cf8d46d90dd151", + "sha256:5dcfc2e264bd8a1db8b11a892bd1647154ce03eeba94b461effe68790d8b8e07", + "sha256:7147e2a76c75f0f64c4319886e7639e490fee87c9d25cb1d4faef1d8cf83a440", + "sha256:7703620125e4fb79b64aa52427ec192822e9f45d37d4b6625ab37ef403e1df70", + "sha256:8368f83e93c7156ccd40e49a783a6a6850ca25b556c0fa0240ed0f659d2fe496", + "sha256:84aa6223d71012c68d577c83f4e7db50d11d6b1399a9c779046d75e24bed74ea", + "sha256:85f95aa97a35bdb2f2f7d10ec5bbdac0aeb9dafdaf88e17492da0504de2e6400", + "sha256:8db0e856712f79c45956da0c9a40ca4246abc3485ae0d7ecc86a20f5e4c09abc", + "sha256:9044ef2df88d7f33692ae3f18d3be63dec69c4fb1b5a4a9ac950f9b4ba571606", + "sha256:963c80b583b0661918718b095e02303d8078950b26cc00b5e5ea9ababe0de1fc", + "sha256:987f15737aba2ab5f3928c617ccf1ce412e2e321c77ab16ca5a293e7bbffd581", + "sha256:9ec45db0c766f196ae629e509f059ff05fc3148f9ffd28f3cfe75d4afb485412", + "sha256:9fc0b3cb5d1720e7141d103cf4819aea239f7d136acf9ee4a69b047b7986175a", + "sha256:a2c927c49f2029291fbabd673d51a2180038f8cd5a5b2f290f78c4516be48be2", + "sha256:a38878a223bdd37c9709d07cd357bb79f4c760b29210e14ad0fb395294583787", + "sha256:b4fcdcfa302538f70929eb7b392f536a237cbe2ed9cba88e3bf5027b39f5f77f", + "sha256:c0c74e5579af4b977c8b932f40a5464764b2f86681327410aa028a22d2f54937", + "sha256:c1c876fd795b36126f773db9cbb393f19808edd2637e00fd6caba0e25f2c7b64", + "sha256:c9aadc4924d4b5799112837b226160428524a9a45f830e0d0f184b19e4090487", + "sha256:cc7b98bf58167b7f2db91a4327da24fb93368838eb84a44c472283778fc2446b", + "sha256:cf54cfa843f297991b7388c281cb3855d911137223c6b6d2dd82a47ae5125a41", + "sha256:d003156bb6a59cda9050e983441b7fa2487f7800d76bdc065566b7d728b4581a", + "sha256:d175297e9533d8d37437abc14e8a83cbc68af93cc9c1c59c2c292ec59a0697a3", + "sha256:d746a437cdbca200622385305aedd9aef68e8a645e385cc483bdc5e488f07166", + "sha256:e683e409e5c45d5c9082dc1daf13f6374300806240719f95dc783d1fc942af10" + ], + "version": "==1.4.2" + }, + "typing-extensions": { + "hashes": [ + "sha256:7cb407020f00f7bfc3cb3e7881628838e69d8f3fcab2f64742a5e76b2f841918", + "sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c", + "sha256:dafc7639cde7f1b6e1acc0f457842a83e722ccca8eef5270af2d74792619a89f" + ], + "markers": "python_version < '3.8'", + "version": "==3.7.4.3" }, "urllib3": { "hashes": [ - "sha256:2f3db8b19923a873b3e5256dc9c2dedfa883e33d87c690d9c7913e1f40673cdc", - "sha256:87716c2d2a7121198ebcb7ce7cccf6ce5e9ba539041cfbaeecfb641dc0bf6acc" + "sha256:19188f96923873c92ccb987120ec4acaa12f0461fa9ce5d3d0772bc965a39e08", + "sha256:d8ff90d979214d7b4f8ce956e80f4028fc6860e4431f731ea4a8c08f23f99473" ], - "version": "==1.25.8" + "version": "==1.26.2" }, "virtualenv": { "hashes": [ - "sha256:6ea131d41c477f6c4b7863948a9a54f7fa196854dbef73efbdff32b509f4d8bf", - "sha256:94f647e12d1e6ced2541b93215e51752aecbd1bbb18eb1816e2867f7532b1fe1" + "sha256:54b05fc737ea9c9ee9f8340f579e5da5b09fb64fd010ab5757eb90268616907c", + "sha256:b7a8ec323ee02fb2312f098b6b4c9de99559b462775bc8fe3627a73706603c1b" ], - "version": "==20.0.16" + "version": "==20.2.2" }, "virtualenv-clone": { "hashes": [ @@ -604,13 +593,6 @@ ], "version": "==0.5.4" }, - "wcwidth": { - "hashes": [ - "sha256:cafe2186b3c009a04067022ce1dcd79cb38d8d65ee4f4791b8888d6599d1bbe1", - "sha256:ee73862862a156bf77ff92b09034fc4825dd3af9cf81bc5b360668d425f3c5f1" - ], - "version": "==0.1.9" - }, "webencodings": { "hashes": [ "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", @@ -620,18 +602,18 @@ }, "wheel": { "hashes": [ - "sha256:8788e9155fe14f54164c1b9eb0a319d98ef02c160725587ad60f14ddc57b6f96", - "sha256:df277cb51e61359aba502208d680f90c0493adec6f0e848af94948778aed386e" + "sha256:78b5b185f0e5763c26ca1e324373aadd49182ca90e825f7853f4b2509215dc0e", + "sha256:e11eefd162658ea59a60a0f6c7d493a7190ea4b9a85e335b33489d9f17e0245e" ], "index": "pypi", - "version": "==0.34.2" + "version": "==0.36.2" }, "zipp": { "hashes": [ - "sha256:aa36550ff0c0b7ef7fa639055d797116ee891440eac1a56f378e2d3179e0320b", - "sha256:c599e4d75c98f6798c509911d08a22e6c021d074469042177c8c86fb92eefd96" + "sha256:102c24ef8f171fd729d46599845e95c7ab894a4cf45f5de11a44cc7444fb1108", + "sha256:ed5eee1974372595f9e416cc7bbeeb12335201d8081ca8a0743c954d4446e5cb" ], - "version": "==3.1.0" + "version": "==3.4.0" } } } From 9b9f56282075e47f4a4878e38c48b8341d9e6a9b Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 4 Jan 2021 17:54:11 -0800 Subject: [PATCH 111/120] Bump jmespath from 0.9.0 to 0.10.0 (#498) Bumps [jmespath](https://github.com/jmespath/jmespath.py) from 0.9.0 to 0.10.0. - [Release notes](https://github.com/jmespath/jmespath.py/releases) - [Changelog](https://github.com/jmespath/jmespath.py/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/jmespath/jmespath.py/compare/0.9.0...0.10.0) Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> --- Pipfile | 2 +- Pipfile.lock | 1299 ++++++++++++++++++++++++++------------------------ 2 files changed, 684 insertions(+), 617 deletions(-) diff --git a/Pipfile b/Pipfile index e7fbe551..ad2ccb3f 100644 --- a/Pipfile +++ b/Pipfile @@ -20,7 +20,7 @@ boto3 = "==1.4.4" botocore = "==1.5.62" click = "==6.6" docutils = "*" -jmespath = "==0.9.0" +jmespath = "==0.10.0" pyaml = "==15.8.2" python-dateutil = "==2.5.3" PyYAML = "==5.1" diff --git a/Pipfile.lock b/Pipfile.lock index 304b435a..8858afe3 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,619 +1,686 @@ { - "_meta": { - "hash": { - "sha256": "abfc715163f99fd278d10c1af4b23a8143dd19850dfb7cdc284ba79be06c4a3d" - }, - "pipfile-spec": 6, - "requires": {}, - "sources": [ - { - "name": "pypi", - "url": "https://pypi.org/simple", - "verify_ssl": true - } - ] - }, - "default": { - "boto3": { - "hashes": [ - "sha256:5050c29353fec97301116386f469fa5858ccf47201623b53cf9f74e603bda52f", - "sha256:518f724c4758e5a5bed114fbcbd1cf470a15306d416ff421a025b76f1d390939" - ], - "index": "pypi", - "version": "==1.4.4" - }, - "botocore": { - "hashes": [ - "sha256:79c9347b1333f94372c0c2fea950326b41c83ff16e67298db0a016708fe45be6", - "sha256:9878598a9db8be63788dc1030616d1e5b64e4a9c2d85dba34b4a5c3b6b049fa6" - ], - "index": "pypi", - "version": "==1.5.62" - }, - "click": { - "hashes": [ - "sha256:cc6a19da8ebff6e7074f731447ef7e112bd23adf3de5c597cf9989f2fd8defe9", - "sha256:fcf697e1fd4b567d817c69dab10a4035937fe6af175c05fd6806b69f74cbc6c4" - ], - "index": "pypi", - "version": "==6.6" - }, - "docutils": { - "hashes": [ - "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af", - "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc" - ], - "index": "pypi", - "version": "==0.16" - }, - "jmespath": { - "hashes": [ - "sha256:08dfaa06d4397f283a01e57089f3360e3b52b5b9da91a70e1fd91e9f0cdd3d3d", - "sha256:ade5261b0d7d34b6f53accc91e6881b579b40161ed575e6ac465de5edad32815" - ], - "index": "pypi", - "version": "==0.9.0" - }, - "pyaml": { - "hashes": [ - "sha256:9c54fb5f17b58572c4cef50affea60bb73f445ab153580dac07a12383712b5b8" - ], - "index": "pypi", - "version": "==15.8.2" - }, - "python-dateutil": { - "hashes": [ - "sha256:1408fdb07c6a1fa9997567ce3fcee6a337b39a503d80699e0f213de4aa4b32ed", - "sha256:598499a75be2e5e18a66f12c00dd47a069de24794effeda4228bfc760f44f527", - "sha256:9d94861f04ce14f9a3d835206067c889b8f1244f1415035dadcf9c10066adf04" - ], - "index": "pypi", - "version": "==2.5.3" - }, - "pyyaml": { - "hashes": [ - "sha256:1adecc22f88d38052fb787d959f003811ca858b799590a5eaa70e63dca50308c", - "sha256:436bc774ecf7c103814098159fbb84c2715d25980175292c648f2da143909f95", - "sha256:460a5a4248763f6f37ea225d19d5c205677d8d525f6a83357ca622ed541830c2", - "sha256:5a22a9c84653debfbf198d02fe592c176ea548cccce47553f35f466e15cf2fd4", - "sha256:7a5d3f26b89d688db27822343dfa25c599627bc92093e788956372285c6298ad", - "sha256:9372b04a02080752d9e6f990179a4ab840227c6e2ce15b95e1278456664cf2ba", - "sha256:a5dcbebee834eaddf3fa7366316b880ff4062e4bcc9787b78c7fbb4a26ff2dd1", - "sha256:aee5bab92a176e7cd034e57f46e9df9a9862a71f8f37cad167c6fc74c65f5b4e", - "sha256:c51f642898c0bacd335fc119da60baae0824f2cde95b0330b56c0553439f0673", - "sha256:c68ea4d3ba1705da1e0d85da6684ac657912679a649e8868bd850d2c299cce13", - "sha256:e23d0cc5299223dcc37885dae624f382297717e459ea24053709675a976a3e19" - ], - "index": "pypi", - "version": "==5.1" - }, - "s3transfer": { - "hashes": [ - "sha256:90dc18e028989c609146e241ea153250be451e05ecc0c2832565231dacdf59c1", - "sha256:c7a9ec356982d5e9ab2d4b46391a7d6a950e2b04c472419f5fdec70cc0ada72f" - ], - "version": "==0.1.13" - }, - "six": { - "hashes": [ - "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", - "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" - ], - "version": "==1.15.0" - } - }, - "develop": { - "appdirs": { - "hashes": [ - "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41", - "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128" - ], - "version": "==1.4.4" - }, - "attrs": { - "hashes": [ - "sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6", - "sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700" - ], - "version": "==20.3.0" - }, - "black": { - "hashes": [ - "sha256:1c02557aa099101b9d21496f8a914e9ed2222ef70336404eeeac8edba836fbea" - ], - "index": "pypi", - "version": "==20.8b1" - }, - "bleach": { - "hashes": [ - "sha256:52b5919b81842b1854196eaae5ca29679a2f2e378905c346d3ca8227c2c66080", - "sha256:9f8ccbeb6183c6e6cddea37592dfb0167485c1e3b13b3363bc325aa8bda3adbd" - ], - "version": "==3.2.1" - }, - "bump2version": { - "hashes": [ - "sha256:37f927ea17cde7ae2d7baf832f8e80ce3777624554a653006c9144f8017fe410", - "sha256:762cb2bfad61f4ec8e2bdf452c7c267416f8c70dd9ecb1653fd0bbb01fa936e6" - ], - "version": "==1.0.1" - }, - "bumpversion": { - "hashes": [ - "sha256:4ba55e4080d373f80177b4dabef146c07ce73c7d1377aabf9d3c3ae1f94584a6", - "sha256:4eb3267a38194d09f048a2179980bb4803701969bff2c85fa8f6d1ce050be15e" - ], - "index": "pypi", - "version": "==0.6.0" - }, - "certifi": { - "hashes": [ - "sha256:1a4995114262bffbc2413b159f2a1a480c969de6e6eb13ee966d470af86af59c", - "sha256:719a74fb9e33b9bd44cc7f3a8d94bc35e4049deebe19ba7d8e108280cfd59830" - ], - "version": "==2020.12.5" - }, - "chardet": { - "hashes": [ - "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa", - "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5" - ], - "version": "==4.0.0" - }, - "click": { - "hashes": [ - "sha256:cc6a19da8ebff6e7074f731447ef7e112bd23adf3de5c597cf9989f2fd8defe9", - "sha256:fcf697e1fd4b567d817c69dab10a4035937fe6af175c05fd6806b69f74cbc6c4" - ], - "index": "pypi", - "version": "==6.6" - }, - "codecov": { - "hashes": [ - "sha256:6cde272454009d27355f9434f4e49f238c0273b216beda8472a65dc4957f473b", - "sha256:ba8553a82942ce37d4da92b70ffd6d54cf635fc1793ab0a7dc3fecd6ebfb3df8" - ], - "index": "pypi", - "version": "==2.1.11" - }, - "colorama": { - "hashes": [ - "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b", - "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2" - ], - "version": "==0.4.4" - }, - "coverage": { - "hashes": [ - "sha256:08b3ba72bd981531fd557f67beee376d6700fba183b167857038997ba30dd297", - "sha256:2757fa64e11ec12220968f65d086b7a29b6583d16e9a544c889b22ba98555ef1", - "sha256:3102bb2c206700a7d28181dbe04d66b30780cde1d1c02c5f3c165cf3d2489497", - "sha256:3498b27d8236057def41de3585f317abae235dd3a11d33e01736ffedb2ef8606", - "sha256:378ac77af41350a8c6b8801a66021b52da8a05fd77e578b7380e876c0ce4f528", - "sha256:38f16b1317b8dd82df67ed5daa5f5e7c959e46579840d77a67a4ceb9cef0a50b", - "sha256:3911c2ef96e5ddc748a3c8b4702c61986628bb719b8378bf1e4a6184bbd48fe4", - "sha256:3a3c3f8863255f3c31db3889f8055989527173ef6192a283eb6f4db3c579d830", - "sha256:3b14b1da110ea50c8bcbadc3b82c3933974dbeea1832e814aab93ca1163cd4c1", - "sha256:535dc1e6e68fad5355f9984d5637c33badbdc987b0c0d303ee95a6c979c9516f", - "sha256:6f61319e33222591f885c598e3e24f6a4be3533c1d70c19e0dc59e83a71ce27d", - "sha256:723d22d324e7997a651478e9c5a3120a0ecbc9a7e94071f7e1954562a8806cf3", - "sha256:76b2775dda7e78680d688daabcb485dc87cf5e3184a0b3e012e1d40e38527cc8", - "sha256:782a5c7df9f91979a7a21792e09b34a658058896628217ae6362088b123c8500", - "sha256:7e4d159021c2029b958b2363abec4a11db0ce8cd43abb0d9ce44284cb97217e7", - "sha256:8dacc4073c359f40fcf73aede8428c35f84639baad7e1b46fce5ab7a8a7be4bb", - "sha256:8f33d1156241c43755137288dea619105477961cfa7e47f48dbf96bc2c30720b", - "sha256:8ffd4b204d7de77b5dd558cdff986a8274796a1e57813ed005b33fd97e29f059", - "sha256:93a280c9eb736a0dcca19296f3c30c720cb41a71b1f9e617f341f0a8e791a69b", - "sha256:9a4f66259bdd6964d8cf26142733c81fb562252db74ea367d9beb4f815478e72", - "sha256:9a9d4ff06804920388aab69c5ea8a77525cf165356db70131616acd269e19b36", - "sha256:a2070c5affdb3a5e751f24208c5c4f3d5f008fa04d28731416e023c93b275277", - "sha256:a4857f7e2bc6921dbd487c5c88b84f5633de3e7d416c4dc0bb70256775551a6c", - "sha256:a607ae05b6c96057ba86c811d9c43423f35e03874ffb03fbdcd45e0637e8b631", - "sha256:a66ca3bdf21c653e47f726ca57f46ba7fc1f260ad99ba783acc3e58e3ebdb9ff", - "sha256:ab110c48bc3d97b4d19af41865e14531f300b482da21783fdaacd159251890e8", - "sha256:b239711e774c8eb910e9b1ac719f02f5ae4bf35fa0420f438cdc3a7e4e7dd6ec", - "sha256:be0416074d7f253865bb67630cf7210cbc14eb05f4099cc0f82430135aaa7a3b", - "sha256:c46643970dff9f5c976c6512fd35768c4a3819f01f61169d8cdac3f9290903b7", - "sha256:c5ec71fd4a43b6d84ddb88c1df94572479d9a26ef3f150cef3dacefecf888105", - "sha256:c6e5174f8ca585755988bc278c8bb5d02d9dc2e971591ef4a1baabdf2d99589b", - "sha256:c89b558f8a9a5a6f2cfc923c304d49f0ce629c3bd85cb442ca258ec20366394c", - "sha256:cc44e3545d908ecf3e5773266c487ad1877be718d9dc65fc7eb6e7d14960985b", - "sha256:cc6f8246e74dd210d7e2b56c76ceaba1cc52b025cd75dbe96eb48791e0250e98", - "sha256:cd556c79ad665faeae28020a0ab3bda6cd47d94bec48e36970719b0b86e4dcf4", - "sha256:ce6f3a147b4b1a8b09aae48517ae91139b1b010c5f36423fa2b866a8b23df879", - "sha256:ceb499d2b3d1d7b7ba23abe8bf26df5f06ba8c71127f188333dddcf356b4b63f", - "sha256:cef06fb382557f66d81d804230c11ab292d94b840b3cb7bf4450778377b592f4", - "sha256:e448f56cfeae7b1b3b5bcd99bb377cde7c4eb1970a525c770720a352bc4c8044", - "sha256:e52d3d95df81c8f6b2a1685aabffadf2d2d9ad97203a40f8d61e51b70f191e4e", - "sha256:ee2f1d1c223c3d2c24e3afbb2dd38be3f03b1a8d6a83ee3d9eb8c36a52bee899", - "sha256:f2c6888eada180814b8583c3e793f3f343a692fc802546eed45f40a001b1169f", - "sha256:f51dbba78d68a44e99d484ca8c8f604f17e957c1ca09c3ebc2c7e3bbd9ba0448", - "sha256:f54de00baf200b4539a5a092a759f000b5f45fd226d6d25a76b0dff71177a714", - "sha256:fa10fee7e32213f5c7b0d6428ea92e3a3fdd6d725590238a3f92c0de1c78b9d2", - "sha256:fabeeb121735d47d8eab8671b6b031ce08514c86b7ad8f7d5490a7b6dcd6267d", - "sha256:fac3c432851038b3e6afe086f777732bcf7f6ebbfd90951fa04ee53db6d0bcdd", - "sha256:fda29412a66099af6d6de0baa6bd7c52674de177ec2ad2630ca264142d69c6c7", - "sha256:ff1330e8bc996570221b450e2d539134baa9465f5cb98aff0e0f73f34172e0ae" - ], - "version": "==5.3.1" - }, - "coveralls": { - "hashes": [ - "sha256:2301a19500b06649d2ec4f2858f9c69638d7699a4c63027c5d53daba666147cc", - "sha256:b990ba1f7bc4288e63340be0433698c1efe8217f78c689d254c2540af3d38617" - ], - "index": "pypi", - "version": "==2.2.0" - }, - "distlib": { - "hashes": [ - "sha256:8c09de2c67b3e7deef7184574fc060ab8a793e7adbb183d942c389c8b13c52fb", - "sha256:edf6116872c863e1aa9d5bb7cb5e05a022c519a4594dc703843343a9ddd9bff1" - ], - "version": "==0.3.1" - }, - "docopt": { - "hashes": [ - "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491" - ], - "version": "==0.6.2" - }, - "docutils": { - "hashes": [ - "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af", - "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc" - ], - "index": "pypi", - "version": "==0.16" - }, - "filelock": { - "hashes": [ - "sha256:18d82244ee114f543149c66a6e0c14e9c4f8a1044b5cdaadd0f82159d6a6ff59", - "sha256:929b7d63ec5b7d6b71b0fa5ac14e030b3f70b75747cef1b10da9b879fef15836" - ], - "version": "==3.0.12" - }, - "flake8": { - "hashes": [ - "sha256:749dbbd6bfd0cf1318af27bf97a14e28e5ff548ef8e5b1566ccfb25a11e7c839", - "sha256:aadae8761ec651813c24be05c6f7b4680857ef6afaae4651a4eccaef97ce6c3b" - ], - "index": "pypi", - "version": "==3.8.4" - }, - "idna": { - "hashes": [ - "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6", - "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0" - ], - "version": "==2.10" - }, - "importlib-metadata": { - "hashes": [ - "sha256:5c5a2720817414a6c41f0a49993908068243ae02c1635a228126519b509c8aed", - "sha256:bf792d480abbd5eda85794e4afb09dd538393f7d6e6ffef6e9f03d2014cf9450" - ], - "markers": "python_version < '3.8'", - "version": "==3.3.0" - }, - "iniconfig": { - "hashes": [ - "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3", - "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32" - ], - "version": "==1.1.1" - }, - "keyring": { - "hashes": [ - "sha256:1746d3ac913d449a090caf11e9e4af00e26c3f7f7e81027872192b2398b98675", - "sha256:4be9cbaaaf83e61d6399f733d113ede7d1c73bc75cb6aeb64eee0f6ac39b30ea" - ], - "version": "==21.8.0" - }, - "mccabe": { - "hashes": [ - "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", - "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f" - ], - "version": "==0.6.1" - }, - "mypy-extensions": { - "hashes": [ - "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d", - "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8" - ], - "version": "==0.4.3" - }, - "packaging": { - "hashes": [ - "sha256:24e0da08660a87484d1602c30bb4902d74816b6985b93de36926f5bc95741858", - "sha256:78598185a7008a470d64526a8059de9aaa449238f280fc9eb6b13ba6c4109093" - ], - "version": "==20.8" - }, - "pathspec": { - "hashes": [ - "sha256:86379d6b86d75816baba717e64b1a3a3469deb93bb76d613c9ce79edc5cb68fd", - "sha256:aa0cb481c4041bf52ffa7b0d8fa6cd3e88a2ca4879c533c9153882ee2556790d" - ], - "version": "==0.8.1" - }, - "pbr": { - "hashes": [ - "sha256:5fad80b613c402d5b7df7bd84812548b2a61e9977387a80a5fc5c396492b13c9", - "sha256:b236cde0ac9a6aedd5e3c34517b423cd4fd97ef723849da6b0d2231142d89c00" - ], - "version": "==5.5.1" - }, - "pipenv": { - "hashes": [ - "sha256:4ab2f60742184d851ac44b9e1d423afe71dc2ea7a68bde07eb890c8b4ce5a420", - "sha256:8253fe6f9cfb3791a54da8a0571f73c918cb3457dd908684c1800a13a06ec4c1" - ], - "version": "==2020.11.15" - }, - "pipenv-to-requirements": { - "hashes": [ - "sha256:1c18682a4ec70eb07261d2b558df3ee22ea00192663a1b98fd1e45e22946c163", - "sha256:cb70471a17a7d4658caffe989539413313d51df1b3a54838bcd7e7d3ab3fcc18" - ], - "index": "pypi", - "version": "==0.9.0" - }, - "pkginfo": { - "hashes": [ - "sha256:a6a4ac943b496745cec21f14f021bbd869d5e9b4f6ec06918cffea5a2f4b9193", - "sha256:ce14d7296c673dc4c61c759a0b6c14bae34e34eb819c0017bb6ca5b7292c56e9" - ], - "version": "==1.6.1" - }, - "pluggy": { - "hashes": [ - "sha256:265a94bf44ca13662f12fcd1b074c14d4b269a712f051b6f644ef7e705d6735f", - "sha256:467f0219e89bb5061a8429c6fc5cf055fa3983a0e68e84a1d205046306b37d9e" - ], - "version": "==1.0.0.dev0" - }, - "py": { - "hashes": [ - "sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3", - "sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a" - ], - "version": "==1.10.0" - }, - "pycodestyle": { - "hashes": [ - "sha256:2295e7b2f6b5bd100585ebcb1f616591b652db8a741695b3d8f5d28bdc934367", - "sha256:c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e" - ], - "version": "==2.6.0" - }, - "pyflakes": { - "hashes": [ - "sha256:0d94e0e05a19e57a99444b6ddcf9a6eb2e5c68d3ca1e98e90707af8152c90a92", - "sha256:35b2d75ee967ea93b55750aa9edbbf72813e06a66ba54438df2cfac9e3c27fc8" - ], - "version": "==2.2.0" - }, - "pygments": { - "hashes": [ - "sha256:ccf3acacf3782cbed4a989426012f1c535c9a90d3a7fc3f16d231b9372d2b716", - "sha256:f275b6c0909e5dafd2d6269a656aa90fa58ebf4a74f8fcf9053195d226b24a08" - ], - "version": "==2.7.3" - }, - "pyparsing": { - "hashes": [ - "sha256:1c6409312ce2ce2997896af5756753778d5f1603666dba5587804f09ad82ed27", - "sha256:f4896b4cc085a1f8f8ae53a1a90db5a86b3825ff73eb974dffee3d9e701007f4" - ], - "version": "==3.0.0b2" - }, - "pytest": { - "hashes": [ - "sha256:1969f797a1a0dbd8ccf0fecc80262312729afea9c17f1d70ebf85c5e76c6f7c8", - "sha256:66e419b1899bc27346cb2c993e12c5e5e8daba9073c1fbce33b9807abc95c306" - ], - "index": "pypi", - "version": "==6.2.1" - }, - "pytest-cov": { - "hashes": [ - "sha256:45ec2d5182f89a81fc3eb29e3d1ed3113b9e9a873bcddb2a71faaab066110191", - "sha256:47bd0ce14056fdd79f93e1713f88fad7bdcc583dcd7783da86ef2f085a0bb88e" - ], - "index": "pypi", - "version": "==2.10.1" - }, - "readme-renderer": { - "hashes": [ - "sha256:267854ac3b1530633c2394ead828afcd060fc273217c42ac36b6be9c42cd9a9d", - "sha256:6b7e5aa59210a40de72eb79931491eaf46fefca2952b9181268bd7c7c65c260a" - ], - "version": "==28.0" - }, - "regex": { - "hashes": [ - "sha256:02951b7dacb123d8ea6da44fe45ddd084aa6777d4b2454fa0da61d569c6fa538", - "sha256:0d08e71e70c0237883d0bef12cad5145b84c3705e9c6a588b2a9c7080e5af2a4", - "sha256:1862a9d9194fae76a7aaf0150d5f2a8ec1da89e8b55890b1786b8f88a0f619dc", - "sha256:1ab79fcb02b930de09c76d024d279686ec5d532eb814fd0ed1e0051eb8bd2daa", - "sha256:1fa7ee9c2a0e30405e21031d07d7ba8617bc590d391adfc2b7f1e8b99f46f444", - "sha256:262c6825b309e6485ec2493ffc7e62a13cf13fb2a8b6d212f72bd53ad34118f1", - "sha256:2a11a3e90bd9901d70a5b31d7dd85114755a581a5da3fc996abfefa48aee78af", - "sha256:2c99e97d388cd0a8d30f7c514d67887d8021541b875baf09791a3baad48bb4f8", - "sha256:3128e30d83f2e70b0bed9b2a34e92707d0877e460b402faca908c6667092ada9", - "sha256:38c8fd190db64f513fe4e1baa59fed086ae71fa45083b6936b52d34df8f86a88", - "sha256:3bddc701bdd1efa0d5264d2649588cbfda549b2899dc8d50417e47a82e1387ba", - "sha256:4902e6aa086cbb224241adbc2f06235927d5cdacffb2425c73e6570e8d862364", - "sha256:49cae022fa13f09be91b2c880e58e14b6da5d10639ed45ca69b85faf039f7a4e", - "sha256:56e01daca75eae420bce184edd8bb341c8eebb19dd3bce7266332258f9fb9dd7", - "sha256:5862975b45d451b6db51c2e654990c1820523a5b07100fc6903e9c86575202a0", - "sha256:6a8ce43923c518c24a2579fda49f093f1397dad5d18346211e46f134fc624e31", - "sha256:6c54ce4b5d61a7129bad5c5dc279e222afd00e721bf92f9ef09e4fae28755683", - "sha256:6e4b08c6f8daca7d8f07c8d24e4331ae7953333dbd09c648ed6ebd24db5a10ee", - "sha256:717881211f46de3ab130b58ec0908267961fadc06e44f974466d1887f865bd5b", - "sha256:749078d1eb89484db5f34b4012092ad14b327944ee7f1c4f74d6279a6e4d1884", - "sha256:7913bd25f4ab274ba37bc97ad0e21c31004224ccb02765ad984eef43e04acc6c", - "sha256:7a25fcbeae08f96a754b45bdc050e1fb94b95cab046bf56b016c25e9ab127b3e", - "sha256:83d6b356e116ca119db8e7c6fc2983289d87b27b3fac238cfe5dca529d884562", - "sha256:8b882a78c320478b12ff024e81dc7d43c1462aa4a3341c754ee65d857a521f85", - "sha256:8f6a2229e8ad946e36815f2a03386bb8353d4bde368fdf8ca5f0cb97264d3b5c", - "sha256:9801c4c1d9ae6a70aeb2128e5b4b68c45d4f0af0d1535500884d644fa9b768c6", - "sha256:a15f64ae3a027b64496a71ab1f722355e570c3fac5ba2801cafce846bf5af01d", - "sha256:a3d748383762e56337c39ab35c6ed4deb88df5326f97a38946ddd19028ecce6b", - "sha256:a63f1a07932c9686d2d416fb295ec2c01ab246e89b4d58e5fa468089cab44b70", - "sha256:b2b1a5ddae3677d89b686e5c625fc5547c6e492bd755b520de5332773a8af06b", - "sha256:b2f4007bff007c96a173e24dcda236e5e83bde4358a557f9ccf5e014439eae4b", - "sha256:baf378ba6151f6e272824b86a774326f692bc2ef4cc5ce8d5bc76e38c813a55f", - "sha256:bafb01b4688833e099d79e7efd23f99172f501a15c44f21ea2118681473fdba0", - "sha256:bba349276b126947b014e50ab3316c027cac1495992f10e5682dc677b3dfa0c5", - "sha256:c084582d4215593f2f1d28b65d2a2f3aceff8342aa85afd7be23a9cad74a0de5", - "sha256:d1ebb090a426db66dd80df8ca85adc4abfcbad8a7c2e9a5ec7513ede522e0a8f", - "sha256:d2d8ce12b7c12c87e41123997ebaf1a5767a5be3ec545f64675388970f415e2e", - "sha256:e32f5f3d1b1c663af7f9c4c1e72e6ffe9a78c03a31e149259f531e0fed826512", - "sha256:e3faaf10a0d1e8e23a9b51d1900b72e1635c2d5b0e1bea1c18022486a8e2e52d", - "sha256:f7d29a6fc4760300f86ae329e3b6ca28ea9c20823df123a2ea8693e967b29917", - "sha256:f8f295db00ef5f8bae530fc39af0b40486ca6068733fb860b42115052206466f" - ], - "version": "==2020.11.13" - }, - "requests": { - "hashes": [ - "sha256:27973dd4a904a4f13b263a19c866c13b92a39ed1c964655f025f3f8d3d75b804", - "sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e" - ], - "version": "==2.25.1" - }, - "requests-toolbelt": { - "hashes": [ - "sha256:380606e1d10dc85c3bd47bf5a6095f815ec007be7a8b69c878507068df059e6f", - "sha256:968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0" - ], - "version": "==0.9.1" - }, - "rfc3986": { - "hashes": [ - "sha256:112398da31a3344dc25dbf477d8df6cb34f9278a94fee2625d89e4514be8bb9d", - "sha256:af9147e9aceda37c91a05f4deb128d4b4b49d6b199775fd2d2927768abdc8f50" - ], - "version": "==1.4.0" - }, - "six": { - "hashes": [ - "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", - "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" - ], - "version": "==1.15.0" - }, - "toml": { - "hashes": [ - "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", - "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" - ], - "version": "==0.10.2" - }, - "tqdm": { - "hashes": [ - "sha256:556c55b081bd9aa746d34125d024b73f0e2a0e62d5927ff0e400e20ee0a03b9a", - "sha256:b8b46036fd00176d0870307123ef06bb851096964fa7fc578d789f90ce82c3e4" - ], - "version": "==4.55.1" - }, - "twine": { - "hashes": [ - "sha256:2f6942ec2a17417e19d2dd372fc4faa424c87ee9ce49b4e20c427eb00a0f3f41", - "sha256:fcffa8fc37e8083a5be0728371f299598870ee1eccc94e9a25cef7b1dcfa8297" - ], - "index": "pypi", - "version": "==3.3.0" - }, - "typed-ast": { - "hashes": [ - "sha256:07d49388d5bf7e863f7fa2f124b1b1d89d8aa0e2f7812faff0a5658c01c59aa1", - "sha256:14bf1522cdee369e8f5581238edac09150c765ec1cb33615855889cf33dcb92d", - "sha256:240296b27397e4e37874abb1df2a608a92df85cf3e2a04d0d4d61055c8305ba6", - "sha256:36d829b31ab67d6fcb30e185ec996e1f72b892255a745d3a82138c97d21ed1cd", - "sha256:37f48d46d733d57cc70fd5f30572d11ab8ed92da6e6b28e024e4a3edfb456e37", - "sha256:4c790331247081ea7c632a76d5b2a265e6d325ecd3179d06e9cf8d46d90dd151", - "sha256:5dcfc2e264bd8a1db8b11a892bd1647154ce03eeba94b461effe68790d8b8e07", - "sha256:7147e2a76c75f0f64c4319886e7639e490fee87c9d25cb1d4faef1d8cf83a440", - "sha256:7703620125e4fb79b64aa52427ec192822e9f45d37d4b6625ab37ef403e1df70", - "sha256:8368f83e93c7156ccd40e49a783a6a6850ca25b556c0fa0240ed0f659d2fe496", - "sha256:84aa6223d71012c68d577c83f4e7db50d11d6b1399a9c779046d75e24bed74ea", - "sha256:85f95aa97a35bdb2f2f7d10ec5bbdac0aeb9dafdaf88e17492da0504de2e6400", - "sha256:8db0e856712f79c45956da0c9a40ca4246abc3485ae0d7ecc86a20f5e4c09abc", - "sha256:9044ef2df88d7f33692ae3f18d3be63dec69c4fb1b5a4a9ac950f9b4ba571606", - "sha256:963c80b583b0661918718b095e02303d8078950b26cc00b5e5ea9ababe0de1fc", - "sha256:987f15737aba2ab5f3928c617ccf1ce412e2e321c77ab16ca5a293e7bbffd581", - "sha256:9ec45db0c766f196ae629e509f059ff05fc3148f9ffd28f3cfe75d4afb485412", - "sha256:9fc0b3cb5d1720e7141d103cf4819aea239f7d136acf9ee4a69b047b7986175a", - "sha256:a2c927c49f2029291fbabd673d51a2180038f8cd5a5b2f290f78c4516be48be2", - "sha256:a38878a223bdd37c9709d07cd357bb79f4c760b29210e14ad0fb395294583787", - "sha256:b4fcdcfa302538f70929eb7b392f536a237cbe2ed9cba88e3bf5027b39f5f77f", - "sha256:c0c74e5579af4b977c8b932f40a5464764b2f86681327410aa028a22d2f54937", - "sha256:c1c876fd795b36126f773db9cbb393f19808edd2637e00fd6caba0e25f2c7b64", - "sha256:c9aadc4924d4b5799112837b226160428524a9a45f830e0d0f184b19e4090487", - "sha256:cc7b98bf58167b7f2db91a4327da24fb93368838eb84a44c472283778fc2446b", - "sha256:cf54cfa843f297991b7388c281cb3855d911137223c6b6d2dd82a47ae5125a41", - "sha256:d003156bb6a59cda9050e983441b7fa2487f7800d76bdc065566b7d728b4581a", - "sha256:d175297e9533d8d37437abc14e8a83cbc68af93cc9c1c59c2c292ec59a0697a3", - "sha256:d746a437cdbca200622385305aedd9aef68e8a645e385cc483bdc5e488f07166", - "sha256:e683e409e5c45d5c9082dc1daf13f6374300806240719f95dc783d1fc942af10" - ], - "version": "==1.4.2" - }, - "typing-extensions": { - "hashes": [ - "sha256:7cb407020f00f7bfc3cb3e7881628838e69d8f3fcab2f64742a5e76b2f841918", - "sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c", - "sha256:dafc7639cde7f1b6e1acc0f457842a83e722ccca8eef5270af2d74792619a89f" - ], - "markers": "python_version < '3.8'", - "version": "==3.7.4.3" - }, - "urllib3": { - "hashes": [ - "sha256:19188f96923873c92ccb987120ec4acaa12f0461fa9ce5d3d0772bc965a39e08", - "sha256:d8ff90d979214d7b4f8ce956e80f4028fc6860e4431f731ea4a8c08f23f99473" - ], - "version": "==1.26.2" - }, - "virtualenv": { - "hashes": [ - "sha256:54b05fc737ea9c9ee9f8340f579e5da5b09fb64fd010ab5757eb90268616907c", - "sha256:b7a8ec323ee02fb2312f098b6b4c9de99559b462775bc8fe3627a73706603c1b" - ], - "version": "==20.2.2" - }, - "virtualenv-clone": { - "hashes": [ - "sha256:07e74418b7cc64f4fda987bf5bc71ebd59af27a7bc9e8a8ee9fd54b1f2390a27", - "sha256:665e48dd54c84b98b71a657acb49104c54e7652bce9c1c4f6c6976ed4c827a29" - ], - "version": "==0.5.4" - }, - "webencodings": { - "hashes": [ - "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", - "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923" - ], - "version": "==0.5.1" - }, - "wheel": { - "hashes": [ - "sha256:78b5b185f0e5763c26ca1e324373aadd49182ca90e825f7853f4b2509215dc0e", - "sha256:e11eefd162658ea59a60a0f6c7d493a7190ea4b9a85e335b33489d9f17e0245e" - ], - "index": "pypi", - "version": "==0.36.2" - }, - "zipp": { - "hashes": [ - "sha256:102c24ef8f171fd729d46599845e95c7ab894a4cf45f5de11a44cc7444fb1108", - "sha256:ed5eee1974372595f9e416cc7bbeeb12335201d8081ca8a0743c954d4446e5cb" - ], - "version": "==3.4.0" + "_meta": { + "hash": { + "sha256": "9f8eb7e96bec655284d2a66eb95b72d9f580e9158a0eb1684f14da912ccdb8ea" + }, + "pipfile-spec": 6, + "requires": {}, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "boto3": { + "hashes": [ + "sha256:5050c29353fec97301116386f469fa5858ccf47201623b53cf9f74e603bda52f", + "sha256:518f724c4758e5a5bed114fbcbd1cf470a15306d416ff421a025b76f1d390939" + ], + "index": "pypi", + "version": "==1.4.4" + }, + "botocore": { + "hashes": [ + "sha256:79c9347b1333f94372c0c2fea950326b41c83ff16e67298db0a016708fe45be6", + "sha256:9878598a9db8be63788dc1030616d1e5b64e4a9c2d85dba34b4a5c3b6b049fa6" + ], + "index": "pypi", + "version": "==1.5.62" + }, + "click": { + "hashes": [ + "sha256:cc6a19da8ebff6e7074f731447ef7e112bd23adf3de5c597cf9989f2fd8defe9", + "sha256:fcf697e1fd4b567d817c69dab10a4035937fe6af175c05fd6806b69f74cbc6c4" + ], + "index": "pypi", + "version": "==6.6" + }, + "docutils": { + "hashes": [ + "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af", + "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc" + ], + "index": "pypi", + "version": "==0.16" + }, + "jmespath": { + "hashes": [ + "sha256:b85d0567b8666149a93172712e68920734333c0ce7e89b78b3e987f71e5ed4f9", + "sha256:cdf6525904cc597730141d61b36f2e4b8ecc257c420fa2f4549bac2c2d0cb72f" + ], + "index": "pypi", + "version": "==0.10.0" + }, + "pyaml": { + "hashes": [ + "sha256:9c54fb5f17b58572c4cef50affea60bb73f445ab153580dac07a12383712b5b8" + ], + "index": "pypi", + "version": "==15.8.2" + }, + "python-dateutil": { + "hashes": [ + "sha256:1408fdb07c6a1fa9997567ce3fcee6a337b39a503d80699e0f213de4aa4b32ed", + "sha256:598499a75be2e5e18a66f12c00dd47a069de24794effeda4228bfc760f44f527", + "sha256:9d94861f04ce14f9a3d835206067c889b8f1244f1415035dadcf9c10066adf04" + ], + "index": "pypi", + "version": "==2.5.3" + }, + "pyyaml": { + "hashes": [ + "sha256:1adecc22f88d38052fb787d959f003811ca858b799590a5eaa70e63dca50308c", + "sha256:436bc774ecf7c103814098159fbb84c2715d25980175292c648f2da143909f95", + "sha256:460a5a4248763f6f37ea225d19d5c205677d8d525f6a83357ca622ed541830c2", + "sha256:5a22a9c84653debfbf198d02fe592c176ea548cccce47553f35f466e15cf2fd4", + "sha256:7a5d3f26b89d688db27822343dfa25c599627bc92093e788956372285c6298ad", + "sha256:9372b04a02080752d9e6f990179a4ab840227c6e2ce15b95e1278456664cf2ba", + "sha256:a5dcbebee834eaddf3fa7366316b880ff4062e4bcc9787b78c7fbb4a26ff2dd1", + "sha256:aee5bab92a176e7cd034e57f46e9df9a9862a71f8f37cad167c6fc74c65f5b4e", + "sha256:c51f642898c0bacd335fc119da60baae0824f2cde95b0330b56c0553439f0673", + "sha256:c68ea4d3ba1705da1e0d85da6684ac657912679a649e8868bd850d2c299cce13", + "sha256:e23d0cc5299223dcc37885dae624f382297717e459ea24053709675a976a3e19" + ], + "index": "pypi", + "version": "==5.1" + }, + "s3transfer": { + "hashes": [ + "sha256:90dc18e028989c609146e241ea153250be451e05ecc0c2832565231dacdf59c1", + "sha256:c7a9ec356982d5e9ab2d4b46391a7d6a950e2b04c472419f5fdec70cc0ada72f" + ], + "version": "==0.1.13" + }, + "six": { + "hashes": [ + "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", + "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" + ], + "version": "==1.15.0" + } + }, + "develop": { + "appdirs": { + "hashes": [ + "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41", + "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128" + ], + "version": "==1.4.4" + }, + "attrs": { + "hashes": [ + "sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6", + "sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700" + ], + "version": "==20.3.0" + }, + "black": { + "hashes": [ + "sha256:1c02557aa099101b9d21496f8a914e9ed2222ef70336404eeeac8edba836fbea" + ], + "index": "pypi", + "version": "==20.8b1" + }, + "bleach": { + "hashes": [ + "sha256:52b5919b81842b1854196eaae5ca29679a2f2e378905c346d3ca8227c2c66080", + "sha256:9f8ccbeb6183c6e6cddea37592dfb0167485c1e3b13b3363bc325aa8bda3adbd" + ], + "version": "==3.2.1" + }, + "bump2version": { + "hashes": [ + "sha256:37f927ea17cde7ae2d7baf832f8e80ce3777624554a653006c9144f8017fe410", + "sha256:762cb2bfad61f4ec8e2bdf452c7c267416f8c70dd9ecb1653fd0bbb01fa936e6" + ], + "version": "==1.0.1" + }, + "bumpversion": { + "hashes": [ + "sha256:4ba55e4080d373f80177b4dabef146c07ce73c7d1377aabf9d3c3ae1f94584a6", + "sha256:4eb3267a38194d09f048a2179980bb4803701969bff2c85fa8f6d1ce050be15e" + ], + "index": "pypi", + "version": "==0.6.0" + }, + "certifi": { + "hashes": [ + "sha256:1a4995114262bffbc2413b159f2a1a480c969de6e6eb13ee966d470af86af59c", + "sha256:719a74fb9e33b9bd44cc7f3a8d94bc35e4049deebe19ba7d8e108280cfd59830" + ], + "version": "==2020.12.5" + }, + "cffi": { + "hashes": [ + "sha256:00a1ba5e2e95684448de9b89888ccd02c98d512064b4cb987d48f4b40aa0421e", + "sha256:00e28066507bfc3fe865a31f325c8391a1ac2916219340f87dfad602c3e48e5d", + "sha256:045d792900a75e8b1e1b0ab6787dd733a8190ffcf80e8c8ceb2fb10a29ff238a", + "sha256:0638c3ae1a0edfb77c6765d487fee624d2b1ee1bdfeffc1f0b58c64d149e7eec", + "sha256:105abaf8a6075dc96c1fe5ae7aae073f4696f2905fde6aeada4c9d2926752362", + "sha256:155136b51fd733fa94e1c2ea5211dcd4c8879869008fc811648f16541bf99668", + "sha256:1a465cbe98a7fd391d47dce4b8f7e5b921e6cd805ef421d04f5f66ba8f06086c", + "sha256:1d2c4994f515e5b485fd6d3a73d05526aa0fcf248eb135996b088d25dfa1865b", + "sha256:2c24d61263f511551f740d1a065eb0212db1dbbbbd241db758f5244281590c06", + "sha256:51a8b381b16ddd370178a65360ebe15fbc1c71cf6f584613a7ea08bfad946698", + "sha256:594234691ac0e9b770aee9fcdb8fa02c22e43e5c619456efd0d6c2bf276f3eb2", + "sha256:5cf4be6c304ad0b6602f5c4e90e2f59b47653ac1ed9c662ed379fe48a8f26b0c", + "sha256:64081b3f8f6f3c3de6191ec89d7dc6c86a8a43911f7ecb422c60e90c70be41c7", + "sha256:6bc25fc545a6b3d57b5f8618e59fc13d3a3a68431e8ca5fd4c13241cd70d0009", + "sha256:798caa2a2384b1cbe8a2a139d80734c9db54f9cc155c99d7cc92441a23871c03", + "sha256:7c6b1dece89874d9541fc974917b631406233ea0440d0bdfbb8e03bf39a49b3b", + "sha256:840793c68105fe031f34d6a086eaea153a0cd5c491cde82a74b420edd0a2b909", + "sha256:8d6603078baf4e11edc4168a514c5ce5b3ba6e3e9c374298cb88437957960a53", + "sha256:9cc46bc107224ff5b6d04369e7c595acb700c3613ad7bcf2e2012f62ece80c35", + "sha256:9f7a31251289b2ab6d4012f6e83e58bc3b96bd151f5b5262467f4bb6b34a7c26", + "sha256:9ffb888f19d54a4d4dfd4b3f29bc2c16aa4972f1c2ab9c4ab09b8ab8685b9c2b", + "sha256:a5ed8c05548b54b998b9498753fb9cadbfd92ee88e884641377d8a8b291bcc01", + "sha256:a7711edca4dcef1a75257b50a2fbfe92a65187c47dab5a0f1b9b332c5919a3fb", + "sha256:af5c59122a011049aad5dd87424b8e65a80e4a6477419c0c1015f73fb5ea0293", + "sha256:b18e0a9ef57d2b41f5c68beefa32317d286c3d6ac0484efd10d6e07491bb95dd", + "sha256:b4e248d1087abf9f4c10f3c398896c87ce82a9856494a7155823eb45a892395d", + "sha256:ba4e9e0ae13fc41c6b23299545e5ef73055213e466bd107953e4a013a5ddd7e3", + "sha256:c6332685306b6417a91b1ff9fae889b3ba65c2292d64bd9245c093b1b284809d", + "sha256:d5ff0621c88ce83a28a10d2ce719b2ee85635e85c515f12bac99a95306da4b2e", + "sha256:d9efd8b7a3ef378dd61a1e77367f1924375befc2eba06168b6ebfa903a5e59ca", + "sha256:df5169c4396adc04f9b0a05f13c074df878b6052430e03f50e68adf3a57aa28d", + "sha256:ebb253464a5d0482b191274f1c8bf00e33f7e0b9c66405fbffc61ed2c839c775", + "sha256:ec80dc47f54e6e9a78181ce05feb71a0353854cc26999db963695f950b5fb375", + "sha256:f032b34669220030f905152045dfa27741ce1a6db3324a5bc0b96b6c7420c87b", + "sha256:f60567825f791c6f8a592f3c6e3bd93dd2934e3f9dac189308426bd76b00ef3b", + "sha256:f803eaa94c2fcda012c047e62bc7a51b0bdabda1cad7a92a522694ea2d76e49f" + ], + "version": "==1.14.4" + }, + "chardet": { + "hashes": [ + "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa", + "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5" + ], + "version": "==4.0.0" + }, + "click": { + "hashes": [ + "sha256:cc6a19da8ebff6e7074f731447ef7e112bd23adf3de5c597cf9989f2fd8defe9", + "sha256:fcf697e1fd4b567d817c69dab10a4035937fe6af175c05fd6806b69f74cbc6c4" + ], + "index": "pypi", + "version": "==6.6" + }, + "codecov": { + "hashes": [ + "sha256:6cde272454009d27355f9434f4e49f238c0273b216beda8472a65dc4957f473b", + "sha256:ba8553a82942ce37d4da92b70ffd6d54cf635fc1793ab0a7dc3fecd6ebfb3df8" + ], + "index": "pypi", + "version": "==2.1.11" + }, + "colorama": { + "hashes": [ + "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b", + "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2" + ], + "version": "==0.4.4" + }, + "coverage": { + "hashes": [ + "sha256:08b3ba72bd981531fd557f67beee376d6700fba183b167857038997ba30dd297", + "sha256:2757fa64e11ec12220968f65d086b7a29b6583d16e9a544c889b22ba98555ef1", + "sha256:3102bb2c206700a7d28181dbe04d66b30780cde1d1c02c5f3c165cf3d2489497", + "sha256:3498b27d8236057def41de3585f317abae235dd3a11d33e01736ffedb2ef8606", + "sha256:378ac77af41350a8c6b8801a66021b52da8a05fd77e578b7380e876c0ce4f528", + "sha256:38f16b1317b8dd82df67ed5daa5f5e7c959e46579840d77a67a4ceb9cef0a50b", + "sha256:3911c2ef96e5ddc748a3c8b4702c61986628bb719b8378bf1e4a6184bbd48fe4", + "sha256:3a3c3f8863255f3c31db3889f8055989527173ef6192a283eb6f4db3c579d830", + "sha256:3b14b1da110ea50c8bcbadc3b82c3933974dbeea1832e814aab93ca1163cd4c1", + "sha256:535dc1e6e68fad5355f9984d5637c33badbdc987b0c0d303ee95a6c979c9516f", + "sha256:6f61319e33222591f885c598e3e24f6a4be3533c1d70c19e0dc59e83a71ce27d", + "sha256:723d22d324e7997a651478e9c5a3120a0ecbc9a7e94071f7e1954562a8806cf3", + "sha256:76b2775dda7e78680d688daabcb485dc87cf5e3184a0b3e012e1d40e38527cc8", + "sha256:782a5c7df9f91979a7a21792e09b34a658058896628217ae6362088b123c8500", + "sha256:7e4d159021c2029b958b2363abec4a11db0ce8cd43abb0d9ce44284cb97217e7", + "sha256:8dacc4073c359f40fcf73aede8428c35f84639baad7e1b46fce5ab7a8a7be4bb", + "sha256:8f33d1156241c43755137288dea619105477961cfa7e47f48dbf96bc2c30720b", + "sha256:8ffd4b204d7de77b5dd558cdff986a8274796a1e57813ed005b33fd97e29f059", + "sha256:93a280c9eb736a0dcca19296f3c30c720cb41a71b1f9e617f341f0a8e791a69b", + "sha256:9a4f66259bdd6964d8cf26142733c81fb562252db74ea367d9beb4f815478e72", + "sha256:9a9d4ff06804920388aab69c5ea8a77525cf165356db70131616acd269e19b36", + "sha256:a2070c5affdb3a5e751f24208c5c4f3d5f008fa04d28731416e023c93b275277", + "sha256:a4857f7e2bc6921dbd487c5c88b84f5633de3e7d416c4dc0bb70256775551a6c", + "sha256:a607ae05b6c96057ba86c811d9c43423f35e03874ffb03fbdcd45e0637e8b631", + "sha256:a66ca3bdf21c653e47f726ca57f46ba7fc1f260ad99ba783acc3e58e3ebdb9ff", + "sha256:ab110c48bc3d97b4d19af41865e14531f300b482da21783fdaacd159251890e8", + "sha256:b239711e774c8eb910e9b1ac719f02f5ae4bf35fa0420f438cdc3a7e4e7dd6ec", + "sha256:be0416074d7f253865bb67630cf7210cbc14eb05f4099cc0f82430135aaa7a3b", + "sha256:c46643970dff9f5c976c6512fd35768c4a3819f01f61169d8cdac3f9290903b7", + "sha256:c5ec71fd4a43b6d84ddb88c1df94572479d9a26ef3f150cef3dacefecf888105", + "sha256:c6e5174f8ca585755988bc278c8bb5d02d9dc2e971591ef4a1baabdf2d99589b", + "sha256:c89b558f8a9a5a6f2cfc923c304d49f0ce629c3bd85cb442ca258ec20366394c", + "sha256:cc44e3545d908ecf3e5773266c487ad1877be718d9dc65fc7eb6e7d14960985b", + "sha256:cc6f8246e74dd210d7e2b56c76ceaba1cc52b025cd75dbe96eb48791e0250e98", + "sha256:cd556c79ad665faeae28020a0ab3bda6cd47d94bec48e36970719b0b86e4dcf4", + "sha256:ce6f3a147b4b1a8b09aae48517ae91139b1b010c5f36423fa2b866a8b23df879", + "sha256:ceb499d2b3d1d7b7ba23abe8bf26df5f06ba8c71127f188333dddcf356b4b63f", + "sha256:cef06fb382557f66d81d804230c11ab292d94b840b3cb7bf4450778377b592f4", + "sha256:e448f56cfeae7b1b3b5bcd99bb377cde7c4eb1970a525c770720a352bc4c8044", + "sha256:e52d3d95df81c8f6b2a1685aabffadf2d2d9ad97203a40f8d61e51b70f191e4e", + "sha256:ee2f1d1c223c3d2c24e3afbb2dd38be3f03b1a8d6a83ee3d9eb8c36a52bee899", + "sha256:f2c6888eada180814b8583c3e793f3f343a692fc802546eed45f40a001b1169f", + "sha256:f51dbba78d68a44e99d484ca8c8f604f17e957c1ca09c3ebc2c7e3bbd9ba0448", + "sha256:f54de00baf200b4539a5a092a759f000b5f45fd226d6d25a76b0dff71177a714", + "sha256:fa10fee7e32213f5c7b0d6428ea92e3a3fdd6d725590238a3f92c0de1c78b9d2", + "sha256:fabeeb121735d47d8eab8671b6b031ce08514c86b7ad8f7d5490a7b6dcd6267d", + "sha256:fac3c432851038b3e6afe086f777732bcf7f6ebbfd90951fa04ee53db6d0bcdd", + "sha256:fda29412a66099af6d6de0baa6bd7c52674de177ec2ad2630ca264142d69c6c7", + "sha256:ff1330e8bc996570221b450e2d539134baa9465f5cb98aff0e0f73f34172e0ae" + ], + "version": "==5.3.1" + }, + "coveralls": { + "hashes": [ + "sha256:2301a19500b06649d2ec4f2858f9c69638d7699a4c63027c5d53daba666147cc", + "sha256:b990ba1f7bc4288e63340be0433698c1efe8217f78c689d254c2540af3d38617" + ], + "index": "pypi", + "version": "==2.2.0" + }, + "cryptography": { + "hashes": [ + "sha256:0003a52a123602e1acee177dc90dd201f9bb1e73f24a070db7d36c588e8f5c7d", + "sha256:0e85aaae861d0485eb5a79d33226dd6248d2a9f133b81532c8f5aae37de10ff7", + "sha256:594a1db4511bc4d960571536abe21b4e5c3003e8750ab8365fafce71c5d86901", + "sha256:69e836c9e5ff4373ce6d3ab311c1a2eed274793083858d3cd4c7d12ce20d5f9c", + "sha256:788a3c9942df5e4371c199d10383f44a105d67d401fb4304178020142f020244", + "sha256:7e177e4bea2de937a584b13645cab32f25e3d96fc0bc4a4cf99c27dc77682be6", + "sha256:83d9d2dfec70364a74f4e7c70ad04d3ca2e6a08b703606993407bf46b97868c5", + "sha256:84ef7a0c10c24a7773163f917f1cb6b4444597efd505a8aed0a22e8c4780f27e", + "sha256:9e21301f7a1e7c03dbea73e8602905a4ebba641547a462b26dd03451e5769e7c", + "sha256:9f6b0492d111b43de5f70052e24c1f0951cb9e6022188ebcb1cc3a3d301469b0", + "sha256:a69bd3c68b98298f490e84519b954335154917eaab52cf582fa2c5c7efc6e812", + "sha256:b4890d5fb9b7a23e3bf8abf5a8a7da8e228f1e97dc96b30b95685df840b6914a", + "sha256:c366df0401d1ec4e548bebe8f91d55ebcc0ec3137900d214dd7aac8427ef3030", + "sha256:dc42f645f8f3a489c3dd416730a514e7a91a59510ddaadc09d04224c098d3302" + ], + "version": "==3.3.1" + }, + "distlib": { + "hashes": [ + "sha256:8c09de2c67b3e7deef7184574fc060ab8a793e7adbb183d942c389c8b13c52fb", + "sha256:edf6116872c863e1aa9d5bb7cb5e05a022c519a4594dc703843343a9ddd9bff1" + ], + "version": "==0.3.1" + }, + "docopt": { + "hashes": [ + "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491" + ], + "version": "==0.6.2" + }, + "docutils": { + "hashes": [ + "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af", + "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc" + ], + "index": "pypi", + "version": "==0.16" + }, + "filelock": { + "hashes": [ + "sha256:18d82244ee114f543149c66a6e0c14e9c4f8a1044b5cdaadd0f82159d6a6ff59", + "sha256:929b7d63ec5b7d6b71b0fa5ac14e030b3f70b75747cef1b10da9b879fef15836" + ], + "version": "==3.0.12" + }, + "flake8": { + "hashes": [ + "sha256:749dbbd6bfd0cf1318af27bf97a14e28e5ff548ef8e5b1566ccfb25a11e7c839", + "sha256:aadae8761ec651813c24be05c6f7b4680857ef6afaae4651a4eccaef97ce6c3b" + ], + "index": "pypi", + "version": "==3.8.4" + }, + "idna": { + "hashes": [ + "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6", + "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0" + ], + "version": "==2.10" + }, + "iniconfig": { + "hashes": [ + "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3", + "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32" + ], + "version": "==1.1.1" + }, + "jeepney": { + "hashes": [ + "sha256:7d59b6622675ca9e993a6bd38de845051d315f8b0c72cca3aef733a20b648657", + "sha256:aec56c0eb1691a841795111e184e13cad504f7703b9a64f63020816afa79a8ae" + ], + "markers": "sys_platform == 'linux'", + "version": "==0.6.0" + }, + "keyring": { + "hashes": [ + "sha256:1746d3ac913d449a090caf11e9e4af00e26c3f7f7e81027872192b2398b98675", + "sha256:4be9cbaaaf83e61d6399f733d113ede7d1c73bc75cb6aeb64eee0f6ac39b30ea" + ], + "version": "==21.8.0" + }, + "mccabe": { + "hashes": [ + "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", + "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f" + ], + "version": "==0.6.1" + }, + "mypy-extensions": { + "hashes": [ + "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d", + "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8" + ], + "version": "==0.4.3" + }, + "packaging": { + "hashes": [ + "sha256:24e0da08660a87484d1602c30bb4902d74816b6985b93de36926f5bc95741858", + "sha256:78598185a7008a470d64526a8059de9aaa449238f280fc9eb6b13ba6c4109093" + ], + "version": "==20.8" + }, + "pathspec": { + "hashes": [ + "sha256:86379d6b86d75816baba717e64b1a3a3469deb93bb76d613c9ce79edc5cb68fd", + "sha256:aa0cb481c4041bf52ffa7b0d8fa6cd3e88a2ca4879c533c9153882ee2556790d" + ], + "version": "==0.8.1" + }, + "pbr": { + "hashes": [ + "sha256:5fad80b613c402d5b7df7bd84812548b2a61e9977387a80a5fc5c396492b13c9", + "sha256:b236cde0ac9a6aedd5e3c34517b423cd4fd97ef723849da6b0d2231142d89c00" + ], + "version": "==5.5.1" + }, + "pipenv": { + "hashes": [ + "sha256:4ab2f60742184d851ac44b9e1d423afe71dc2ea7a68bde07eb890c8b4ce5a420", + "sha256:8253fe6f9cfb3791a54da8a0571f73c918cb3457dd908684c1800a13a06ec4c1" + ], + "version": "==2020.11.15" + }, + "pipenv-to-requirements": { + "hashes": [ + "sha256:1c18682a4ec70eb07261d2b558df3ee22ea00192663a1b98fd1e45e22946c163", + "sha256:cb70471a17a7d4658caffe989539413313d51df1b3a54838bcd7e7d3ab3fcc18" + ], + "index": "pypi", + "version": "==0.9.0" + }, + "pkginfo": { + "hashes": [ + "sha256:a6a4ac943b496745cec21f14f021bbd869d5e9b4f6ec06918cffea5a2f4b9193", + "sha256:ce14d7296c673dc4c61c759a0b6c14bae34e34eb819c0017bb6ca5b7292c56e9" + ], + "version": "==1.6.1" + }, + "pluggy": { + "hashes": [ + "sha256:265a94bf44ca13662f12fcd1b074c14d4b269a712f051b6f644ef7e705d6735f", + "sha256:467f0219e89bb5061a8429c6fc5cf055fa3983a0e68e84a1d205046306b37d9e" + ], + "version": "==1.0.0.dev0" + }, + "py": { + "hashes": [ + "sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3", + "sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a" + ], + "version": "==1.10.0" + }, + "pycodestyle": { + "hashes": [ + "sha256:2295e7b2f6b5bd100585ebcb1f616591b652db8a741695b3d8f5d28bdc934367", + "sha256:c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e" + ], + "version": "==2.6.0" + }, + "pycparser": { + "hashes": [ + "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0", + "sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705" + ], + "version": "==2.20" + }, + "pyflakes": { + "hashes": [ + "sha256:0d94e0e05a19e57a99444b6ddcf9a6eb2e5c68d3ca1e98e90707af8152c90a92", + "sha256:35b2d75ee967ea93b55750aa9edbbf72813e06a66ba54438df2cfac9e3c27fc8" + ], + "version": "==2.2.0" + }, + "pygments": { + "hashes": [ + "sha256:ccf3acacf3782cbed4a989426012f1c535c9a90d3a7fc3f16d231b9372d2b716", + "sha256:f275b6c0909e5dafd2d6269a656aa90fa58ebf4a74f8fcf9053195d226b24a08" + ], + "version": "==2.7.3" + }, + "pyparsing": { + "hashes": [ + "sha256:1c6409312ce2ce2997896af5756753778d5f1603666dba5587804f09ad82ed27", + "sha256:f4896b4cc085a1f8f8ae53a1a90db5a86b3825ff73eb974dffee3d9e701007f4" + ], + "version": "==3.0.0b2" + }, + "pytest": { + "hashes": [ + "sha256:1969f797a1a0dbd8ccf0fecc80262312729afea9c17f1d70ebf85c5e76c6f7c8", + "sha256:66e419b1899bc27346cb2c993e12c5e5e8daba9073c1fbce33b9807abc95c306" + ], + "index": "pypi", + "version": "==6.2.1" + }, + "pytest-cov": { + "hashes": [ + "sha256:45ec2d5182f89a81fc3eb29e3d1ed3113b9e9a873bcddb2a71faaab066110191", + "sha256:47bd0ce14056fdd79f93e1713f88fad7bdcc583dcd7783da86ef2f085a0bb88e" + ], + "index": "pypi", + "version": "==2.10.1" + }, + "readme-renderer": { + "hashes": [ + "sha256:267854ac3b1530633c2394ead828afcd060fc273217c42ac36b6be9c42cd9a9d", + "sha256:6b7e5aa59210a40de72eb79931491eaf46fefca2952b9181268bd7c7c65c260a" + ], + "version": "==28.0" + }, + "regex": { + "hashes": [ + "sha256:02951b7dacb123d8ea6da44fe45ddd084aa6777d4b2454fa0da61d569c6fa538", + "sha256:0d08e71e70c0237883d0bef12cad5145b84c3705e9c6a588b2a9c7080e5af2a4", + "sha256:1862a9d9194fae76a7aaf0150d5f2a8ec1da89e8b55890b1786b8f88a0f619dc", + "sha256:1ab79fcb02b930de09c76d024d279686ec5d532eb814fd0ed1e0051eb8bd2daa", + "sha256:1fa7ee9c2a0e30405e21031d07d7ba8617bc590d391adfc2b7f1e8b99f46f444", + "sha256:262c6825b309e6485ec2493ffc7e62a13cf13fb2a8b6d212f72bd53ad34118f1", + "sha256:2a11a3e90bd9901d70a5b31d7dd85114755a581a5da3fc996abfefa48aee78af", + "sha256:2c99e97d388cd0a8d30f7c514d67887d8021541b875baf09791a3baad48bb4f8", + "sha256:3128e30d83f2e70b0bed9b2a34e92707d0877e460b402faca908c6667092ada9", + "sha256:38c8fd190db64f513fe4e1baa59fed086ae71fa45083b6936b52d34df8f86a88", + "sha256:3bddc701bdd1efa0d5264d2649588cbfda549b2899dc8d50417e47a82e1387ba", + "sha256:4902e6aa086cbb224241adbc2f06235927d5cdacffb2425c73e6570e8d862364", + "sha256:49cae022fa13f09be91b2c880e58e14b6da5d10639ed45ca69b85faf039f7a4e", + "sha256:56e01daca75eae420bce184edd8bb341c8eebb19dd3bce7266332258f9fb9dd7", + "sha256:5862975b45d451b6db51c2e654990c1820523a5b07100fc6903e9c86575202a0", + "sha256:6a8ce43923c518c24a2579fda49f093f1397dad5d18346211e46f134fc624e31", + "sha256:6c54ce4b5d61a7129bad5c5dc279e222afd00e721bf92f9ef09e4fae28755683", + "sha256:6e4b08c6f8daca7d8f07c8d24e4331ae7953333dbd09c648ed6ebd24db5a10ee", + "sha256:717881211f46de3ab130b58ec0908267961fadc06e44f974466d1887f865bd5b", + "sha256:749078d1eb89484db5f34b4012092ad14b327944ee7f1c4f74d6279a6e4d1884", + "sha256:7913bd25f4ab274ba37bc97ad0e21c31004224ccb02765ad984eef43e04acc6c", + "sha256:7a25fcbeae08f96a754b45bdc050e1fb94b95cab046bf56b016c25e9ab127b3e", + "sha256:83d6b356e116ca119db8e7c6fc2983289d87b27b3fac238cfe5dca529d884562", + "sha256:8b882a78c320478b12ff024e81dc7d43c1462aa4a3341c754ee65d857a521f85", + "sha256:8f6a2229e8ad946e36815f2a03386bb8353d4bde368fdf8ca5f0cb97264d3b5c", + "sha256:9801c4c1d9ae6a70aeb2128e5b4b68c45d4f0af0d1535500884d644fa9b768c6", + "sha256:a15f64ae3a027b64496a71ab1f722355e570c3fac5ba2801cafce846bf5af01d", + "sha256:a3d748383762e56337c39ab35c6ed4deb88df5326f97a38946ddd19028ecce6b", + "sha256:a63f1a07932c9686d2d416fb295ec2c01ab246e89b4d58e5fa468089cab44b70", + "sha256:b2b1a5ddae3677d89b686e5c625fc5547c6e492bd755b520de5332773a8af06b", + "sha256:b2f4007bff007c96a173e24dcda236e5e83bde4358a557f9ccf5e014439eae4b", + "sha256:baf378ba6151f6e272824b86a774326f692bc2ef4cc5ce8d5bc76e38c813a55f", + "sha256:bafb01b4688833e099d79e7efd23f99172f501a15c44f21ea2118681473fdba0", + "sha256:bba349276b126947b014e50ab3316c027cac1495992f10e5682dc677b3dfa0c5", + "sha256:c084582d4215593f2f1d28b65d2a2f3aceff8342aa85afd7be23a9cad74a0de5", + "sha256:d1ebb090a426db66dd80df8ca85adc4abfcbad8a7c2e9a5ec7513ede522e0a8f", + "sha256:d2d8ce12b7c12c87e41123997ebaf1a5767a5be3ec545f64675388970f415e2e", + "sha256:e32f5f3d1b1c663af7f9c4c1e72e6ffe9a78c03a31e149259f531e0fed826512", + "sha256:e3faaf10a0d1e8e23a9b51d1900b72e1635c2d5b0e1bea1c18022486a8e2e52d", + "sha256:f7d29a6fc4760300f86ae329e3b6ca28ea9c20823df123a2ea8693e967b29917", + "sha256:f8f295db00ef5f8bae530fc39af0b40486ca6068733fb860b42115052206466f" + ], + "version": "==2020.11.13" + }, + "requests": { + "hashes": [ + "sha256:27973dd4a904a4f13b263a19c866c13b92a39ed1c964655f025f3f8d3d75b804", + "sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e" + ], + "version": "==2.25.1" + }, + "requests-toolbelt": { + "hashes": [ + "sha256:380606e1d10dc85c3bd47bf5a6095f815ec007be7a8b69c878507068df059e6f", + "sha256:968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0" + ], + "version": "==0.9.1" + }, + "rfc3986": { + "hashes": [ + "sha256:112398da31a3344dc25dbf477d8df6cb34f9278a94fee2625d89e4514be8bb9d", + "sha256:af9147e9aceda37c91a05f4deb128d4b4b49d6b199775fd2d2927768abdc8f50" + ], + "version": "==1.4.0" + }, + "secretstorage": { + "hashes": [ + "sha256:30cfdef28829dad64d6ea1ed08f8eff6aa115a77068926bcc9f5225d5a3246aa", + "sha256:5c36f6537a523ec5f969ef9fad61c98eb9e017bc601d811e53aa25bece64892f" + ], + "markers": "sys_platform == 'linux'", + "version": "==3.3.0" + }, + "six": { + "hashes": [ + "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", + "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" + ], + "version": "==1.15.0" + }, + "toml": { + "hashes": [ + "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", + "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" + ], + "version": "==0.10.2" + }, + "tqdm": { + "hashes": [ + "sha256:556c55b081bd9aa746d34125d024b73f0e2a0e62d5927ff0e400e20ee0a03b9a", + "sha256:b8b46036fd00176d0870307123ef06bb851096964fa7fc578d789f90ce82c3e4" + ], + "version": "==4.55.1" + }, + "twine": { + "hashes": [ + "sha256:2f6942ec2a17417e19d2dd372fc4faa424c87ee9ce49b4e20c427eb00a0f3f41", + "sha256:fcffa8fc37e8083a5be0728371f299598870ee1eccc94e9a25cef7b1dcfa8297" + ], + "index": "pypi", + "version": "==3.3.0" + }, + "typed-ast": { + "hashes": [ + "sha256:07d49388d5bf7e863f7fa2f124b1b1d89d8aa0e2f7812faff0a5658c01c59aa1", + "sha256:14bf1522cdee369e8f5581238edac09150c765ec1cb33615855889cf33dcb92d", + "sha256:240296b27397e4e37874abb1df2a608a92df85cf3e2a04d0d4d61055c8305ba6", + "sha256:36d829b31ab67d6fcb30e185ec996e1f72b892255a745d3a82138c97d21ed1cd", + "sha256:37f48d46d733d57cc70fd5f30572d11ab8ed92da6e6b28e024e4a3edfb456e37", + "sha256:4c790331247081ea7c632a76d5b2a265e6d325ecd3179d06e9cf8d46d90dd151", + "sha256:5dcfc2e264bd8a1db8b11a892bd1647154ce03eeba94b461effe68790d8b8e07", + "sha256:7147e2a76c75f0f64c4319886e7639e490fee87c9d25cb1d4faef1d8cf83a440", + "sha256:7703620125e4fb79b64aa52427ec192822e9f45d37d4b6625ab37ef403e1df70", + "sha256:8368f83e93c7156ccd40e49a783a6a6850ca25b556c0fa0240ed0f659d2fe496", + "sha256:84aa6223d71012c68d577c83f4e7db50d11d6b1399a9c779046d75e24bed74ea", + "sha256:85f95aa97a35bdb2f2f7d10ec5bbdac0aeb9dafdaf88e17492da0504de2e6400", + "sha256:8db0e856712f79c45956da0c9a40ca4246abc3485ae0d7ecc86a20f5e4c09abc", + "sha256:9044ef2df88d7f33692ae3f18d3be63dec69c4fb1b5a4a9ac950f9b4ba571606", + "sha256:963c80b583b0661918718b095e02303d8078950b26cc00b5e5ea9ababe0de1fc", + "sha256:987f15737aba2ab5f3928c617ccf1ce412e2e321c77ab16ca5a293e7bbffd581", + "sha256:9ec45db0c766f196ae629e509f059ff05fc3148f9ffd28f3cfe75d4afb485412", + "sha256:9fc0b3cb5d1720e7141d103cf4819aea239f7d136acf9ee4a69b047b7986175a", + "sha256:a2c927c49f2029291fbabd673d51a2180038f8cd5a5b2f290f78c4516be48be2", + "sha256:a38878a223bdd37c9709d07cd357bb79f4c760b29210e14ad0fb395294583787", + "sha256:b4fcdcfa302538f70929eb7b392f536a237cbe2ed9cba88e3bf5027b39f5f77f", + "sha256:c0c74e5579af4b977c8b932f40a5464764b2f86681327410aa028a22d2f54937", + "sha256:c1c876fd795b36126f773db9cbb393f19808edd2637e00fd6caba0e25f2c7b64", + "sha256:c9aadc4924d4b5799112837b226160428524a9a45f830e0d0f184b19e4090487", + "sha256:cc7b98bf58167b7f2db91a4327da24fb93368838eb84a44c472283778fc2446b", + "sha256:cf54cfa843f297991b7388c281cb3855d911137223c6b6d2dd82a47ae5125a41", + "sha256:d003156bb6a59cda9050e983441b7fa2487f7800d76bdc065566b7d728b4581a", + "sha256:d175297e9533d8d37437abc14e8a83cbc68af93cc9c1c59c2c292ec59a0697a3", + "sha256:d746a437cdbca200622385305aedd9aef68e8a645e385cc483bdc5e488f07166", + "sha256:e683e409e5c45d5c9082dc1daf13f6374300806240719f95dc783d1fc942af10" + ], + "version": "==1.4.2" + }, + "typing-extensions": { + "hashes": [ + "sha256:7cb407020f00f7bfc3cb3e7881628838e69d8f3fcab2f64742a5e76b2f841918", + "sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c", + "sha256:dafc7639cde7f1b6e1acc0f457842a83e722ccca8eef5270af2d74792619a89f" + ], + "version": "==3.7.4.3" + }, + "urllib3": { + "hashes": [ + "sha256:19188f96923873c92ccb987120ec4acaa12f0461fa9ce5d3d0772bc965a39e08", + "sha256:d8ff90d979214d7b4f8ce956e80f4028fc6860e4431f731ea4a8c08f23f99473" + ], + "version": "==1.26.2" + }, + "virtualenv": { + "hashes": [ + "sha256:54b05fc737ea9c9ee9f8340f579e5da5b09fb64fd010ab5757eb90268616907c", + "sha256:b7a8ec323ee02fb2312f098b6b4c9de99559b462775bc8fe3627a73706603c1b" + ], + "version": "==20.2.2" + }, + "virtualenv-clone": { + "hashes": [ + "sha256:07e74418b7cc64f4fda987bf5bc71ebd59af27a7bc9e8a8ee9fd54b1f2390a27", + "sha256:665e48dd54c84b98b71a657acb49104c54e7652bce9c1c4f6c6976ed4c827a29" + ], + "version": "==0.5.4" + }, + "webencodings": { + "hashes": [ + "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", + "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923" + ], + "version": "==0.5.1" + }, + "wheel": { + "hashes": [ + "sha256:78b5b185f0e5763c26ca1e324373aadd49182ca90e825f7853f4b2509215dc0e", + "sha256:e11eefd162658ea59a60a0f6c7d493a7190ea4b9a85e335b33489d9f17e0245e" + ], + "index": "pypi", + "version": "==0.36.2" + } } - } } From db90ae0cd9254cb9ed89db8f5bcbb3047a4bf58d Mon Sep 17 00:00:00 2001 From: Rishabh Bhargava Date: Mon, 4 Jan 2021 20:39:55 -0800 Subject: [PATCH 112/120] Allowing more up-to-date boto3 versions (#534) --- Pipfile | 3 +- Pipfile.lock | 1306 ++++++++++++++++++++++++-------------------------- setup.py | 2 +- 3 files changed, 625 insertions(+), 686 deletions(-) diff --git a/Pipfile b/Pipfile index ad2ccb3f..08c07b87 100644 --- a/Pipfile +++ b/Pipfile @@ -16,8 +16,7 @@ coveralls = "*" pytest-cov = "*" [packages] -boto3 = "==1.4.4" -botocore = "==1.5.62" +boto3 = ">=1.4.4" click = "==6.6" docutils = "*" jmespath = "==0.10.0" diff --git a/Pipfile.lock b/Pipfile.lock index 8858afe3..68f2945f 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,686 +1,626 @@ { - "_meta": { - "hash": { - "sha256": "9f8eb7e96bec655284d2a66eb95b72d9f580e9158a0eb1684f14da912ccdb8ea" - }, - "pipfile-spec": 6, - "requires": {}, - "sources": [ - { - "name": "pypi", - "url": "https://pypi.org/simple", - "verify_ssl": true - } - ] - }, - "default": { - "boto3": { - "hashes": [ - "sha256:5050c29353fec97301116386f469fa5858ccf47201623b53cf9f74e603bda52f", - "sha256:518f724c4758e5a5bed114fbcbd1cf470a15306d416ff421a025b76f1d390939" - ], - "index": "pypi", - "version": "==1.4.4" - }, - "botocore": { - "hashes": [ - "sha256:79c9347b1333f94372c0c2fea950326b41c83ff16e67298db0a016708fe45be6", - "sha256:9878598a9db8be63788dc1030616d1e5b64e4a9c2d85dba34b4a5c3b6b049fa6" - ], - "index": "pypi", - "version": "==1.5.62" - }, - "click": { - "hashes": [ - "sha256:cc6a19da8ebff6e7074f731447ef7e112bd23adf3de5c597cf9989f2fd8defe9", - "sha256:fcf697e1fd4b567d817c69dab10a4035937fe6af175c05fd6806b69f74cbc6c4" - ], - "index": "pypi", - "version": "==6.6" - }, - "docutils": { - "hashes": [ - "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af", - "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc" - ], - "index": "pypi", - "version": "==0.16" - }, - "jmespath": { - "hashes": [ - "sha256:b85d0567b8666149a93172712e68920734333c0ce7e89b78b3e987f71e5ed4f9", - "sha256:cdf6525904cc597730141d61b36f2e4b8ecc257c420fa2f4549bac2c2d0cb72f" - ], - "index": "pypi", - "version": "==0.10.0" - }, - "pyaml": { - "hashes": [ - "sha256:9c54fb5f17b58572c4cef50affea60bb73f445ab153580dac07a12383712b5b8" - ], - "index": "pypi", - "version": "==15.8.2" - }, - "python-dateutil": { - "hashes": [ - "sha256:1408fdb07c6a1fa9997567ce3fcee6a337b39a503d80699e0f213de4aa4b32ed", - "sha256:598499a75be2e5e18a66f12c00dd47a069de24794effeda4228bfc760f44f527", - "sha256:9d94861f04ce14f9a3d835206067c889b8f1244f1415035dadcf9c10066adf04" - ], - "index": "pypi", - "version": "==2.5.3" - }, - "pyyaml": { - "hashes": [ - "sha256:1adecc22f88d38052fb787d959f003811ca858b799590a5eaa70e63dca50308c", - "sha256:436bc774ecf7c103814098159fbb84c2715d25980175292c648f2da143909f95", - "sha256:460a5a4248763f6f37ea225d19d5c205677d8d525f6a83357ca622ed541830c2", - "sha256:5a22a9c84653debfbf198d02fe592c176ea548cccce47553f35f466e15cf2fd4", - "sha256:7a5d3f26b89d688db27822343dfa25c599627bc92093e788956372285c6298ad", - "sha256:9372b04a02080752d9e6f990179a4ab840227c6e2ce15b95e1278456664cf2ba", - "sha256:a5dcbebee834eaddf3fa7366316b880ff4062e4bcc9787b78c7fbb4a26ff2dd1", - "sha256:aee5bab92a176e7cd034e57f46e9df9a9862a71f8f37cad167c6fc74c65f5b4e", - "sha256:c51f642898c0bacd335fc119da60baae0824f2cde95b0330b56c0553439f0673", - "sha256:c68ea4d3ba1705da1e0d85da6684ac657912679a649e8868bd850d2c299cce13", - "sha256:e23d0cc5299223dcc37885dae624f382297717e459ea24053709675a976a3e19" - ], - "index": "pypi", - "version": "==5.1" - }, - "s3transfer": { - "hashes": [ - "sha256:90dc18e028989c609146e241ea153250be451e05ecc0c2832565231dacdf59c1", - "sha256:c7a9ec356982d5e9ab2d4b46391a7d6a950e2b04c472419f5fdec70cc0ada72f" - ], - "version": "==0.1.13" - }, - "six": { - "hashes": [ - "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", - "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" - ], - "version": "==1.15.0" - } - }, - "develop": { - "appdirs": { - "hashes": [ - "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41", - "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128" - ], - "version": "==1.4.4" - }, - "attrs": { - "hashes": [ - "sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6", - "sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700" - ], - "version": "==20.3.0" - }, - "black": { - "hashes": [ - "sha256:1c02557aa099101b9d21496f8a914e9ed2222ef70336404eeeac8edba836fbea" - ], - "index": "pypi", - "version": "==20.8b1" - }, - "bleach": { - "hashes": [ - "sha256:52b5919b81842b1854196eaae5ca29679a2f2e378905c346d3ca8227c2c66080", - "sha256:9f8ccbeb6183c6e6cddea37592dfb0167485c1e3b13b3363bc325aa8bda3adbd" - ], - "version": "==3.2.1" - }, - "bump2version": { - "hashes": [ - "sha256:37f927ea17cde7ae2d7baf832f8e80ce3777624554a653006c9144f8017fe410", - "sha256:762cb2bfad61f4ec8e2bdf452c7c267416f8c70dd9ecb1653fd0bbb01fa936e6" - ], - "version": "==1.0.1" - }, - "bumpversion": { - "hashes": [ - "sha256:4ba55e4080d373f80177b4dabef146c07ce73c7d1377aabf9d3c3ae1f94584a6", - "sha256:4eb3267a38194d09f048a2179980bb4803701969bff2c85fa8f6d1ce050be15e" - ], - "index": "pypi", - "version": "==0.6.0" - }, - "certifi": { - "hashes": [ - "sha256:1a4995114262bffbc2413b159f2a1a480c969de6e6eb13ee966d470af86af59c", - "sha256:719a74fb9e33b9bd44cc7f3a8d94bc35e4049deebe19ba7d8e108280cfd59830" - ], - "version": "==2020.12.5" - }, - "cffi": { - "hashes": [ - "sha256:00a1ba5e2e95684448de9b89888ccd02c98d512064b4cb987d48f4b40aa0421e", - "sha256:00e28066507bfc3fe865a31f325c8391a1ac2916219340f87dfad602c3e48e5d", - "sha256:045d792900a75e8b1e1b0ab6787dd733a8190ffcf80e8c8ceb2fb10a29ff238a", - "sha256:0638c3ae1a0edfb77c6765d487fee624d2b1ee1bdfeffc1f0b58c64d149e7eec", - "sha256:105abaf8a6075dc96c1fe5ae7aae073f4696f2905fde6aeada4c9d2926752362", - "sha256:155136b51fd733fa94e1c2ea5211dcd4c8879869008fc811648f16541bf99668", - "sha256:1a465cbe98a7fd391d47dce4b8f7e5b921e6cd805ef421d04f5f66ba8f06086c", - "sha256:1d2c4994f515e5b485fd6d3a73d05526aa0fcf248eb135996b088d25dfa1865b", - "sha256:2c24d61263f511551f740d1a065eb0212db1dbbbbd241db758f5244281590c06", - "sha256:51a8b381b16ddd370178a65360ebe15fbc1c71cf6f584613a7ea08bfad946698", - "sha256:594234691ac0e9b770aee9fcdb8fa02c22e43e5c619456efd0d6c2bf276f3eb2", - "sha256:5cf4be6c304ad0b6602f5c4e90e2f59b47653ac1ed9c662ed379fe48a8f26b0c", - "sha256:64081b3f8f6f3c3de6191ec89d7dc6c86a8a43911f7ecb422c60e90c70be41c7", - "sha256:6bc25fc545a6b3d57b5f8618e59fc13d3a3a68431e8ca5fd4c13241cd70d0009", - "sha256:798caa2a2384b1cbe8a2a139d80734c9db54f9cc155c99d7cc92441a23871c03", - "sha256:7c6b1dece89874d9541fc974917b631406233ea0440d0bdfbb8e03bf39a49b3b", - "sha256:840793c68105fe031f34d6a086eaea153a0cd5c491cde82a74b420edd0a2b909", - "sha256:8d6603078baf4e11edc4168a514c5ce5b3ba6e3e9c374298cb88437957960a53", - "sha256:9cc46bc107224ff5b6d04369e7c595acb700c3613ad7bcf2e2012f62ece80c35", - "sha256:9f7a31251289b2ab6d4012f6e83e58bc3b96bd151f5b5262467f4bb6b34a7c26", - "sha256:9ffb888f19d54a4d4dfd4b3f29bc2c16aa4972f1c2ab9c4ab09b8ab8685b9c2b", - "sha256:a5ed8c05548b54b998b9498753fb9cadbfd92ee88e884641377d8a8b291bcc01", - "sha256:a7711edca4dcef1a75257b50a2fbfe92a65187c47dab5a0f1b9b332c5919a3fb", - "sha256:af5c59122a011049aad5dd87424b8e65a80e4a6477419c0c1015f73fb5ea0293", - "sha256:b18e0a9ef57d2b41f5c68beefa32317d286c3d6ac0484efd10d6e07491bb95dd", - "sha256:b4e248d1087abf9f4c10f3c398896c87ce82a9856494a7155823eb45a892395d", - "sha256:ba4e9e0ae13fc41c6b23299545e5ef73055213e466bd107953e4a013a5ddd7e3", - "sha256:c6332685306b6417a91b1ff9fae889b3ba65c2292d64bd9245c093b1b284809d", - "sha256:d5ff0621c88ce83a28a10d2ce719b2ee85635e85c515f12bac99a95306da4b2e", - "sha256:d9efd8b7a3ef378dd61a1e77367f1924375befc2eba06168b6ebfa903a5e59ca", - "sha256:df5169c4396adc04f9b0a05f13c074df878b6052430e03f50e68adf3a57aa28d", - "sha256:ebb253464a5d0482b191274f1c8bf00e33f7e0b9c66405fbffc61ed2c839c775", - "sha256:ec80dc47f54e6e9a78181ce05feb71a0353854cc26999db963695f950b5fb375", - "sha256:f032b34669220030f905152045dfa27741ce1a6db3324a5bc0b96b6c7420c87b", - "sha256:f60567825f791c6f8a592f3c6e3bd93dd2934e3f9dac189308426bd76b00ef3b", - "sha256:f803eaa94c2fcda012c047e62bc7a51b0bdabda1cad7a92a522694ea2d76e49f" - ], - "version": "==1.14.4" - }, - "chardet": { - "hashes": [ - "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa", - "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5" - ], - "version": "==4.0.0" - }, - "click": { - "hashes": [ - "sha256:cc6a19da8ebff6e7074f731447ef7e112bd23adf3de5c597cf9989f2fd8defe9", - "sha256:fcf697e1fd4b567d817c69dab10a4035937fe6af175c05fd6806b69f74cbc6c4" - ], - "index": "pypi", - "version": "==6.6" - }, - "codecov": { - "hashes": [ - "sha256:6cde272454009d27355f9434f4e49f238c0273b216beda8472a65dc4957f473b", - "sha256:ba8553a82942ce37d4da92b70ffd6d54cf635fc1793ab0a7dc3fecd6ebfb3df8" - ], - "index": "pypi", - "version": "==2.1.11" - }, - "colorama": { - "hashes": [ - "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b", - "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2" - ], - "version": "==0.4.4" - }, - "coverage": { - "hashes": [ - "sha256:08b3ba72bd981531fd557f67beee376d6700fba183b167857038997ba30dd297", - "sha256:2757fa64e11ec12220968f65d086b7a29b6583d16e9a544c889b22ba98555ef1", - "sha256:3102bb2c206700a7d28181dbe04d66b30780cde1d1c02c5f3c165cf3d2489497", - "sha256:3498b27d8236057def41de3585f317abae235dd3a11d33e01736ffedb2ef8606", - "sha256:378ac77af41350a8c6b8801a66021b52da8a05fd77e578b7380e876c0ce4f528", - "sha256:38f16b1317b8dd82df67ed5daa5f5e7c959e46579840d77a67a4ceb9cef0a50b", - "sha256:3911c2ef96e5ddc748a3c8b4702c61986628bb719b8378bf1e4a6184bbd48fe4", - "sha256:3a3c3f8863255f3c31db3889f8055989527173ef6192a283eb6f4db3c579d830", - "sha256:3b14b1da110ea50c8bcbadc3b82c3933974dbeea1832e814aab93ca1163cd4c1", - "sha256:535dc1e6e68fad5355f9984d5637c33badbdc987b0c0d303ee95a6c979c9516f", - "sha256:6f61319e33222591f885c598e3e24f6a4be3533c1d70c19e0dc59e83a71ce27d", - "sha256:723d22d324e7997a651478e9c5a3120a0ecbc9a7e94071f7e1954562a8806cf3", - "sha256:76b2775dda7e78680d688daabcb485dc87cf5e3184a0b3e012e1d40e38527cc8", - "sha256:782a5c7df9f91979a7a21792e09b34a658058896628217ae6362088b123c8500", - "sha256:7e4d159021c2029b958b2363abec4a11db0ce8cd43abb0d9ce44284cb97217e7", - "sha256:8dacc4073c359f40fcf73aede8428c35f84639baad7e1b46fce5ab7a8a7be4bb", - "sha256:8f33d1156241c43755137288dea619105477961cfa7e47f48dbf96bc2c30720b", - "sha256:8ffd4b204d7de77b5dd558cdff986a8274796a1e57813ed005b33fd97e29f059", - "sha256:93a280c9eb736a0dcca19296f3c30c720cb41a71b1f9e617f341f0a8e791a69b", - "sha256:9a4f66259bdd6964d8cf26142733c81fb562252db74ea367d9beb4f815478e72", - "sha256:9a9d4ff06804920388aab69c5ea8a77525cf165356db70131616acd269e19b36", - "sha256:a2070c5affdb3a5e751f24208c5c4f3d5f008fa04d28731416e023c93b275277", - "sha256:a4857f7e2bc6921dbd487c5c88b84f5633de3e7d416c4dc0bb70256775551a6c", - "sha256:a607ae05b6c96057ba86c811d9c43423f35e03874ffb03fbdcd45e0637e8b631", - "sha256:a66ca3bdf21c653e47f726ca57f46ba7fc1f260ad99ba783acc3e58e3ebdb9ff", - "sha256:ab110c48bc3d97b4d19af41865e14531f300b482da21783fdaacd159251890e8", - "sha256:b239711e774c8eb910e9b1ac719f02f5ae4bf35fa0420f438cdc3a7e4e7dd6ec", - "sha256:be0416074d7f253865bb67630cf7210cbc14eb05f4099cc0f82430135aaa7a3b", - "sha256:c46643970dff9f5c976c6512fd35768c4a3819f01f61169d8cdac3f9290903b7", - "sha256:c5ec71fd4a43b6d84ddb88c1df94572479d9a26ef3f150cef3dacefecf888105", - "sha256:c6e5174f8ca585755988bc278c8bb5d02d9dc2e971591ef4a1baabdf2d99589b", - "sha256:c89b558f8a9a5a6f2cfc923c304d49f0ce629c3bd85cb442ca258ec20366394c", - "sha256:cc44e3545d908ecf3e5773266c487ad1877be718d9dc65fc7eb6e7d14960985b", - "sha256:cc6f8246e74dd210d7e2b56c76ceaba1cc52b025cd75dbe96eb48791e0250e98", - "sha256:cd556c79ad665faeae28020a0ab3bda6cd47d94bec48e36970719b0b86e4dcf4", - "sha256:ce6f3a147b4b1a8b09aae48517ae91139b1b010c5f36423fa2b866a8b23df879", - "sha256:ceb499d2b3d1d7b7ba23abe8bf26df5f06ba8c71127f188333dddcf356b4b63f", - "sha256:cef06fb382557f66d81d804230c11ab292d94b840b3cb7bf4450778377b592f4", - "sha256:e448f56cfeae7b1b3b5bcd99bb377cde7c4eb1970a525c770720a352bc4c8044", - "sha256:e52d3d95df81c8f6b2a1685aabffadf2d2d9ad97203a40f8d61e51b70f191e4e", - "sha256:ee2f1d1c223c3d2c24e3afbb2dd38be3f03b1a8d6a83ee3d9eb8c36a52bee899", - "sha256:f2c6888eada180814b8583c3e793f3f343a692fc802546eed45f40a001b1169f", - "sha256:f51dbba78d68a44e99d484ca8c8f604f17e957c1ca09c3ebc2c7e3bbd9ba0448", - "sha256:f54de00baf200b4539a5a092a759f000b5f45fd226d6d25a76b0dff71177a714", - "sha256:fa10fee7e32213f5c7b0d6428ea92e3a3fdd6d725590238a3f92c0de1c78b9d2", - "sha256:fabeeb121735d47d8eab8671b6b031ce08514c86b7ad8f7d5490a7b6dcd6267d", - "sha256:fac3c432851038b3e6afe086f777732bcf7f6ebbfd90951fa04ee53db6d0bcdd", - "sha256:fda29412a66099af6d6de0baa6bd7c52674de177ec2ad2630ca264142d69c6c7", - "sha256:ff1330e8bc996570221b450e2d539134baa9465f5cb98aff0e0f73f34172e0ae" - ], - "version": "==5.3.1" - }, - "coveralls": { - "hashes": [ - "sha256:2301a19500b06649d2ec4f2858f9c69638d7699a4c63027c5d53daba666147cc", - "sha256:b990ba1f7bc4288e63340be0433698c1efe8217f78c689d254c2540af3d38617" - ], - "index": "pypi", - "version": "==2.2.0" - }, - "cryptography": { - "hashes": [ - "sha256:0003a52a123602e1acee177dc90dd201f9bb1e73f24a070db7d36c588e8f5c7d", - "sha256:0e85aaae861d0485eb5a79d33226dd6248d2a9f133b81532c8f5aae37de10ff7", - "sha256:594a1db4511bc4d960571536abe21b4e5c3003e8750ab8365fafce71c5d86901", - "sha256:69e836c9e5ff4373ce6d3ab311c1a2eed274793083858d3cd4c7d12ce20d5f9c", - "sha256:788a3c9942df5e4371c199d10383f44a105d67d401fb4304178020142f020244", - "sha256:7e177e4bea2de937a584b13645cab32f25e3d96fc0bc4a4cf99c27dc77682be6", - "sha256:83d9d2dfec70364a74f4e7c70ad04d3ca2e6a08b703606993407bf46b97868c5", - "sha256:84ef7a0c10c24a7773163f917f1cb6b4444597efd505a8aed0a22e8c4780f27e", - "sha256:9e21301f7a1e7c03dbea73e8602905a4ebba641547a462b26dd03451e5769e7c", - "sha256:9f6b0492d111b43de5f70052e24c1f0951cb9e6022188ebcb1cc3a3d301469b0", - "sha256:a69bd3c68b98298f490e84519b954335154917eaab52cf582fa2c5c7efc6e812", - "sha256:b4890d5fb9b7a23e3bf8abf5a8a7da8e228f1e97dc96b30b95685df840b6914a", - "sha256:c366df0401d1ec4e548bebe8f91d55ebcc0ec3137900d214dd7aac8427ef3030", - "sha256:dc42f645f8f3a489c3dd416730a514e7a91a59510ddaadc09d04224c098d3302" - ], - "version": "==3.3.1" - }, - "distlib": { - "hashes": [ - "sha256:8c09de2c67b3e7deef7184574fc060ab8a793e7adbb183d942c389c8b13c52fb", - "sha256:edf6116872c863e1aa9d5bb7cb5e05a022c519a4594dc703843343a9ddd9bff1" - ], - "version": "==0.3.1" - }, - "docopt": { - "hashes": [ - "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491" - ], - "version": "==0.6.2" - }, - "docutils": { - "hashes": [ - "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af", - "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc" - ], - "index": "pypi", - "version": "==0.16" - }, - "filelock": { - "hashes": [ - "sha256:18d82244ee114f543149c66a6e0c14e9c4f8a1044b5cdaadd0f82159d6a6ff59", - "sha256:929b7d63ec5b7d6b71b0fa5ac14e030b3f70b75747cef1b10da9b879fef15836" - ], - "version": "==3.0.12" - }, - "flake8": { - "hashes": [ - "sha256:749dbbd6bfd0cf1318af27bf97a14e28e5ff548ef8e5b1566ccfb25a11e7c839", - "sha256:aadae8761ec651813c24be05c6f7b4680857ef6afaae4651a4eccaef97ce6c3b" - ], - "index": "pypi", - "version": "==3.8.4" - }, - "idna": { - "hashes": [ - "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6", - "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0" - ], - "version": "==2.10" - }, - "iniconfig": { - "hashes": [ - "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3", - "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32" - ], - "version": "==1.1.1" - }, - "jeepney": { - "hashes": [ - "sha256:7d59b6622675ca9e993a6bd38de845051d315f8b0c72cca3aef733a20b648657", - "sha256:aec56c0eb1691a841795111e184e13cad504f7703b9a64f63020816afa79a8ae" - ], - "markers": "sys_platform == 'linux'", - "version": "==0.6.0" - }, - "keyring": { - "hashes": [ - "sha256:1746d3ac913d449a090caf11e9e4af00e26c3f7f7e81027872192b2398b98675", - "sha256:4be9cbaaaf83e61d6399f733d113ede7d1c73bc75cb6aeb64eee0f6ac39b30ea" - ], - "version": "==21.8.0" - }, - "mccabe": { - "hashes": [ - "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", - "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f" - ], - "version": "==0.6.1" - }, - "mypy-extensions": { - "hashes": [ - "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d", - "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8" - ], - "version": "==0.4.3" - }, - "packaging": { - "hashes": [ - "sha256:24e0da08660a87484d1602c30bb4902d74816b6985b93de36926f5bc95741858", - "sha256:78598185a7008a470d64526a8059de9aaa449238f280fc9eb6b13ba6c4109093" - ], - "version": "==20.8" - }, - "pathspec": { - "hashes": [ - "sha256:86379d6b86d75816baba717e64b1a3a3469deb93bb76d613c9ce79edc5cb68fd", - "sha256:aa0cb481c4041bf52ffa7b0d8fa6cd3e88a2ca4879c533c9153882ee2556790d" - ], - "version": "==0.8.1" - }, - "pbr": { - "hashes": [ - "sha256:5fad80b613c402d5b7df7bd84812548b2a61e9977387a80a5fc5c396492b13c9", - "sha256:b236cde0ac9a6aedd5e3c34517b423cd4fd97ef723849da6b0d2231142d89c00" - ], - "version": "==5.5.1" - }, - "pipenv": { - "hashes": [ - "sha256:4ab2f60742184d851ac44b9e1d423afe71dc2ea7a68bde07eb890c8b4ce5a420", - "sha256:8253fe6f9cfb3791a54da8a0571f73c918cb3457dd908684c1800a13a06ec4c1" - ], - "version": "==2020.11.15" - }, - "pipenv-to-requirements": { - "hashes": [ - "sha256:1c18682a4ec70eb07261d2b558df3ee22ea00192663a1b98fd1e45e22946c163", - "sha256:cb70471a17a7d4658caffe989539413313d51df1b3a54838bcd7e7d3ab3fcc18" - ], - "index": "pypi", - "version": "==0.9.0" - }, - "pkginfo": { - "hashes": [ - "sha256:a6a4ac943b496745cec21f14f021bbd869d5e9b4f6ec06918cffea5a2f4b9193", - "sha256:ce14d7296c673dc4c61c759a0b6c14bae34e34eb819c0017bb6ca5b7292c56e9" - ], - "version": "==1.6.1" - }, - "pluggy": { - "hashes": [ - "sha256:265a94bf44ca13662f12fcd1b074c14d4b269a712f051b6f644ef7e705d6735f", - "sha256:467f0219e89bb5061a8429c6fc5cf055fa3983a0e68e84a1d205046306b37d9e" - ], - "version": "==1.0.0.dev0" - }, - "py": { - "hashes": [ - "sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3", - "sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a" - ], - "version": "==1.10.0" - }, - "pycodestyle": { - "hashes": [ - "sha256:2295e7b2f6b5bd100585ebcb1f616591b652db8a741695b3d8f5d28bdc934367", - "sha256:c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e" - ], - "version": "==2.6.0" - }, - "pycparser": { - "hashes": [ - "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0", - "sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705" - ], - "version": "==2.20" - }, - "pyflakes": { - "hashes": [ - "sha256:0d94e0e05a19e57a99444b6ddcf9a6eb2e5c68d3ca1e98e90707af8152c90a92", - "sha256:35b2d75ee967ea93b55750aa9edbbf72813e06a66ba54438df2cfac9e3c27fc8" - ], - "version": "==2.2.0" - }, - "pygments": { - "hashes": [ - "sha256:ccf3acacf3782cbed4a989426012f1c535c9a90d3a7fc3f16d231b9372d2b716", - "sha256:f275b6c0909e5dafd2d6269a656aa90fa58ebf4a74f8fcf9053195d226b24a08" - ], - "version": "==2.7.3" - }, - "pyparsing": { - "hashes": [ - "sha256:1c6409312ce2ce2997896af5756753778d5f1603666dba5587804f09ad82ed27", - "sha256:f4896b4cc085a1f8f8ae53a1a90db5a86b3825ff73eb974dffee3d9e701007f4" - ], - "version": "==3.0.0b2" - }, - "pytest": { - "hashes": [ - "sha256:1969f797a1a0dbd8ccf0fecc80262312729afea9c17f1d70ebf85c5e76c6f7c8", - "sha256:66e419b1899bc27346cb2c993e12c5e5e8daba9073c1fbce33b9807abc95c306" - ], - "index": "pypi", - "version": "==6.2.1" - }, - "pytest-cov": { - "hashes": [ - "sha256:45ec2d5182f89a81fc3eb29e3d1ed3113b9e9a873bcddb2a71faaab066110191", - "sha256:47bd0ce14056fdd79f93e1713f88fad7bdcc583dcd7783da86ef2f085a0bb88e" - ], - "index": "pypi", - "version": "==2.10.1" - }, - "readme-renderer": { - "hashes": [ - "sha256:267854ac3b1530633c2394ead828afcd060fc273217c42ac36b6be9c42cd9a9d", - "sha256:6b7e5aa59210a40de72eb79931491eaf46fefca2952b9181268bd7c7c65c260a" - ], - "version": "==28.0" - }, - "regex": { - "hashes": [ - "sha256:02951b7dacb123d8ea6da44fe45ddd084aa6777d4b2454fa0da61d569c6fa538", - "sha256:0d08e71e70c0237883d0bef12cad5145b84c3705e9c6a588b2a9c7080e5af2a4", - "sha256:1862a9d9194fae76a7aaf0150d5f2a8ec1da89e8b55890b1786b8f88a0f619dc", - "sha256:1ab79fcb02b930de09c76d024d279686ec5d532eb814fd0ed1e0051eb8bd2daa", - "sha256:1fa7ee9c2a0e30405e21031d07d7ba8617bc590d391adfc2b7f1e8b99f46f444", - "sha256:262c6825b309e6485ec2493ffc7e62a13cf13fb2a8b6d212f72bd53ad34118f1", - "sha256:2a11a3e90bd9901d70a5b31d7dd85114755a581a5da3fc996abfefa48aee78af", - "sha256:2c99e97d388cd0a8d30f7c514d67887d8021541b875baf09791a3baad48bb4f8", - "sha256:3128e30d83f2e70b0bed9b2a34e92707d0877e460b402faca908c6667092ada9", - "sha256:38c8fd190db64f513fe4e1baa59fed086ae71fa45083b6936b52d34df8f86a88", - "sha256:3bddc701bdd1efa0d5264d2649588cbfda549b2899dc8d50417e47a82e1387ba", - "sha256:4902e6aa086cbb224241adbc2f06235927d5cdacffb2425c73e6570e8d862364", - "sha256:49cae022fa13f09be91b2c880e58e14b6da5d10639ed45ca69b85faf039f7a4e", - "sha256:56e01daca75eae420bce184edd8bb341c8eebb19dd3bce7266332258f9fb9dd7", - "sha256:5862975b45d451b6db51c2e654990c1820523a5b07100fc6903e9c86575202a0", - "sha256:6a8ce43923c518c24a2579fda49f093f1397dad5d18346211e46f134fc624e31", - "sha256:6c54ce4b5d61a7129bad5c5dc279e222afd00e721bf92f9ef09e4fae28755683", - "sha256:6e4b08c6f8daca7d8f07c8d24e4331ae7953333dbd09c648ed6ebd24db5a10ee", - "sha256:717881211f46de3ab130b58ec0908267961fadc06e44f974466d1887f865bd5b", - "sha256:749078d1eb89484db5f34b4012092ad14b327944ee7f1c4f74d6279a6e4d1884", - "sha256:7913bd25f4ab274ba37bc97ad0e21c31004224ccb02765ad984eef43e04acc6c", - "sha256:7a25fcbeae08f96a754b45bdc050e1fb94b95cab046bf56b016c25e9ab127b3e", - "sha256:83d6b356e116ca119db8e7c6fc2983289d87b27b3fac238cfe5dca529d884562", - "sha256:8b882a78c320478b12ff024e81dc7d43c1462aa4a3341c754ee65d857a521f85", - "sha256:8f6a2229e8ad946e36815f2a03386bb8353d4bde368fdf8ca5f0cb97264d3b5c", - "sha256:9801c4c1d9ae6a70aeb2128e5b4b68c45d4f0af0d1535500884d644fa9b768c6", - "sha256:a15f64ae3a027b64496a71ab1f722355e570c3fac5ba2801cafce846bf5af01d", - "sha256:a3d748383762e56337c39ab35c6ed4deb88df5326f97a38946ddd19028ecce6b", - "sha256:a63f1a07932c9686d2d416fb295ec2c01ab246e89b4d58e5fa468089cab44b70", - "sha256:b2b1a5ddae3677d89b686e5c625fc5547c6e492bd755b520de5332773a8af06b", - "sha256:b2f4007bff007c96a173e24dcda236e5e83bde4358a557f9ccf5e014439eae4b", - "sha256:baf378ba6151f6e272824b86a774326f692bc2ef4cc5ce8d5bc76e38c813a55f", - "sha256:bafb01b4688833e099d79e7efd23f99172f501a15c44f21ea2118681473fdba0", - "sha256:bba349276b126947b014e50ab3316c027cac1495992f10e5682dc677b3dfa0c5", - "sha256:c084582d4215593f2f1d28b65d2a2f3aceff8342aa85afd7be23a9cad74a0de5", - "sha256:d1ebb090a426db66dd80df8ca85adc4abfcbad8a7c2e9a5ec7513ede522e0a8f", - "sha256:d2d8ce12b7c12c87e41123997ebaf1a5767a5be3ec545f64675388970f415e2e", - "sha256:e32f5f3d1b1c663af7f9c4c1e72e6ffe9a78c03a31e149259f531e0fed826512", - "sha256:e3faaf10a0d1e8e23a9b51d1900b72e1635c2d5b0e1bea1c18022486a8e2e52d", - "sha256:f7d29a6fc4760300f86ae329e3b6ca28ea9c20823df123a2ea8693e967b29917", - "sha256:f8f295db00ef5f8bae530fc39af0b40486ca6068733fb860b42115052206466f" - ], - "version": "==2020.11.13" - }, - "requests": { - "hashes": [ - "sha256:27973dd4a904a4f13b263a19c866c13b92a39ed1c964655f025f3f8d3d75b804", - "sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e" - ], - "version": "==2.25.1" - }, - "requests-toolbelt": { - "hashes": [ - "sha256:380606e1d10dc85c3bd47bf5a6095f815ec007be7a8b69c878507068df059e6f", - "sha256:968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0" - ], - "version": "==0.9.1" - }, - "rfc3986": { - "hashes": [ - "sha256:112398da31a3344dc25dbf477d8df6cb34f9278a94fee2625d89e4514be8bb9d", - "sha256:af9147e9aceda37c91a05f4deb128d4b4b49d6b199775fd2d2927768abdc8f50" - ], - "version": "==1.4.0" - }, - "secretstorage": { - "hashes": [ - "sha256:30cfdef28829dad64d6ea1ed08f8eff6aa115a77068926bcc9f5225d5a3246aa", - "sha256:5c36f6537a523ec5f969ef9fad61c98eb9e017bc601d811e53aa25bece64892f" - ], - "markers": "sys_platform == 'linux'", - "version": "==3.3.0" - }, - "six": { - "hashes": [ - "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", - "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" - ], - "version": "==1.15.0" - }, - "toml": { - "hashes": [ - "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", - "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" - ], - "version": "==0.10.2" - }, - "tqdm": { - "hashes": [ - "sha256:556c55b081bd9aa746d34125d024b73f0e2a0e62d5927ff0e400e20ee0a03b9a", - "sha256:b8b46036fd00176d0870307123ef06bb851096964fa7fc578d789f90ce82c3e4" - ], - "version": "==4.55.1" - }, - "twine": { - "hashes": [ - "sha256:2f6942ec2a17417e19d2dd372fc4faa424c87ee9ce49b4e20c427eb00a0f3f41", - "sha256:fcffa8fc37e8083a5be0728371f299598870ee1eccc94e9a25cef7b1dcfa8297" - ], - "index": "pypi", - "version": "==3.3.0" - }, - "typed-ast": { - "hashes": [ - "sha256:07d49388d5bf7e863f7fa2f124b1b1d89d8aa0e2f7812faff0a5658c01c59aa1", - "sha256:14bf1522cdee369e8f5581238edac09150c765ec1cb33615855889cf33dcb92d", - "sha256:240296b27397e4e37874abb1df2a608a92df85cf3e2a04d0d4d61055c8305ba6", - "sha256:36d829b31ab67d6fcb30e185ec996e1f72b892255a745d3a82138c97d21ed1cd", - "sha256:37f48d46d733d57cc70fd5f30572d11ab8ed92da6e6b28e024e4a3edfb456e37", - "sha256:4c790331247081ea7c632a76d5b2a265e6d325ecd3179d06e9cf8d46d90dd151", - "sha256:5dcfc2e264bd8a1db8b11a892bd1647154ce03eeba94b461effe68790d8b8e07", - "sha256:7147e2a76c75f0f64c4319886e7639e490fee87c9d25cb1d4faef1d8cf83a440", - "sha256:7703620125e4fb79b64aa52427ec192822e9f45d37d4b6625ab37ef403e1df70", - "sha256:8368f83e93c7156ccd40e49a783a6a6850ca25b556c0fa0240ed0f659d2fe496", - "sha256:84aa6223d71012c68d577c83f4e7db50d11d6b1399a9c779046d75e24bed74ea", - "sha256:85f95aa97a35bdb2f2f7d10ec5bbdac0aeb9dafdaf88e17492da0504de2e6400", - "sha256:8db0e856712f79c45956da0c9a40ca4246abc3485ae0d7ecc86a20f5e4c09abc", - "sha256:9044ef2df88d7f33692ae3f18d3be63dec69c4fb1b5a4a9ac950f9b4ba571606", - "sha256:963c80b583b0661918718b095e02303d8078950b26cc00b5e5ea9ababe0de1fc", - "sha256:987f15737aba2ab5f3928c617ccf1ce412e2e321c77ab16ca5a293e7bbffd581", - "sha256:9ec45db0c766f196ae629e509f059ff05fc3148f9ffd28f3cfe75d4afb485412", - "sha256:9fc0b3cb5d1720e7141d103cf4819aea239f7d136acf9ee4a69b047b7986175a", - "sha256:a2c927c49f2029291fbabd673d51a2180038f8cd5a5b2f290f78c4516be48be2", - "sha256:a38878a223bdd37c9709d07cd357bb79f4c760b29210e14ad0fb395294583787", - "sha256:b4fcdcfa302538f70929eb7b392f536a237cbe2ed9cba88e3bf5027b39f5f77f", - "sha256:c0c74e5579af4b977c8b932f40a5464764b2f86681327410aa028a22d2f54937", - "sha256:c1c876fd795b36126f773db9cbb393f19808edd2637e00fd6caba0e25f2c7b64", - "sha256:c9aadc4924d4b5799112837b226160428524a9a45f830e0d0f184b19e4090487", - "sha256:cc7b98bf58167b7f2db91a4327da24fb93368838eb84a44c472283778fc2446b", - "sha256:cf54cfa843f297991b7388c281cb3855d911137223c6b6d2dd82a47ae5125a41", - "sha256:d003156bb6a59cda9050e983441b7fa2487f7800d76bdc065566b7d728b4581a", - "sha256:d175297e9533d8d37437abc14e8a83cbc68af93cc9c1c59c2c292ec59a0697a3", - "sha256:d746a437cdbca200622385305aedd9aef68e8a645e385cc483bdc5e488f07166", - "sha256:e683e409e5c45d5c9082dc1daf13f6374300806240719f95dc783d1fc942af10" - ], - "version": "==1.4.2" - }, - "typing-extensions": { - "hashes": [ - "sha256:7cb407020f00f7bfc3cb3e7881628838e69d8f3fcab2f64742a5e76b2f841918", - "sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c", - "sha256:dafc7639cde7f1b6e1acc0f457842a83e722ccca8eef5270af2d74792619a89f" - ], - "version": "==3.7.4.3" - }, - "urllib3": { - "hashes": [ - "sha256:19188f96923873c92ccb987120ec4acaa12f0461fa9ce5d3d0772bc965a39e08", - "sha256:d8ff90d979214d7b4f8ce956e80f4028fc6860e4431f731ea4a8c08f23f99473" - ], - "version": "==1.26.2" - }, - "virtualenv": { - "hashes": [ - "sha256:54b05fc737ea9c9ee9f8340f579e5da5b09fb64fd010ab5757eb90268616907c", - "sha256:b7a8ec323ee02fb2312f098b6b4c9de99559b462775bc8fe3627a73706603c1b" - ], - "version": "==20.2.2" - }, - "virtualenv-clone": { - "hashes": [ - "sha256:07e74418b7cc64f4fda987bf5bc71ebd59af27a7bc9e8a8ee9fd54b1f2390a27", - "sha256:665e48dd54c84b98b71a657acb49104c54e7652bce9c1c4f6c6976ed4c827a29" - ], - "version": "==0.5.4" - }, - "webencodings": { - "hashes": [ - "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", - "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923" - ], - "version": "==0.5.1" - }, - "wheel": { - "hashes": [ - "sha256:78b5b185f0e5763c26ca1e324373aadd49182ca90e825f7853f4b2509215dc0e", - "sha256:e11eefd162658ea59a60a0f6c7d493a7190ea4b9a85e335b33489d9f17e0245e" - ], - "index": "pypi", - "version": "==0.36.2" - } + "_meta": { + "hash": { + "sha256": "268a9fbe0d2211ccc1494c41b629b657a0d599f81819c32cecdc9595cb909274" + }, + "pipfile-spec": 6, + "requires": {}, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "boto3": { + "hashes": [ + "sha256:e6915ac164a05367787db2416eeaa8662ae5e0b9c53902dbf23b407686ef5028" + ], + "index": "pypi", + "version": "==1.16.48" + }, + "botocore": { + "hashes": [ + "sha256:549aa9619b51c5b103c7bb906497f60824576366aa4e3642b4e57f9f53a06f7d", + "sha256:b954c596f8bdf31d5fdf1eff8a2296bde8094e1e22961a79b83bb62ddeba8a49" + ], + "version": "==1.19.48" + }, + "click": { + "hashes": [ + "sha256:cc6a19da8ebff6e7074f731447ef7e112bd23adf3de5c597cf9989f2fd8defe9", + "sha256:fcf697e1fd4b567d817c69dab10a4035937fe6af175c05fd6806b69f74cbc6c4" + ], + "index": "pypi", + "version": "==6.6" + }, + "docutils": { + "hashes": [ + "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af", + "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc" + ], + "index": "pypi", + "version": "==0.16" + }, + "jmespath": { + "hashes": [ + "sha256:b85d0567b8666149a93172712e68920734333c0ce7e89b78b3e987f71e5ed4f9", + "sha256:cdf6525904cc597730141d61b36f2e4b8ecc257c420fa2f4549bac2c2d0cb72f" + ], + "index": "pypi", + "version": "==0.10.0" + }, + "pyaml": { + "hashes": [ + "sha256:9c54fb5f17b58572c4cef50affea60bb73f445ab153580dac07a12383712b5b8" + ], + "index": "pypi", + "version": "==15.8.2" + }, + "python-dateutil": { + "hashes": [ + "sha256:1408fdb07c6a1fa9997567ce3fcee6a337b39a503d80699e0f213de4aa4b32ed", + "sha256:598499a75be2e5e18a66f12c00dd47a069de24794effeda4228bfc760f44f527", + "sha256:9d94861f04ce14f9a3d835206067c889b8f1244f1415035dadcf9c10066adf04" + ], + "index": "pypi", + "version": "==2.5.3" + }, + "pyyaml": { + "hashes": [ + "sha256:1adecc22f88d38052fb787d959f003811ca858b799590a5eaa70e63dca50308c", + "sha256:436bc774ecf7c103814098159fbb84c2715d25980175292c648f2da143909f95", + "sha256:460a5a4248763f6f37ea225d19d5c205677d8d525f6a83357ca622ed541830c2", + "sha256:5a22a9c84653debfbf198d02fe592c176ea548cccce47553f35f466e15cf2fd4", + "sha256:7a5d3f26b89d688db27822343dfa25c599627bc92093e788956372285c6298ad", + "sha256:9372b04a02080752d9e6f990179a4ab840227c6e2ce15b95e1278456664cf2ba", + "sha256:a5dcbebee834eaddf3fa7366316b880ff4062e4bcc9787b78c7fbb4a26ff2dd1", + "sha256:aee5bab92a176e7cd034e57f46e9df9a9862a71f8f37cad167c6fc74c65f5b4e", + "sha256:c51f642898c0bacd335fc119da60baae0824f2cde95b0330b56c0553439f0673", + "sha256:c68ea4d3ba1705da1e0d85da6684ac657912679a649e8868bd850d2c299cce13", + "sha256:e23d0cc5299223dcc37885dae624f382297717e459ea24053709675a976a3e19" + ], + "index": "pypi", + "version": "==5.1" + }, + "s3transfer": { + "hashes": [ + "sha256:2482b4259524933a022d59da830f51bd746db62f047d6eb213f2f8855dcb8a13", + "sha256:921a37e2aefc64145e7b73d50c71bb4f26f46e4c9f414dc648c6245ff92cf7db" + ], + "version": "==0.3.3" + }, + "six": { + "hashes": [ + "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", + "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" + ], + "version": "==1.15.0" + }, + "urllib3": { + "hashes": [ + "sha256:19188f96923873c92ccb987120ec4acaa12f0461fa9ce5d3d0772bc965a39e08", + "sha256:d8ff90d979214d7b4f8ce956e80f4028fc6860e4431f731ea4a8c08f23f99473" + ], + "markers": "python_version != '3.4'", + "version": "==1.26.2" + } + }, + "develop": { + "appdirs": { + "hashes": [ + "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41", + "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128" + ], + "version": "==1.4.4" + }, + "attrs": { + "hashes": [ + "sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6", + "sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700" + ], + "version": "==20.3.0" + }, + "black": { + "hashes": [ + "sha256:1c02557aa099101b9d21496f8a914e9ed2222ef70336404eeeac8edba836fbea" + ], + "index": "pypi", + "version": "==20.8b1" + }, + "bleach": { + "hashes": [ + "sha256:52b5919b81842b1854196eaae5ca29679a2f2e378905c346d3ca8227c2c66080", + "sha256:9f8ccbeb6183c6e6cddea37592dfb0167485c1e3b13b3363bc325aa8bda3adbd" + ], + "version": "==3.2.1" + }, + "bump2version": { + "hashes": [ + "sha256:37f927ea17cde7ae2d7baf832f8e80ce3777624554a653006c9144f8017fe410", + "sha256:762cb2bfad61f4ec8e2bdf452c7c267416f8c70dd9ecb1653fd0bbb01fa936e6" + ], + "version": "==1.0.1" + }, + "bumpversion": { + "hashes": [ + "sha256:4ba55e4080d373f80177b4dabef146c07ce73c7d1377aabf9d3c3ae1f94584a6", + "sha256:4eb3267a38194d09f048a2179980bb4803701969bff2c85fa8f6d1ce050be15e" + ], + "index": "pypi", + "version": "==0.6.0" + }, + "certifi": { + "hashes": [ + "sha256:1a4995114262bffbc2413b159f2a1a480c969de6e6eb13ee966d470af86af59c", + "sha256:719a74fb9e33b9bd44cc7f3a8d94bc35e4049deebe19ba7d8e108280cfd59830" + ], + "version": "==2020.12.5" + }, + "chardet": { + "hashes": [ + "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa", + "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5" + ], + "version": "==4.0.0" + }, + "click": { + "hashes": [ + "sha256:cc6a19da8ebff6e7074f731447ef7e112bd23adf3de5c597cf9989f2fd8defe9", + "sha256:fcf697e1fd4b567d817c69dab10a4035937fe6af175c05fd6806b69f74cbc6c4" + ], + "index": "pypi", + "version": "==6.6" + }, + "codecov": { + "hashes": [ + "sha256:6cde272454009d27355f9434f4e49f238c0273b216beda8472a65dc4957f473b", + "sha256:ba8553a82942ce37d4da92b70ffd6d54cf635fc1793ab0a7dc3fecd6ebfb3df8" + ], + "index": "pypi", + "version": "==2.1.11" + }, + "colorama": { + "hashes": [ + "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b", + "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2" + ], + "version": "==0.4.4" + }, + "coverage": { + "hashes": [ + "sha256:08b3ba72bd981531fd557f67beee376d6700fba183b167857038997ba30dd297", + "sha256:2757fa64e11ec12220968f65d086b7a29b6583d16e9a544c889b22ba98555ef1", + "sha256:3102bb2c206700a7d28181dbe04d66b30780cde1d1c02c5f3c165cf3d2489497", + "sha256:3498b27d8236057def41de3585f317abae235dd3a11d33e01736ffedb2ef8606", + "sha256:378ac77af41350a8c6b8801a66021b52da8a05fd77e578b7380e876c0ce4f528", + "sha256:38f16b1317b8dd82df67ed5daa5f5e7c959e46579840d77a67a4ceb9cef0a50b", + "sha256:3911c2ef96e5ddc748a3c8b4702c61986628bb719b8378bf1e4a6184bbd48fe4", + "sha256:3a3c3f8863255f3c31db3889f8055989527173ef6192a283eb6f4db3c579d830", + "sha256:3b14b1da110ea50c8bcbadc3b82c3933974dbeea1832e814aab93ca1163cd4c1", + "sha256:535dc1e6e68fad5355f9984d5637c33badbdc987b0c0d303ee95a6c979c9516f", + "sha256:6f61319e33222591f885c598e3e24f6a4be3533c1d70c19e0dc59e83a71ce27d", + "sha256:723d22d324e7997a651478e9c5a3120a0ecbc9a7e94071f7e1954562a8806cf3", + "sha256:76b2775dda7e78680d688daabcb485dc87cf5e3184a0b3e012e1d40e38527cc8", + "sha256:782a5c7df9f91979a7a21792e09b34a658058896628217ae6362088b123c8500", + "sha256:7e4d159021c2029b958b2363abec4a11db0ce8cd43abb0d9ce44284cb97217e7", + "sha256:8dacc4073c359f40fcf73aede8428c35f84639baad7e1b46fce5ab7a8a7be4bb", + "sha256:8f33d1156241c43755137288dea619105477961cfa7e47f48dbf96bc2c30720b", + "sha256:8ffd4b204d7de77b5dd558cdff986a8274796a1e57813ed005b33fd97e29f059", + "sha256:93a280c9eb736a0dcca19296f3c30c720cb41a71b1f9e617f341f0a8e791a69b", + "sha256:9a4f66259bdd6964d8cf26142733c81fb562252db74ea367d9beb4f815478e72", + "sha256:9a9d4ff06804920388aab69c5ea8a77525cf165356db70131616acd269e19b36", + "sha256:a2070c5affdb3a5e751f24208c5c4f3d5f008fa04d28731416e023c93b275277", + "sha256:a4857f7e2bc6921dbd487c5c88b84f5633de3e7d416c4dc0bb70256775551a6c", + "sha256:a607ae05b6c96057ba86c811d9c43423f35e03874ffb03fbdcd45e0637e8b631", + "sha256:a66ca3bdf21c653e47f726ca57f46ba7fc1f260ad99ba783acc3e58e3ebdb9ff", + "sha256:ab110c48bc3d97b4d19af41865e14531f300b482da21783fdaacd159251890e8", + "sha256:b239711e774c8eb910e9b1ac719f02f5ae4bf35fa0420f438cdc3a7e4e7dd6ec", + "sha256:be0416074d7f253865bb67630cf7210cbc14eb05f4099cc0f82430135aaa7a3b", + "sha256:c46643970dff9f5c976c6512fd35768c4a3819f01f61169d8cdac3f9290903b7", + "sha256:c5ec71fd4a43b6d84ddb88c1df94572479d9a26ef3f150cef3dacefecf888105", + "sha256:c6e5174f8ca585755988bc278c8bb5d02d9dc2e971591ef4a1baabdf2d99589b", + "sha256:c89b558f8a9a5a6f2cfc923c304d49f0ce629c3bd85cb442ca258ec20366394c", + "sha256:cc44e3545d908ecf3e5773266c487ad1877be718d9dc65fc7eb6e7d14960985b", + "sha256:cc6f8246e74dd210d7e2b56c76ceaba1cc52b025cd75dbe96eb48791e0250e98", + "sha256:cd556c79ad665faeae28020a0ab3bda6cd47d94bec48e36970719b0b86e4dcf4", + "sha256:ce6f3a147b4b1a8b09aae48517ae91139b1b010c5f36423fa2b866a8b23df879", + "sha256:ceb499d2b3d1d7b7ba23abe8bf26df5f06ba8c71127f188333dddcf356b4b63f", + "sha256:cef06fb382557f66d81d804230c11ab292d94b840b3cb7bf4450778377b592f4", + "sha256:e448f56cfeae7b1b3b5bcd99bb377cde7c4eb1970a525c770720a352bc4c8044", + "sha256:e52d3d95df81c8f6b2a1685aabffadf2d2d9ad97203a40f8d61e51b70f191e4e", + "sha256:ee2f1d1c223c3d2c24e3afbb2dd38be3f03b1a8d6a83ee3d9eb8c36a52bee899", + "sha256:f2c6888eada180814b8583c3e793f3f343a692fc802546eed45f40a001b1169f", + "sha256:f51dbba78d68a44e99d484ca8c8f604f17e957c1ca09c3ebc2c7e3bbd9ba0448", + "sha256:f54de00baf200b4539a5a092a759f000b5f45fd226d6d25a76b0dff71177a714", + "sha256:fa10fee7e32213f5c7b0d6428ea92e3a3fdd6d725590238a3f92c0de1c78b9d2", + "sha256:fabeeb121735d47d8eab8671b6b031ce08514c86b7ad8f7d5490a7b6dcd6267d", + "sha256:fac3c432851038b3e6afe086f777732bcf7f6ebbfd90951fa04ee53db6d0bcdd", + "sha256:fda29412a66099af6d6de0baa6bd7c52674de177ec2ad2630ca264142d69c6c7", + "sha256:ff1330e8bc996570221b450e2d539134baa9465f5cb98aff0e0f73f34172e0ae" + ], + "version": "==5.3.1" + }, + "coveralls": { + "hashes": [ + "sha256:2301a19500b06649d2ec4f2858f9c69638d7699a4c63027c5d53daba666147cc", + "sha256:b990ba1f7bc4288e63340be0433698c1efe8217f78c689d254c2540af3d38617" + ], + "index": "pypi", + "version": "==2.2.0" + }, + "distlib": { + "hashes": [ + "sha256:8c09de2c67b3e7deef7184574fc060ab8a793e7adbb183d942c389c8b13c52fb", + "sha256:edf6116872c863e1aa9d5bb7cb5e05a022c519a4594dc703843343a9ddd9bff1" + ], + "version": "==0.3.1" + }, + "docopt": { + "hashes": [ + "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491" + ], + "version": "==0.6.2" + }, + "docutils": { + "hashes": [ + "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af", + "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc" + ], + "index": "pypi", + "version": "==0.16" + }, + "filelock": { + "hashes": [ + "sha256:18d82244ee114f543149c66a6e0c14e9c4f8a1044b5cdaadd0f82159d6a6ff59", + "sha256:929b7d63ec5b7d6b71b0fa5ac14e030b3f70b75747cef1b10da9b879fef15836" + ], + "version": "==3.0.12" + }, + "flake8": { + "hashes": [ + "sha256:749dbbd6bfd0cf1318af27bf97a14e28e5ff548ef8e5b1566ccfb25a11e7c839", + "sha256:aadae8761ec651813c24be05c6f7b4680857ef6afaae4651a4eccaef97ce6c3b" + ], + "index": "pypi", + "version": "==3.8.4" + }, + "idna": { + "hashes": [ + "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6", + "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0" + ], + "version": "==2.10" + }, + "importlib-metadata": { + "hashes": [ + "sha256:5c5a2720817414a6c41f0a49993908068243ae02c1635a228126519b509c8aed", + "sha256:bf792d480abbd5eda85794e4afb09dd538393f7d6e6ffef6e9f03d2014cf9450" + ], + "markers": "python_version < '3.8'", + "version": "==3.3.0" + }, + "iniconfig": { + "hashes": [ + "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3", + "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32" + ], + "version": "==1.1.1" + }, + "keyring": { + "hashes": [ + "sha256:1746d3ac913d449a090caf11e9e4af00e26c3f7f7e81027872192b2398b98675", + "sha256:4be9cbaaaf83e61d6399f733d113ede7d1c73bc75cb6aeb64eee0f6ac39b30ea" + ], + "version": "==21.8.0" + }, + "mccabe": { + "hashes": [ + "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", + "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f" + ], + "version": "==0.6.1" + }, + "mypy-extensions": { + "hashes": [ + "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d", + "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8" + ], + "version": "==0.4.3" + }, + "packaging": { + "hashes": [ + "sha256:24e0da08660a87484d1602c30bb4902d74816b6985b93de36926f5bc95741858", + "sha256:78598185a7008a470d64526a8059de9aaa449238f280fc9eb6b13ba6c4109093" + ], + "version": "==20.8" + }, + "pathspec": { + "hashes": [ + "sha256:86379d6b86d75816baba717e64b1a3a3469deb93bb76d613c9ce79edc5cb68fd", + "sha256:aa0cb481c4041bf52ffa7b0d8fa6cd3e88a2ca4879c533c9153882ee2556790d" + ], + "version": "==0.8.1" + }, + "pbr": { + "hashes": [ + "sha256:5fad80b613c402d5b7df7bd84812548b2a61e9977387a80a5fc5c396492b13c9", + "sha256:b236cde0ac9a6aedd5e3c34517b423cd4fd97ef723849da6b0d2231142d89c00" + ], + "version": "==5.5.1" + }, + "pipenv": { + "hashes": [ + "sha256:4ab2f60742184d851ac44b9e1d423afe71dc2ea7a68bde07eb890c8b4ce5a420", + "sha256:8253fe6f9cfb3791a54da8a0571f73c918cb3457dd908684c1800a13a06ec4c1" + ], + "version": "==2020.11.15" + }, + "pipenv-to-requirements": { + "hashes": [ + "sha256:1c18682a4ec70eb07261d2b558df3ee22ea00192663a1b98fd1e45e22946c163", + "sha256:cb70471a17a7d4658caffe989539413313d51df1b3a54838bcd7e7d3ab3fcc18" + ], + "index": "pypi", + "version": "==0.9.0" + }, + "pkginfo": { + "hashes": [ + "sha256:a6a4ac943b496745cec21f14f021bbd869d5e9b4f6ec06918cffea5a2f4b9193", + "sha256:ce14d7296c673dc4c61c759a0b6c14bae34e34eb819c0017bb6ca5b7292c56e9" + ], + "version": "==1.6.1" + }, + "pluggy": { + "hashes": [ + "sha256:265a94bf44ca13662f12fcd1b074c14d4b269a712f051b6f644ef7e705d6735f", + "sha256:467f0219e89bb5061a8429c6fc5cf055fa3983a0e68e84a1d205046306b37d9e" + ], + "version": "==1.0.0.dev0" + }, + "py": { + "hashes": [ + "sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3", + "sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a" + ], + "version": "==1.10.0" + }, + "pycodestyle": { + "hashes": [ + "sha256:2295e7b2f6b5bd100585ebcb1f616591b652db8a741695b3d8f5d28bdc934367", + "sha256:c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e" + ], + "version": "==2.6.0" + }, + "pyflakes": { + "hashes": [ + "sha256:0d94e0e05a19e57a99444b6ddcf9a6eb2e5c68d3ca1e98e90707af8152c90a92", + "sha256:35b2d75ee967ea93b55750aa9edbbf72813e06a66ba54438df2cfac9e3c27fc8" + ], + "version": "==2.2.0" + }, + "pygments": { + "hashes": [ + "sha256:ccf3acacf3782cbed4a989426012f1c535c9a90d3a7fc3f16d231b9372d2b716", + "sha256:f275b6c0909e5dafd2d6269a656aa90fa58ebf4a74f8fcf9053195d226b24a08" + ], + "version": "==2.7.3" + }, + "pyparsing": { + "hashes": [ + "sha256:1c6409312ce2ce2997896af5756753778d5f1603666dba5587804f09ad82ed27", + "sha256:f4896b4cc085a1f8f8ae53a1a90db5a86b3825ff73eb974dffee3d9e701007f4" + ], + "version": "==3.0.0b2" + }, + "pytest": { + "hashes": [ + "sha256:1969f797a1a0dbd8ccf0fecc80262312729afea9c17f1d70ebf85c5e76c6f7c8", + "sha256:66e419b1899bc27346cb2c993e12c5e5e8daba9073c1fbce33b9807abc95c306" + ], + "index": "pypi", + "version": "==6.2.1" + }, + "pytest-cov": { + "hashes": [ + "sha256:45ec2d5182f89a81fc3eb29e3d1ed3113b9e9a873bcddb2a71faaab066110191", + "sha256:47bd0ce14056fdd79f93e1713f88fad7bdcc583dcd7783da86ef2f085a0bb88e" + ], + "index": "pypi", + "version": "==2.10.1" + }, + "readme-renderer": { + "hashes": [ + "sha256:267854ac3b1530633c2394ead828afcd060fc273217c42ac36b6be9c42cd9a9d", + "sha256:6b7e5aa59210a40de72eb79931491eaf46fefca2952b9181268bd7c7c65c260a" + ], + "version": "==28.0" + }, + "regex": { + "hashes": [ + "sha256:02951b7dacb123d8ea6da44fe45ddd084aa6777d4b2454fa0da61d569c6fa538", + "sha256:0d08e71e70c0237883d0bef12cad5145b84c3705e9c6a588b2a9c7080e5af2a4", + "sha256:1862a9d9194fae76a7aaf0150d5f2a8ec1da89e8b55890b1786b8f88a0f619dc", + "sha256:1ab79fcb02b930de09c76d024d279686ec5d532eb814fd0ed1e0051eb8bd2daa", + "sha256:1fa7ee9c2a0e30405e21031d07d7ba8617bc590d391adfc2b7f1e8b99f46f444", + "sha256:262c6825b309e6485ec2493ffc7e62a13cf13fb2a8b6d212f72bd53ad34118f1", + "sha256:2a11a3e90bd9901d70a5b31d7dd85114755a581a5da3fc996abfefa48aee78af", + "sha256:2c99e97d388cd0a8d30f7c514d67887d8021541b875baf09791a3baad48bb4f8", + "sha256:3128e30d83f2e70b0bed9b2a34e92707d0877e460b402faca908c6667092ada9", + "sha256:38c8fd190db64f513fe4e1baa59fed086ae71fa45083b6936b52d34df8f86a88", + "sha256:3bddc701bdd1efa0d5264d2649588cbfda549b2899dc8d50417e47a82e1387ba", + "sha256:4902e6aa086cbb224241adbc2f06235927d5cdacffb2425c73e6570e8d862364", + "sha256:49cae022fa13f09be91b2c880e58e14b6da5d10639ed45ca69b85faf039f7a4e", + "sha256:56e01daca75eae420bce184edd8bb341c8eebb19dd3bce7266332258f9fb9dd7", + "sha256:5862975b45d451b6db51c2e654990c1820523a5b07100fc6903e9c86575202a0", + "sha256:6a8ce43923c518c24a2579fda49f093f1397dad5d18346211e46f134fc624e31", + "sha256:6c54ce4b5d61a7129bad5c5dc279e222afd00e721bf92f9ef09e4fae28755683", + "sha256:6e4b08c6f8daca7d8f07c8d24e4331ae7953333dbd09c648ed6ebd24db5a10ee", + "sha256:717881211f46de3ab130b58ec0908267961fadc06e44f974466d1887f865bd5b", + "sha256:749078d1eb89484db5f34b4012092ad14b327944ee7f1c4f74d6279a6e4d1884", + "sha256:7913bd25f4ab274ba37bc97ad0e21c31004224ccb02765ad984eef43e04acc6c", + "sha256:7a25fcbeae08f96a754b45bdc050e1fb94b95cab046bf56b016c25e9ab127b3e", + "sha256:83d6b356e116ca119db8e7c6fc2983289d87b27b3fac238cfe5dca529d884562", + "sha256:8b882a78c320478b12ff024e81dc7d43c1462aa4a3341c754ee65d857a521f85", + "sha256:8f6a2229e8ad946e36815f2a03386bb8353d4bde368fdf8ca5f0cb97264d3b5c", + "sha256:9801c4c1d9ae6a70aeb2128e5b4b68c45d4f0af0d1535500884d644fa9b768c6", + "sha256:a15f64ae3a027b64496a71ab1f722355e570c3fac5ba2801cafce846bf5af01d", + "sha256:a3d748383762e56337c39ab35c6ed4deb88df5326f97a38946ddd19028ecce6b", + "sha256:a63f1a07932c9686d2d416fb295ec2c01ab246e89b4d58e5fa468089cab44b70", + "sha256:b2b1a5ddae3677d89b686e5c625fc5547c6e492bd755b520de5332773a8af06b", + "sha256:b2f4007bff007c96a173e24dcda236e5e83bde4358a557f9ccf5e014439eae4b", + "sha256:baf378ba6151f6e272824b86a774326f692bc2ef4cc5ce8d5bc76e38c813a55f", + "sha256:bafb01b4688833e099d79e7efd23f99172f501a15c44f21ea2118681473fdba0", + "sha256:bba349276b126947b014e50ab3316c027cac1495992f10e5682dc677b3dfa0c5", + "sha256:c084582d4215593f2f1d28b65d2a2f3aceff8342aa85afd7be23a9cad74a0de5", + "sha256:d1ebb090a426db66dd80df8ca85adc4abfcbad8a7c2e9a5ec7513ede522e0a8f", + "sha256:d2d8ce12b7c12c87e41123997ebaf1a5767a5be3ec545f64675388970f415e2e", + "sha256:e32f5f3d1b1c663af7f9c4c1e72e6ffe9a78c03a31e149259f531e0fed826512", + "sha256:e3faaf10a0d1e8e23a9b51d1900b72e1635c2d5b0e1bea1c18022486a8e2e52d", + "sha256:f7d29a6fc4760300f86ae329e3b6ca28ea9c20823df123a2ea8693e967b29917", + "sha256:f8f295db00ef5f8bae530fc39af0b40486ca6068733fb860b42115052206466f" + ], + "version": "==2020.11.13" + }, + "requests": { + "hashes": [ + "sha256:27973dd4a904a4f13b263a19c866c13b92a39ed1c964655f025f3f8d3d75b804", + "sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e" + ], + "version": "==2.25.1" + }, + "requests-toolbelt": { + "hashes": [ + "sha256:380606e1d10dc85c3bd47bf5a6095f815ec007be7a8b69c878507068df059e6f", + "sha256:968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0" + ], + "version": "==0.9.1" + }, + "rfc3986": { + "hashes": [ + "sha256:112398da31a3344dc25dbf477d8df6cb34f9278a94fee2625d89e4514be8bb9d", + "sha256:af9147e9aceda37c91a05f4deb128d4b4b49d6b199775fd2d2927768abdc8f50" + ], + "version": "==1.4.0" + }, + "six": { + "hashes": [ + "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", + "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" + ], + "version": "==1.15.0" + }, + "toml": { + "hashes": [ + "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", + "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" + ], + "version": "==0.10.2" + }, + "tqdm": { + "hashes": [ + "sha256:556c55b081bd9aa746d34125d024b73f0e2a0e62d5927ff0e400e20ee0a03b9a", + "sha256:b8b46036fd00176d0870307123ef06bb851096964fa7fc578d789f90ce82c3e4" + ], + "version": "==4.55.1" + }, + "twine": { + "hashes": [ + "sha256:2f6942ec2a17417e19d2dd372fc4faa424c87ee9ce49b4e20c427eb00a0f3f41", + "sha256:fcffa8fc37e8083a5be0728371f299598870ee1eccc94e9a25cef7b1dcfa8297" + ], + "index": "pypi", + "version": "==3.3.0" + }, + "typed-ast": { + "hashes": [ + "sha256:07d49388d5bf7e863f7fa2f124b1b1d89d8aa0e2f7812faff0a5658c01c59aa1", + "sha256:14bf1522cdee369e8f5581238edac09150c765ec1cb33615855889cf33dcb92d", + "sha256:240296b27397e4e37874abb1df2a608a92df85cf3e2a04d0d4d61055c8305ba6", + "sha256:36d829b31ab67d6fcb30e185ec996e1f72b892255a745d3a82138c97d21ed1cd", + "sha256:37f48d46d733d57cc70fd5f30572d11ab8ed92da6e6b28e024e4a3edfb456e37", + "sha256:4c790331247081ea7c632a76d5b2a265e6d325ecd3179d06e9cf8d46d90dd151", + "sha256:5dcfc2e264bd8a1db8b11a892bd1647154ce03eeba94b461effe68790d8b8e07", + "sha256:7147e2a76c75f0f64c4319886e7639e490fee87c9d25cb1d4faef1d8cf83a440", + "sha256:7703620125e4fb79b64aa52427ec192822e9f45d37d4b6625ab37ef403e1df70", + "sha256:8368f83e93c7156ccd40e49a783a6a6850ca25b556c0fa0240ed0f659d2fe496", + "sha256:84aa6223d71012c68d577c83f4e7db50d11d6b1399a9c779046d75e24bed74ea", + "sha256:85f95aa97a35bdb2f2f7d10ec5bbdac0aeb9dafdaf88e17492da0504de2e6400", + "sha256:8db0e856712f79c45956da0c9a40ca4246abc3485ae0d7ecc86a20f5e4c09abc", + "sha256:9044ef2df88d7f33692ae3f18d3be63dec69c4fb1b5a4a9ac950f9b4ba571606", + "sha256:963c80b583b0661918718b095e02303d8078950b26cc00b5e5ea9ababe0de1fc", + "sha256:987f15737aba2ab5f3928c617ccf1ce412e2e321c77ab16ca5a293e7bbffd581", + "sha256:9ec45db0c766f196ae629e509f059ff05fc3148f9ffd28f3cfe75d4afb485412", + "sha256:9fc0b3cb5d1720e7141d103cf4819aea239f7d136acf9ee4a69b047b7986175a", + "sha256:a2c927c49f2029291fbabd673d51a2180038f8cd5a5b2f290f78c4516be48be2", + "sha256:a38878a223bdd37c9709d07cd357bb79f4c760b29210e14ad0fb395294583787", + "sha256:b4fcdcfa302538f70929eb7b392f536a237cbe2ed9cba88e3bf5027b39f5f77f", + "sha256:c0c74e5579af4b977c8b932f40a5464764b2f86681327410aa028a22d2f54937", + "sha256:c1c876fd795b36126f773db9cbb393f19808edd2637e00fd6caba0e25f2c7b64", + "sha256:c9aadc4924d4b5799112837b226160428524a9a45f830e0d0f184b19e4090487", + "sha256:cc7b98bf58167b7f2db91a4327da24fb93368838eb84a44c472283778fc2446b", + "sha256:cf54cfa843f297991b7388c281cb3855d911137223c6b6d2dd82a47ae5125a41", + "sha256:d003156bb6a59cda9050e983441b7fa2487f7800d76bdc065566b7d728b4581a", + "sha256:d175297e9533d8d37437abc14e8a83cbc68af93cc9c1c59c2c292ec59a0697a3", + "sha256:d746a437cdbca200622385305aedd9aef68e8a645e385cc483bdc5e488f07166", + "sha256:e683e409e5c45d5c9082dc1daf13f6374300806240719f95dc783d1fc942af10" + ], + "version": "==1.4.2" + }, + "typing-extensions": { + "hashes": [ + "sha256:7cb407020f00f7bfc3cb3e7881628838e69d8f3fcab2f64742a5e76b2f841918", + "sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c", + "sha256:dafc7639cde7f1b6e1acc0f457842a83e722ccca8eef5270af2d74792619a89f" + ], + "markers": "python_version < '3.8'", + "version": "==3.7.4.3" + }, + "urllib3": { + "hashes": [ + "sha256:19188f96923873c92ccb987120ec4acaa12f0461fa9ce5d3d0772bc965a39e08", + "sha256:d8ff90d979214d7b4f8ce956e80f4028fc6860e4431f731ea4a8c08f23f99473" + ], + "markers": "python_version != '3.4'", + "version": "==1.26.2" + }, + "virtualenv": { + "hashes": [ + "sha256:54b05fc737ea9c9ee9f8340f579e5da5b09fb64fd010ab5757eb90268616907c", + "sha256:b7a8ec323ee02fb2312f098b6b4c9de99559b462775bc8fe3627a73706603c1b" + ], + "version": "==20.2.2" + }, + "virtualenv-clone": { + "hashes": [ + "sha256:07e74418b7cc64f4fda987bf5bc71ebd59af27a7bc9e8a8ee9fd54b1f2390a27", + "sha256:665e48dd54c84b98b71a657acb49104c54e7652bce9c1c4f6c6976ed4c827a29" + ], + "version": "==0.5.4" + }, + "webencodings": { + "hashes": [ + "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", + "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923" + ], + "version": "==0.5.1" + }, + "wheel": { + "hashes": [ + "sha256:78b5b185f0e5763c26ca1e324373aadd49182ca90e825f7853f4b2509215dc0e", + "sha256:e11eefd162658ea59a60a0f6c7d493a7190ea4b9a85e335b33489d9f17e0245e" + ], + "index": "pypi", + "version": "==0.36.2" + }, + "zipp": { + "hashes": [ + "sha256:102c24ef8f171fd729d46599845e95c7ab894a4cf45f5de11a44cc7444fb1108", + "sha256:ed5eee1974372595f9e416cc7bbeeb12335201d8081ca8a0743c954d4446e5cb" + ], + "version": "==3.4.0" } + } } diff --git a/setup.py b/setup.py index 9c877e29..3af2032a 100644 --- a/setup.py +++ b/setup.py @@ -9,7 +9,7 @@ from setuptools import setup REQUIREMENTS = [ - "boto3==1.4.4", + "boto3>=1.4.4", "click==6.6", "PyYAML==5.1", ] From 24c6cfbe1c949a71657026f9ad72e433afcb844b Mon Sep 17 00:00:00 2001 From: rishabh-bhargava Date: Mon, 4 Jan 2021 20:42:34 -0800 Subject: [PATCH 113/120] =?UTF-8?q?Bump=20version:=2011.7.1=20=E2=86=92=20?= =?UTF-8?q?11.8.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aws_lambda/__init__.py | 2 +- setup.cfg | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aws_lambda/__init__.py b/aws_lambda/__init__.py index eba3f1d2..35145b50 100644 --- a/aws_lambda/__init__.py +++ b/aws_lambda/__init__.py @@ -1,7 +1,7 @@ # flake8: noqa __author__ = "Nick Ficano" __email__ = "nficano@gmail.com" -__version__ = "11.7.1" +__version__ = "11.8.0" from .aws_lambda import ( deploy, diff --git a/setup.cfg b/setup.cfg index 6871faee..2d16abea 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 11.7.1 +current_version = 11.8.0 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch} diff --git a/setup.py b/setup.py index 3af2032a..5f6ca2f8 100644 --- a/setup.py +++ b/setup.py @@ -59,7 +59,7 @@ def run(self): setup( name="python-lambda", - version="11.7.1", + version="11.8.0", author="Nick Ficano", author_email="nficano@gmail.com", packages=find_packages(), From 5b8be42a1241be4c6c3afec18533f6d40f8a4821 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 4 Jan 2021 21:07:47 -0800 Subject: [PATCH 114/120] Bump python-dateutil from 2.5.3 to 2.8.1 (#292) Bumps [python-dateutil](https://github.com/dateutil/dateutil) from 2.5.3 to 2.8.1. - [Release notes](https://github.com/dateutil/dateutil/releases) - [Changelog](https://github.com/dateutil/dateutil/blob/master/NEWS) - [Commits](https://github.com/dateutil/dateutil/compare/2.5.3...2.8.1) Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> --- Pipfile | 2 +- Pipfile.lock | 1312 ++++++++++++++++++++++++++------------------------ 2 files changed, 690 insertions(+), 624 deletions(-) diff --git a/Pipfile b/Pipfile index 08c07b87..a31c4ff2 100644 --- a/Pipfile +++ b/Pipfile @@ -21,7 +21,7 @@ click = "==6.6" docutils = "*" jmespath = "==0.10.0" pyaml = "==15.8.2" -python-dateutil = "==2.5.3" +python-dateutil = "==2.8.1" PyYAML = "==5.1" [pipenv] diff --git a/Pipfile.lock b/Pipfile.lock index 68f2945f..7e97fd0e 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,626 +1,692 @@ { - "_meta": { - "hash": { - "sha256": "268a9fbe0d2211ccc1494c41b629b657a0d599f81819c32cecdc9595cb909274" - }, - "pipfile-spec": 6, - "requires": {}, - "sources": [ - { - "name": "pypi", - "url": "https://pypi.org/simple", - "verify_ssl": true - } - ] - }, - "default": { - "boto3": { - "hashes": [ - "sha256:e6915ac164a05367787db2416eeaa8662ae5e0b9c53902dbf23b407686ef5028" - ], - "index": "pypi", - "version": "==1.16.48" - }, - "botocore": { - "hashes": [ - "sha256:549aa9619b51c5b103c7bb906497f60824576366aa4e3642b4e57f9f53a06f7d", - "sha256:b954c596f8bdf31d5fdf1eff8a2296bde8094e1e22961a79b83bb62ddeba8a49" - ], - "version": "==1.19.48" - }, - "click": { - "hashes": [ - "sha256:cc6a19da8ebff6e7074f731447ef7e112bd23adf3de5c597cf9989f2fd8defe9", - "sha256:fcf697e1fd4b567d817c69dab10a4035937fe6af175c05fd6806b69f74cbc6c4" - ], - "index": "pypi", - "version": "==6.6" - }, - "docutils": { - "hashes": [ - "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af", - "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc" - ], - "index": "pypi", - "version": "==0.16" - }, - "jmespath": { - "hashes": [ - "sha256:b85d0567b8666149a93172712e68920734333c0ce7e89b78b3e987f71e5ed4f9", - "sha256:cdf6525904cc597730141d61b36f2e4b8ecc257c420fa2f4549bac2c2d0cb72f" - ], - "index": "pypi", - "version": "==0.10.0" - }, - "pyaml": { - "hashes": [ - "sha256:9c54fb5f17b58572c4cef50affea60bb73f445ab153580dac07a12383712b5b8" - ], - "index": "pypi", - "version": "==15.8.2" - }, - "python-dateutil": { - "hashes": [ - "sha256:1408fdb07c6a1fa9997567ce3fcee6a337b39a503d80699e0f213de4aa4b32ed", - "sha256:598499a75be2e5e18a66f12c00dd47a069de24794effeda4228bfc760f44f527", - "sha256:9d94861f04ce14f9a3d835206067c889b8f1244f1415035dadcf9c10066adf04" - ], - "index": "pypi", - "version": "==2.5.3" - }, - "pyyaml": { - "hashes": [ - "sha256:1adecc22f88d38052fb787d959f003811ca858b799590a5eaa70e63dca50308c", - "sha256:436bc774ecf7c103814098159fbb84c2715d25980175292c648f2da143909f95", - "sha256:460a5a4248763f6f37ea225d19d5c205677d8d525f6a83357ca622ed541830c2", - "sha256:5a22a9c84653debfbf198d02fe592c176ea548cccce47553f35f466e15cf2fd4", - "sha256:7a5d3f26b89d688db27822343dfa25c599627bc92093e788956372285c6298ad", - "sha256:9372b04a02080752d9e6f990179a4ab840227c6e2ce15b95e1278456664cf2ba", - "sha256:a5dcbebee834eaddf3fa7366316b880ff4062e4bcc9787b78c7fbb4a26ff2dd1", - "sha256:aee5bab92a176e7cd034e57f46e9df9a9862a71f8f37cad167c6fc74c65f5b4e", - "sha256:c51f642898c0bacd335fc119da60baae0824f2cde95b0330b56c0553439f0673", - "sha256:c68ea4d3ba1705da1e0d85da6684ac657912679a649e8868bd850d2c299cce13", - "sha256:e23d0cc5299223dcc37885dae624f382297717e459ea24053709675a976a3e19" - ], - "index": "pypi", - "version": "==5.1" - }, - "s3transfer": { - "hashes": [ - "sha256:2482b4259524933a022d59da830f51bd746db62f047d6eb213f2f8855dcb8a13", - "sha256:921a37e2aefc64145e7b73d50c71bb4f26f46e4c9f414dc648c6245ff92cf7db" - ], - "version": "==0.3.3" - }, - "six": { - "hashes": [ - "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", - "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" - ], - "version": "==1.15.0" - }, - "urllib3": { - "hashes": [ - "sha256:19188f96923873c92ccb987120ec4acaa12f0461fa9ce5d3d0772bc965a39e08", - "sha256:d8ff90d979214d7b4f8ce956e80f4028fc6860e4431f731ea4a8c08f23f99473" - ], - "markers": "python_version != '3.4'", - "version": "==1.26.2" - } - }, - "develop": { - "appdirs": { - "hashes": [ - "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41", - "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128" - ], - "version": "==1.4.4" - }, - "attrs": { - "hashes": [ - "sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6", - "sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700" - ], - "version": "==20.3.0" - }, - "black": { - "hashes": [ - "sha256:1c02557aa099101b9d21496f8a914e9ed2222ef70336404eeeac8edba836fbea" - ], - "index": "pypi", - "version": "==20.8b1" - }, - "bleach": { - "hashes": [ - "sha256:52b5919b81842b1854196eaae5ca29679a2f2e378905c346d3ca8227c2c66080", - "sha256:9f8ccbeb6183c6e6cddea37592dfb0167485c1e3b13b3363bc325aa8bda3adbd" - ], - "version": "==3.2.1" - }, - "bump2version": { - "hashes": [ - "sha256:37f927ea17cde7ae2d7baf832f8e80ce3777624554a653006c9144f8017fe410", - "sha256:762cb2bfad61f4ec8e2bdf452c7c267416f8c70dd9ecb1653fd0bbb01fa936e6" - ], - "version": "==1.0.1" - }, - "bumpversion": { - "hashes": [ - "sha256:4ba55e4080d373f80177b4dabef146c07ce73c7d1377aabf9d3c3ae1f94584a6", - "sha256:4eb3267a38194d09f048a2179980bb4803701969bff2c85fa8f6d1ce050be15e" - ], - "index": "pypi", - "version": "==0.6.0" - }, - "certifi": { - "hashes": [ - "sha256:1a4995114262bffbc2413b159f2a1a480c969de6e6eb13ee966d470af86af59c", - "sha256:719a74fb9e33b9bd44cc7f3a8d94bc35e4049deebe19ba7d8e108280cfd59830" - ], - "version": "==2020.12.5" - }, - "chardet": { - "hashes": [ - "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa", - "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5" - ], - "version": "==4.0.0" - }, - "click": { - "hashes": [ - "sha256:cc6a19da8ebff6e7074f731447ef7e112bd23adf3de5c597cf9989f2fd8defe9", - "sha256:fcf697e1fd4b567d817c69dab10a4035937fe6af175c05fd6806b69f74cbc6c4" - ], - "index": "pypi", - "version": "==6.6" - }, - "codecov": { - "hashes": [ - "sha256:6cde272454009d27355f9434f4e49f238c0273b216beda8472a65dc4957f473b", - "sha256:ba8553a82942ce37d4da92b70ffd6d54cf635fc1793ab0a7dc3fecd6ebfb3df8" - ], - "index": "pypi", - "version": "==2.1.11" - }, - "colorama": { - "hashes": [ - "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b", - "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2" - ], - "version": "==0.4.4" - }, - "coverage": { - "hashes": [ - "sha256:08b3ba72bd981531fd557f67beee376d6700fba183b167857038997ba30dd297", - "sha256:2757fa64e11ec12220968f65d086b7a29b6583d16e9a544c889b22ba98555ef1", - "sha256:3102bb2c206700a7d28181dbe04d66b30780cde1d1c02c5f3c165cf3d2489497", - "sha256:3498b27d8236057def41de3585f317abae235dd3a11d33e01736ffedb2ef8606", - "sha256:378ac77af41350a8c6b8801a66021b52da8a05fd77e578b7380e876c0ce4f528", - "sha256:38f16b1317b8dd82df67ed5daa5f5e7c959e46579840d77a67a4ceb9cef0a50b", - "sha256:3911c2ef96e5ddc748a3c8b4702c61986628bb719b8378bf1e4a6184bbd48fe4", - "sha256:3a3c3f8863255f3c31db3889f8055989527173ef6192a283eb6f4db3c579d830", - "sha256:3b14b1da110ea50c8bcbadc3b82c3933974dbeea1832e814aab93ca1163cd4c1", - "sha256:535dc1e6e68fad5355f9984d5637c33badbdc987b0c0d303ee95a6c979c9516f", - "sha256:6f61319e33222591f885c598e3e24f6a4be3533c1d70c19e0dc59e83a71ce27d", - "sha256:723d22d324e7997a651478e9c5a3120a0ecbc9a7e94071f7e1954562a8806cf3", - "sha256:76b2775dda7e78680d688daabcb485dc87cf5e3184a0b3e012e1d40e38527cc8", - "sha256:782a5c7df9f91979a7a21792e09b34a658058896628217ae6362088b123c8500", - "sha256:7e4d159021c2029b958b2363abec4a11db0ce8cd43abb0d9ce44284cb97217e7", - "sha256:8dacc4073c359f40fcf73aede8428c35f84639baad7e1b46fce5ab7a8a7be4bb", - "sha256:8f33d1156241c43755137288dea619105477961cfa7e47f48dbf96bc2c30720b", - "sha256:8ffd4b204d7de77b5dd558cdff986a8274796a1e57813ed005b33fd97e29f059", - "sha256:93a280c9eb736a0dcca19296f3c30c720cb41a71b1f9e617f341f0a8e791a69b", - "sha256:9a4f66259bdd6964d8cf26142733c81fb562252db74ea367d9beb4f815478e72", - "sha256:9a9d4ff06804920388aab69c5ea8a77525cf165356db70131616acd269e19b36", - "sha256:a2070c5affdb3a5e751f24208c5c4f3d5f008fa04d28731416e023c93b275277", - "sha256:a4857f7e2bc6921dbd487c5c88b84f5633de3e7d416c4dc0bb70256775551a6c", - "sha256:a607ae05b6c96057ba86c811d9c43423f35e03874ffb03fbdcd45e0637e8b631", - "sha256:a66ca3bdf21c653e47f726ca57f46ba7fc1f260ad99ba783acc3e58e3ebdb9ff", - "sha256:ab110c48bc3d97b4d19af41865e14531f300b482da21783fdaacd159251890e8", - "sha256:b239711e774c8eb910e9b1ac719f02f5ae4bf35fa0420f438cdc3a7e4e7dd6ec", - "sha256:be0416074d7f253865bb67630cf7210cbc14eb05f4099cc0f82430135aaa7a3b", - "sha256:c46643970dff9f5c976c6512fd35768c4a3819f01f61169d8cdac3f9290903b7", - "sha256:c5ec71fd4a43b6d84ddb88c1df94572479d9a26ef3f150cef3dacefecf888105", - "sha256:c6e5174f8ca585755988bc278c8bb5d02d9dc2e971591ef4a1baabdf2d99589b", - "sha256:c89b558f8a9a5a6f2cfc923c304d49f0ce629c3bd85cb442ca258ec20366394c", - "sha256:cc44e3545d908ecf3e5773266c487ad1877be718d9dc65fc7eb6e7d14960985b", - "sha256:cc6f8246e74dd210d7e2b56c76ceaba1cc52b025cd75dbe96eb48791e0250e98", - "sha256:cd556c79ad665faeae28020a0ab3bda6cd47d94bec48e36970719b0b86e4dcf4", - "sha256:ce6f3a147b4b1a8b09aae48517ae91139b1b010c5f36423fa2b866a8b23df879", - "sha256:ceb499d2b3d1d7b7ba23abe8bf26df5f06ba8c71127f188333dddcf356b4b63f", - "sha256:cef06fb382557f66d81d804230c11ab292d94b840b3cb7bf4450778377b592f4", - "sha256:e448f56cfeae7b1b3b5bcd99bb377cde7c4eb1970a525c770720a352bc4c8044", - "sha256:e52d3d95df81c8f6b2a1685aabffadf2d2d9ad97203a40f8d61e51b70f191e4e", - "sha256:ee2f1d1c223c3d2c24e3afbb2dd38be3f03b1a8d6a83ee3d9eb8c36a52bee899", - "sha256:f2c6888eada180814b8583c3e793f3f343a692fc802546eed45f40a001b1169f", - "sha256:f51dbba78d68a44e99d484ca8c8f604f17e957c1ca09c3ebc2c7e3bbd9ba0448", - "sha256:f54de00baf200b4539a5a092a759f000b5f45fd226d6d25a76b0dff71177a714", - "sha256:fa10fee7e32213f5c7b0d6428ea92e3a3fdd6d725590238a3f92c0de1c78b9d2", - "sha256:fabeeb121735d47d8eab8671b6b031ce08514c86b7ad8f7d5490a7b6dcd6267d", - "sha256:fac3c432851038b3e6afe086f777732bcf7f6ebbfd90951fa04ee53db6d0bcdd", - "sha256:fda29412a66099af6d6de0baa6bd7c52674de177ec2ad2630ca264142d69c6c7", - "sha256:ff1330e8bc996570221b450e2d539134baa9465f5cb98aff0e0f73f34172e0ae" - ], - "version": "==5.3.1" - }, - "coveralls": { - "hashes": [ - "sha256:2301a19500b06649d2ec4f2858f9c69638d7699a4c63027c5d53daba666147cc", - "sha256:b990ba1f7bc4288e63340be0433698c1efe8217f78c689d254c2540af3d38617" - ], - "index": "pypi", - "version": "==2.2.0" - }, - "distlib": { - "hashes": [ - "sha256:8c09de2c67b3e7deef7184574fc060ab8a793e7adbb183d942c389c8b13c52fb", - "sha256:edf6116872c863e1aa9d5bb7cb5e05a022c519a4594dc703843343a9ddd9bff1" - ], - "version": "==0.3.1" - }, - "docopt": { - "hashes": [ - "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491" - ], - "version": "==0.6.2" - }, - "docutils": { - "hashes": [ - "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af", - "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc" - ], - "index": "pypi", - "version": "==0.16" - }, - "filelock": { - "hashes": [ - "sha256:18d82244ee114f543149c66a6e0c14e9c4f8a1044b5cdaadd0f82159d6a6ff59", - "sha256:929b7d63ec5b7d6b71b0fa5ac14e030b3f70b75747cef1b10da9b879fef15836" - ], - "version": "==3.0.12" - }, - "flake8": { - "hashes": [ - "sha256:749dbbd6bfd0cf1318af27bf97a14e28e5ff548ef8e5b1566ccfb25a11e7c839", - "sha256:aadae8761ec651813c24be05c6f7b4680857ef6afaae4651a4eccaef97ce6c3b" - ], - "index": "pypi", - "version": "==3.8.4" - }, - "idna": { - "hashes": [ - "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6", - "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0" - ], - "version": "==2.10" - }, - "importlib-metadata": { - "hashes": [ - "sha256:5c5a2720817414a6c41f0a49993908068243ae02c1635a228126519b509c8aed", - "sha256:bf792d480abbd5eda85794e4afb09dd538393f7d6e6ffef6e9f03d2014cf9450" - ], - "markers": "python_version < '3.8'", - "version": "==3.3.0" - }, - "iniconfig": { - "hashes": [ - "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3", - "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32" - ], - "version": "==1.1.1" - }, - "keyring": { - "hashes": [ - "sha256:1746d3ac913d449a090caf11e9e4af00e26c3f7f7e81027872192b2398b98675", - "sha256:4be9cbaaaf83e61d6399f733d113ede7d1c73bc75cb6aeb64eee0f6ac39b30ea" - ], - "version": "==21.8.0" - }, - "mccabe": { - "hashes": [ - "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", - "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f" - ], - "version": "==0.6.1" - }, - "mypy-extensions": { - "hashes": [ - "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d", - "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8" - ], - "version": "==0.4.3" - }, - "packaging": { - "hashes": [ - "sha256:24e0da08660a87484d1602c30bb4902d74816b6985b93de36926f5bc95741858", - "sha256:78598185a7008a470d64526a8059de9aaa449238f280fc9eb6b13ba6c4109093" - ], - "version": "==20.8" - }, - "pathspec": { - "hashes": [ - "sha256:86379d6b86d75816baba717e64b1a3a3469deb93bb76d613c9ce79edc5cb68fd", - "sha256:aa0cb481c4041bf52ffa7b0d8fa6cd3e88a2ca4879c533c9153882ee2556790d" - ], - "version": "==0.8.1" - }, - "pbr": { - "hashes": [ - "sha256:5fad80b613c402d5b7df7bd84812548b2a61e9977387a80a5fc5c396492b13c9", - "sha256:b236cde0ac9a6aedd5e3c34517b423cd4fd97ef723849da6b0d2231142d89c00" - ], - "version": "==5.5.1" - }, - "pipenv": { - "hashes": [ - "sha256:4ab2f60742184d851ac44b9e1d423afe71dc2ea7a68bde07eb890c8b4ce5a420", - "sha256:8253fe6f9cfb3791a54da8a0571f73c918cb3457dd908684c1800a13a06ec4c1" - ], - "version": "==2020.11.15" - }, - "pipenv-to-requirements": { - "hashes": [ - "sha256:1c18682a4ec70eb07261d2b558df3ee22ea00192663a1b98fd1e45e22946c163", - "sha256:cb70471a17a7d4658caffe989539413313d51df1b3a54838bcd7e7d3ab3fcc18" - ], - "index": "pypi", - "version": "==0.9.0" - }, - "pkginfo": { - "hashes": [ - "sha256:a6a4ac943b496745cec21f14f021bbd869d5e9b4f6ec06918cffea5a2f4b9193", - "sha256:ce14d7296c673dc4c61c759a0b6c14bae34e34eb819c0017bb6ca5b7292c56e9" - ], - "version": "==1.6.1" - }, - "pluggy": { - "hashes": [ - "sha256:265a94bf44ca13662f12fcd1b074c14d4b269a712f051b6f644ef7e705d6735f", - "sha256:467f0219e89bb5061a8429c6fc5cf055fa3983a0e68e84a1d205046306b37d9e" - ], - "version": "==1.0.0.dev0" - }, - "py": { - "hashes": [ - "sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3", - "sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a" - ], - "version": "==1.10.0" - }, - "pycodestyle": { - "hashes": [ - "sha256:2295e7b2f6b5bd100585ebcb1f616591b652db8a741695b3d8f5d28bdc934367", - "sha256:c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e" - ], - "version": "==2.6.0" - }, - "pyflakes": { - "hashes": [ - "sha256:0d94e0e05a19e57a99444b6ddcf9a6eb2e5c68d3ca1e98e90707af8152c90a92", - "sha256:35b2d75ee967ea93b55750aa9edbbf72813e06a66ba54438df2cfac9e3c27fc8" - ], - "version": "==2.2.0" - }, - "pygments": { - "hashes": [ - "sha256:ccf3acacf3782cbed4a989426012f1c535c9a90d3a7fc3f16d231b9372d2b716", - "sha256:f275b6c0909e5dafd2d6269a656aa90fa58ebf4a74f8fcf9053195d226b24a08" - ], - "version": "==2.7.3" - }, - "pyparsing": { - "hashes": [ - "sha256:1c6409312ce2ce2997896af5756753778d5f1603666dba5587804f09ad82ed27", - "sha256:f4896b4cc085a1f8f8ae53a1a90db5a86b3825ff73eb974dffee3d9e701007f4" - ], - "version": "==3.0.0b2" - }, - "pytest": { - "hashes": [ - "sha256:1969f797a1a0dbd8ccf0fecc80262312729afea9c17f1d70ebf85c5e76c6f7c8", - "sha256:66e419b1899bc27346cb2c993e12c5e5e8daba9073c1fbce33b9807abc95c306" - ], - "index": "pypi", - "version": "==6.2.1" - }, - "pytest-cov": { - "hashes": [ - "sha256:45ec2d5182f89a81fc3eb29e3d1ed3113b9e9a873bcddb2a71faaab066110191", - "sha256:47bd0ce14056fdd79f93e1713f88fad7bdcc583dcd7783da86ef2f085a0bb88e" - ], - "index": "pypi", - "version": "==2.10.1" - }, - "readme-renderer": { - "hashes": [ - "sha256:267854ac3b1530633c2394ead828afcd060fc273217c42ac36b6be9c42cd9a9d", - "sha256:6b7e5aa59210a40de72eb79931491eaf46fefca2952b9181268bd7c7c65c260a" - ], - "version": "==28.0" - }, - "regex": { - "hashes": [ - "sha256:02951b7dacb123d8ea6da44fe45ddd084aa6777d4b2454fa0da61d569c6fa538", - "sha256:0d08e71e70c0237883d0bef12cad5145b84c3705e9c6a588b2a9c7080e5af2a4", - "sha256:1862a9d9194fae76a7aaf0150d5f2a8ec1da89e8b55890b1786b8f88a0f619dc", - "sha256:1ab79fcb02b930de09c76d024d279686ec5d532eb814fd0ed1e0051eb8bd2daa", - "sha256:1fa7ee9c2a0e30405e21031d07d7ba8617bc590d391adfc2b7f1e8b99f46f444", - "sha256:262c6825b309e6485ec2493ffc7e62a13cf13fb2a8b6d212f72bd53ad34118f1", - "sha256:2a11a3e90bd9901d70a5b31d7dd85114755a581a5da3fc996abfefa48aee78af", - "sha256:2c99e97d388cd0a8d30f7c514d67887d8021541b875baf09791a3baad48bb4f8", - "sha256:3128e30d83f2e70b0bed9b2a34e92707d0877e460b402faca908c6667092ada9", - "sha256:38c8fd190db64f513fe4e1baa59fed086ae71fa45083b6936b52d34df8f86a88", - "sha256:3bddc701bdd1efa0d5264d2649588cbfda549b2899dc8d50417e47a82e1387ba", - "sha256:4902e6aa086cbb224241adbc2f06235927d5cdacffb2425c73e6570e8d862364", - "sha256:49cae022fa13f09be91b2c880e58e14b6da5d10639ed45ca69b85faf039f7a4e", - "sha256:56e01daca75eae420bce184edd8bb341c8eebb19dd3bce7266332258f9fb9dd7", - "sha256:5862975b45d451b6db51c2e654990c1820523a5b07100fc6903e9c86575202a0", - "sha256:6a8ce43923c518c24a2579fda49f093f1397dad5d18346211e46f134fc624e31", - "sha256:6c54ce4b5d61a7129bad5c5dc279e222afd00e721bf92f9ef09e4fae28755683", - "sha256:6e4b08c6f8daca7d8f07c8d24e4331ae7953333dbd09c648ed6ebd24db5a10ee", - "sha256:717881211f46de3ab130b58ec0908267961fadc06e44f974466d1887f865bd5b", - "sha256:749078d1eb89484db5f34b4012092ad14b327944ee7f1c4f74d6279a6e4d1884", - "sha256:7913bd25f4ab274ba37bc97ad0e21c31004224ccb02765ad984eef43e04acc6c", - "sha256:7a25fcbeae08f96a754b45bdc050e1fb94b95cab046bf56b016c25e9ab127b3e", - "sha256:83d6b356e116ca119db8e7c6fc2983289d87b27b3fac238cfe5dca529d884562", - "sha256:8b882a78c320478b12ff024e81dc7d43c1462aa4a3341c754ee65d857a521f85", - "sha256:8f6a2229e8ad946e36815f2a03386bb8353d4bde368fdf8ca5f0cb97264d3b5c", - "sha256:9801c4c1d9ae6a70aeb2128e5b4b68c45d4f0af0d1535500884d644fa9b768c6", - "sha256:a15f64ae3a027b64496a71ab1f722355e570c3fac5ba2801cafce846bf5af01d", - "sha256:a3d748383762e56337c39ab35c6ed4deb88df5326f97a38946ddd19028ecce6b", - "sha256:a63f1a07932c9686d2d416fb295ec2c01ab246e89b4d58e5fa468089cab44b70", - "sha256:b2b1a5ddae3677d89b686e5c625fc5547c6e492bd755b520de5332773a8af06b", - "sha256:b2f4007bff007c96a173e24dcda236e5e83bde4358a557f9ccf5e014439eae4b", - "sha256:baf378ba6151f6e272824b86a774326f692bc2ef4cc5ce8d5bc76e38c813a55f", - "sha256:bafb01b4688833e099d79e7efd23f99172f501a15c44f21ea2118681473fdba0", - "sha256:bba349276b126947b014e50ab3316c027cac1495992f10e5682dc677b3dfa0c5", - "sha256:c084582d4215593f2f1d28b65d2a2f3aceff8342aa85afd7be23a9cad74a0de5", - "sha256:d1ebb090a426db66dd80df8ca85adc4abfcbad8a7c2e9a5ec7513ede522e0a8f", - "sha256:d2d8ce12b7c12c87e41123997ebaf1a5767a5be3ec545f64675388970f415e2e", - "sha256:e32f5f3d1b1c663af7f9c4c1e72e6ffe9a78c03a31e149259f531e0fed826512", - "sha256:e3faaf10a0d1e8e23a9b51d1900b72e1635c2d5b0e1bea1c18022486a8e2e52d", - "sha256:f7d29a6fc4760300f86ae329e3b6ca28ea9c20823df123a2ea8693e967b29917", - "sha256:f8f295db00ef5f8bae530fc39af0b40486ca6068733fb860b42115052206466f" - ], - "version": "==2020.11.13" - }, - "requests": { - "hashes": [ - "sha256:27973dd4a904a4f13b263a19c866c13b92a39ed1c964655f025f3f8d3d75b804", - "sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e" - ], - "version": "==2.25.1" - }, - "requests-toolbelt": { - "hashes": [ - "sha256:380606e1d10dc85c3bd47bf5a6095f815ec007be7a8b69c878507068df059e6f", - "sha256:968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0" - ], - "version": "==0.9.1" - }, - "rfc3986": { - "hashes": [ - "sha256:112398da31a3344dc25dbf477d8df6cb34f9278a94fee2625d89e4514be8bb9d", - "sha256:af9147e9aceda37c91a05f4deb128d4b4b49d6b199775fd2d2927768abdc8f50" - ], - "version": "==1.4.0" - }, - "six": { - "hashes": [ - "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", - "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" - ], - "version": "==1.15.0" - }, - "toml": { - "hashes": [ - "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", - "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" - ], - "version": "==0.10.2" - }, - "tqdm": { - "hashes": [ - "sha256:556c55b081bd9aa746d34125d024b73f0e2a0e62d5927ff0e400e20ee0a03b9a", - "sha256:b8b46036fd00176d0870307123ef06bb851096964fa7fc578d789f90ce82c3e4" - ], - "version": "==4.55.1" - }, - "twine": { - "hashes": [ - "sha256:2f6942ec2a17417e19d2dd372fc4faa424c87ee9ce49b4e20c427eb00a0f3f41", - "sha256:fcffa8fc37e8083a5be0728371f299598870ee1eccc94e9a25cef7b1dcfa8297" - ], - "index": "pypi", - "version": "==3.3.0" - }, - "typed-ast": { - "hashes": [ - "sha256:07d49388d5bf7e863f7fa2f124b1b1d89d8aa0e2f7812faff0a5658c01c59aa1", - "sha256:14bf1522cdee369e8f5581238edac09150c765ec1cb33615855889cf33dcb92d", - "sha256:240296b27397e4e37874abb1df2a608a92df85cf3e2a04d0d4d61055c8305ba6", - "sha256:36d829b31ab67d6fcb30e185ec996e1f72b892255a745d3a82138c97d21ed1cd", - "sha256:37f48d46d733d57cc70fd5f30572d11ab8ed92da6e6b28e024e4a3edfb456e37", - "sha256:4c790331247081ea7c632a76d5b2a265e6d325ecd3179d06e9cf8d46d90dd151", - "sha256:5dcfc2e264bd8a1db8b11a892bd1647154ce03eeba94b461effe68790d8b8e07", - "sha256:7147e2a76c75f0f64c4319886e7639e490fee87c9d25cb1d4faef1d8cf83a440", - "sha256:7703620125e4fb79b64aa52427ec192822e9f45d37d4b6625ab37ef403e1df70", - "sha256:8368f83e93c7156ccd40e49a783a6a6850ca25b556c0fa0240ed0f659d2fe496", - "sha256:84aa6223d71012c68d577c83f4e7db50d11d6b1399a9c779046d75e24bed74ea", - "sha256:85f95aa97a35bdb2f2f7d10ec5bbdac0aeb9dafdaf88e17492da0504de2e6400", - "sha256:8db0e856712f79c45956da0c9a40ca4246abc3485ae0d7ecc86a20f5e4c09abc", - "sha256:9044ef2df88d7f33692ae3f18d3be63dec69c4fb1b5a4a9ac950f9b4ba571606", - "sha256:963c80b583b0661918718b095e02303d8078950b26cc00b5e5ea9ababe0de1fc", - "sha256:987f15737aba2ab5f3928c617ccf1ce412e2e321c77ab16ca5a293e7bbffd581", - "sha256:9ec45db0c766f196ae629e509f059ff05fc3148f9ffd28f3cfe75d4afb485412", - "sha256:9fc0b3cb5d1720e7141d103cf4819aea239f7d136acf9ee4a69b047b7986175a", - "sha256:a2c927c49f2029291fbabd673d51a2180038f8cd5a5b2f290f78c4516be48be2", - "sha256:a38878a223bdd37c9709d07cd357bb79f4c760b29210e14ad0fb395294583787", - "sha256:b4fcdcfa302538f70929eb7b392f536a237cbe2ed9cba88e3bf5027b39f5f77f", - "sha256:c0c74e5579af4b977c8b932f40a5464764b2f86681327410aa028a22d2f54937", - "sha256:c1c876fd795b36126f773db9cbb393f19808edd2637e00fd6caba0e25f2c7b64", - "sha256:c9aadc4924d4b5799112837b226160428524a9a45f830e0d0f184b19e4090487", - "sha256:cc7b98bf58167b7f2db91a4327da24fb93368838eb84a44c472283778fc2446b", - "sha256:cf54cfa843f297991b7388c281cb3855d911137223c6b6d2dd82a47ae5125a41", - "sha256:d003156bb6a59cda9050e983441b7fa2487f7800d76bdc065566b7d728b4581a", - "sha256:d175297e9533d8d37437abc14e8a83cbc68af93cc9c1c59c2c292ec59a0697a3", - "sha256:d746a437cdbca200622385305aedd9aef68e8a645e385cc483bdc5e488f07166", - "sha256:e683e409e5c45d5c9082dc1daf13f6374300806240719f95dc783d1fc942af10" - ], - "version": "==1.4.2" - }, - "typing-extensions": { - "hashes": [ - "sha256:7cb407020f00f7bfc3cb3e7881628838e69d8f3fcab2f64742a5e76b2f841918", - "sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c", - "sha256:dafc7639cde7f1b6e1acc0f457842a83e722ccca8eef5270af2d74792619a89f" - ], - "markers": "python_version < '3.8'", - "version": "==3.7.4.3" - }, - "urllib3": { - "hashes": [ - "sha256:19188f96923873c92ccb987120ec4acaa12f0461fa9ce5d3d0772bc965a39e08", - "sha256:d8ff90d979214d7b4f8ce956e80f4028fc6860e4431f731ea4a8c08f23f99473" - ], - "markers": "python_version != '3.4'", - "version": "==1.26.2" - }, - "virtualenv": { - "hashes": [ - "sha256:54b05fc737ea9c9ee9f8340f579e5da5b09fb64fd010ab5757eb90268616907c", - "sha256:b7a8ec323ee02fb2312f098b6b4c9de99559b462775bc8fe3627a73706603c1b" - ], - "version": "==20.2.2" - }, - "virtualenv-clone": { - "hashes": [ - "sha256:07e74418b7cc64f4fda987bf5bc71ebd59af27a7bc9e8a8ee9fd54b1f2390a27", - "sha256:665e48dd54c84b98b71a657acb49104c54e7652bce9c1c4f6c6976ed4c827a29" - ], - "version": "==0.5.4" - }, - "webencodings": { - "hashes": [ - "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", - "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923" - ], - "version": "==0.5.1" - }, - "wheel": { - "hashes": [ - "sha256:78b5b185f0e5763c26ca1e324373aadd49182ca90e825f7853f4b2509215dc0e", - "sha256:e11eefd162658ea59a60a0f6c7d493a7190ea4b9a85e335b33489d9f17e0245e" - ], - "index": "pypi", - "version": "==0.36.2" - }, - "zipp": { - "hashes": [ - "sha256:102c24ef8f171fd729d46599845e95c7ab894a4cf45f5de11a44cc7444fb1108", - "sha256:ed5eee1974372595f9e416cc7bbeeb12335201d8081ca8a0743c954d4446e5cb" - ], - "version": "==3.4.0" + "_meta": { + "hash": { + "sha256": "a694ac5fe98cc14d5b3285de3236facbd1fd6c7c166dc9e0fb6b89099c4740dc" + }, + "pipfile-spec": 6, + "requires": {}, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "boto3": { + "hashes": [ + "sha256:e6915ac164a05367787db2416eeaa8662ae5e0b9c53902dbf23b407686ef5028" + ], + "index": "pypi", + "version": "==1.16.48" + }, + "botocore": { + "hashes": [ + "sha256:549aa9619b51c5b103c7bb906497f60824576366aa4e3642b4e57f9f53a06f7d", + "sha256:b954c596f8bdf31d5fdf1eff8a2296bde8094e1e22961a79b83bb62ddeba8a49" + ], + "version": "==1.19.48" + }, + "click": { + "hashes": [ + "sha256:cc6a19da8ebff6e7074f731447ef7e112bd23adf3de5c597cf9989f2fd8defe9", + "sha256:fcf697e1fd4b567d817c69dab10a4035937fe6af175c05fd6806b69f74cbc6c4" + ], + "index": "pypi", + "version": "==6.6" + }, + "docutils": { + "hashes": [ + "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af", + "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc" + ], + "index": "pypi", + "version": "==0.16" + }, + "jmespath": { + "hashes": [ + "sha256:b85d0567b8666149a93172712e68920734333c0ce7e89b78b3e987f71e5ed4f9", + "sha256:cdf6525904cc597730141d61b36f2e4b8ecc257c420fa2f4549bac2c2d0cb72f" + ], + "index": "pypi", + "version": "==0.10.0" + }, + "pyaml": { + "hashes": [ + "sha256:9c54fb5f17b58572c4cef50affea60bb73f445ab153580dac07a12383712b5b8" + ], + "index": "pypi", + "version": "==15.8.2" + }, + "python-dateutil": { + "hashes": [ + "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c", + "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a" + ], + "index": "pypi", + "version": "==2.8.1" + }, + "pyyaml": { + "hashes": [ + "sha256:1adecc22f88d38052fb787d959f003811ca858b799590a5eaa70e63dca50308c", + "sha256:436bc774ecf7c103814098159fbb84c2715d25980175292c648f2da143909f95", + "sha256:460a5a4248763f6f37ea225d19d5c205677d8d525f6a83357ca622ed541830c2", + "sha256:5a22a9c84653debfbf198d02fe592c176ea548cccce47553f35f466e15cf2fd4", + "sha256:7a5d3f26b89d688db27822343dfa25c599627bc92093e788956372285c6298ad", + "sha256:9372b04a02080752d9e6f990179a4ab840227c6e2ce15b95e1278456664cf2ba", + "sha256:a5dcbebee834eaddf3fa7366316b880ff4062e4bcc9787b78c7fbb4a26ff2dd1", + "sha256:aee5bab92a176e7cd034e57f46e9df9a9862a71f8f37cad167c6fc74c65f5b4e", + "sha256:c51f642898c0bacd335fc119da60baae0824f2cde95b0330b56c0553439f0673", + "sha256:c68ea4d3ba1705da1e0d85da6684ac657912679a649e8868bd850d2c299cce13", + "sha256:e23d0cc5299223dcc37885dae624f382297717e459ea24053709675a976a3e19" + ], + "index": "pypi", + "version": "==5.1" + }, + "s3transfer": { + "hashes": [ + "sha256:2482b4259524933a022d59da830f51bd746db62f047d6eb213f2f8855dcb8a13", + "sha256:921a37e2aefc64145e7b73d50c71bb4f26f46e4c9f414dc648c6245ff92cf7db" + ], + "version": "==0.3.3" + }, + "six": { + "hashes": [ + "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", + "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" + ], + "version": "==1.15.0" + }, + "urllib3": { + "hashes": [ + "sha256:19188f96923873c92ccb987120ec4acaa12f0461fa9ce5d3d0772bc965a39e08", + "sha256:d8ff90d979214d7b4f8ce956e80f4028fc6860e4431f731ea4a8c08f23f99473" + ], + "markers": "python_version != '3.4'", + "version": "==1.26.2" + } + }, + "develop": { + "appdirs": { + "hashes": [ + "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41", + "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128" + ], + "version": "==1.4.4" + }, + "attrs": { + "hashes": [ + "sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6", + "sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700" + ], + "version": "==20.3.0" + }, + "black": { + "hashes": [ + "sha256:1c02557aa099101b9d21496f8a914e9ed2222ef70336404eeeac8edba836fbea" + ], + "index": "pypi", + "version": "==20.8b1" + }, + "bleach": { + "hashes": [ + "sha256:52b5919b81842b1854196eaae5ca29679a2f2e378905c346d3ca8227c2c66080", + "sha256:9f8ccbeb6183c6e6cddea37592dfb0167485c1e3b13b3363bc325aa8bda3adbd" + ], + "version": "==3.2.1" + }, + "bump2version": { + "hashes": [ + "sha256:37f927ea17cde7ae2d7baf832f8e80ce3777624554a653006c9144f8017fe410", + "sha256:762cb2bfad61f4ec8e2bdf452c7c267416f8c70dd9ecb1653fd0bbb01fa936e6" + ], + "version": "==1.0.1" + }, + "bumpversion": { + "hashes": [ + "sha256:4ba55e4080d373f80177b4dabef146c07ce73c7d1377aabf9d3c3ae1f94584a6", + "sha256:4eb3267a38194d09f048a2179980bb4803701969bff2c85fa8f6d1ce050be15e" + ], + "index": "pypi", + "version": "==0.6.0" + }, + "certifi": { + "hashes": [ + "sha256:1a4995114262bffbc2413b159f2a1a480c969de6e6eb13ee966d470af86af59c", + "sha256:719a74fb9e33b9bd44cc7f3a8d94bc35e4049deebe19ba7d8e108280cfd59830" + ], + "version": "==2020.12.5" + }, + "cffi": { + "hashes": [ + "sha256:00a1ba5e2e95684448de9b89888ccd02c98d512064b4cb987d48f4b40aa0421e", + "sha256:00e28066507bfc3fe865a31f325c8391a1ac2916219340f87dfad602c3e48e5d", + "sha256:045d792900a75e8b1e1b0ab6787dd733a8190ffcf80e8c8ceb2fb10a29ff238a", + "sha256:0638c3ae1a0edfb77c6765d487fee624d2b1ee1bdfeffc1f0b58c64d149e7eec", + "sha256:105abaf8a6075dc96c1fe5ae7aae073f4696f2905fde6aeada4c9d2926752362", + "sha256:155136b51fd733fa94e1c2ea5211dcd4c8879869008fc811648f16541bf99668", + "sha256:1a465cbe98a7fd391d47dce4b8f7e5b921e6cd805ef421d04f5f66ba8f06086c", + "sha256:1d2c4994f515e5b485fd6d3a73d05526aa0fcf248eb135996b088d25dfa1865b", + "sha256:2c24d61263f511551f740d1a065eb0212db1dbbbbd241db758f5244281590c06", + "sha256:51a8b381b16ddd370178a65360ebe15fbc1c71cf6f584613a7ea08bfad946698", + "sha256:594234691ac0e9b770aee9fcdb8fa02c22e43e5c619456efd0d6c2bf276f3eb2", + "sha256:5cf4be6c304ad0b6602f5c4e90e2f59b47653ac1ed9c662ed379fe48a8f26b0c", + "sha256:64081b3f8f6f3c3de6191ec89d7dc6c86a8a43911f7ecb422c60e90c70be41c7", + "sha256:6bc25fc545a6b3d57b5f8618e59fc13d3a3a68431e8ca5fd4c13241cd70d0009", + "sha256:798caa2a2384b1cbe8a2a139d80734c9db54f9cc155c99d7cc92441a23871c03", + "sha256:7c6b1dece89874d9541fc974917b631406233ea0440d0bdfbb8e03bf39a49b3b", + "sha256:840793c68105fe031f34d6a086eaea153a0cd5c491cde82a74b420edd0a2b909", + "sha256:8d6603078baf4e11edc4168a514c5ce5b3ba6e3e9c374298cb88437957960a53", + "sha256:9cc46bc107224ff5b6d04369e7c595acb700c3613ad7bcf2e2012f62ece80c35", + "sha256:9f7a31251289b2ab6d4012f6e83e58bc3b96bd151f5b5262467f4bb6b34a7c26", + "sha256:9ffb888f19d54a4d4dfd4b3f29bc2c16aa4972f1c2ab9c4ab09b8ab8685b9c2b", + "sha256:a5ed8c05548b54b998b9498753fb9cadbfd92ee88e884641377d8a8b291bcc01", + "sha256:a7711edca4dcef1a75257b50a2fbfe92a65187c47dab5a0f1b9b332c5919a3fb", + "sha256:af5c59122a011049aad5dd87424b8e65a80e4a6477419c0c1015f73fb5ea0293", + "sha256:b18e0a9ef57d2b41f5c68beefa32317d286c3d6ac0484efd10d6e07491bb95dd", + "sha256:b4e248d1087abf9f4c10f3c398896c87ce82a9856494a7155823eb45a892395d", + "sha256:ba4e9e0ae13fc41c6b23299545e5ef73055213e466bd107953e4a013a5ddd7e3", + "sha256:c6332685306b6417a91b1ff9fae889b3ba65c2292d64bd9245c093b1b284809d", + "sha256:d5ff0621c88ce83a28a10d2ce719b2ee85635e85c515f12bac99a95306da4b2e", + "sha256:d9efd8b7a3ef378dd61a1e77367f1924375befc2eba06168b6ebfa903a5e59ca", + "sha256:df5169c4396adc04f9b0a05f13c074df878b6052430e03f50e68adf3a57aa28d", + "sha256:ebb253464a5d0482b191274f1c8bf00e33f7e0b9c66405fbffc61ed2c839c775", + "sha256:ec80dc47f54e6e9a78181ce05feb71a0353854cc26999db963695f950b5fb375", + "sha256:f032b34669220030f905152045dfa27741ce1a6db3324a5bc0b96b6c7420c87b", + "sha256:f60567825f791c6f8a592f3c6e3bd93dd2934e3f9dac189308426bd76b00ef3b", + "sha256:f803eaa94c2fcda012c047e62bc7a51b0bdabda1cad7a92a522694ea2d76e49f" + ], + "version": "==1.14.4" + }, + "chardet": { + "hashes": [ + "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa", + "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5" + ], + "version": "==4.0.0" + }, + "click": { + "hashes": [ + "sha256:cc6a19da8ebff6e7074f731447ef7e112bd23adf3de5c597cf9989f2fd8defe9", + "sha256:fcf697e1fd4b567d817c69dab10a4035937fe6af175c05fd6806b69f74cbc6c4" + ], + "index": "pypi", + "version": "==6.6" + }, + "codecov": { + "hashes": [ + "sha256:6cde272454009d27355f9434f4e49f238c0273b216beda8472a65dc4957f473b", + "sha256:ba8553a82942ce37d4da92b70ffd6d54cf635fc1793ab0a7dc3fecd6ebfb3df8" + ], + "index": "pypi", + "version": "==2.1.11" + }, + "colorama": { + "hashes": [ + "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b", + "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2" + ], + "version": "==0.4.4" + }, + "coverage": { + "hashes": [ + "sha256:08b3ba72bd981531fd557f67beee376d6700fba183b167857038997ba30dd297", + "sha256:2757fa64e11ec12220968f65d086b7a29b6583d16e9a544c889b22ba98555ef1", + "sha256:3102bb2c206700a7d28181dbe04d66b30780cde1d1c02c5f3c165cf3d2489497", + "sha256:3498b27d8236057def41de3585f317abae235dd3a11d33e01736ffedb2ef8606", + "sha256:378ac77af41350a8c6b8801a66021b52da8a05fd77e578b7380e876c0ce4f528", + "sha256:38f16b1317b8dd82df67ed5daa5f5e7c959e46579840d77a67a4ceb9cef0a50b", + "sha256:3911c2ef96e5ddc748a3c8b4702c61986628bb719b8378bf1e4a6184bbd48fe4", + "sha256:3a3c3f8863255f3c31db3889f8055989527173ef6192a283eb6f4db3c579d830", + "sha256:3b14b1da110ea50c8bcbadc3b82c3933974dbeea1832e814aab93ca1163cd4c1", + "sha256:535dc1e6e68fad5355f9984d5637c33badbdc987b0c0d303ee95a6c979c9516f", + "sha256:6f61319e33222591f885c598e3e24f6a4be3533c1d70c19e0dc59e83a71ce27d", + "sha256:723d22d324e7997a651478e9c5a3120a0ecbc9a7e94071f7e1954562a8806cf3", + "sha256:76b2775dda7e78680d688daabcb485dc87cf5e3184a0b3e012e1d40e38527cc8", + "sha256:782a5c7df9f91979a7a21792e09b34a658058896628217ae6362088b123c8500", + "sha256:7e4d159021c2029b958b2363abec4a11db0ce8cd43abb0d9ce44284cb97217e7", + "sha256:8dacc4073c359f40fcf73aede8428c35f84639baad7e1b46fce5ab7a8a7be4bb", + "sha256:8f33d1156241c43755137288dea619105477961cfa7e47f48dbf96bc2c30720b", + "sha256:8ffd4b204d7de77b5dd558cdff986a8274796a1e57813ed005b33fd97e29f059", + "sha256:93a280c9eb736a0dcca19296f3c30c720cb41a71b1f9e617f341f0a8e791a69b", + "sha256:9a4f66259bdd6964d8cf26142733c81fb562252db74ea367d9beb4f815478e72", + "sha256:9a9d4ff06804920388aab69c5ea8a77525cf165356db70131616acd269e19b36", + "sha256:a2070c5affdb3a5e751f24208c5c4f3d5f008fa04d28731416e023c93b275277", + "sha256:a4857f7e2bc6921dbd487c5c88b84f5633de3e7d416c4dc0bb70256775551a6c", + "sha256:a607ae05b6c96057ba86c811d9c43423f35e03874ffb03fbdcd45e0637e8b631", + "sha256:a66ca3bdf21c653e47f726ca57f46ba7fc1f260ad99ba783acc3e58e3ebdb9ff", + "sha256:ab110c48bc3d97b4d19af41865e14531f300b482da21783fdaacd159251890e8", + "sha256:b239711e774c8eb910e9b1ac719f02f5ae4bf35fa0420f438cdc3a7e4e7dd6ec", + "sha256:be0416074d7f253865bb67630cf7210cbc14eb05f4099cc0f82430135aaa7a3b", + "sha256:c46643970dff9f5c976c6512fd35768c4a3819f01f61169d8cdac3f9290903b7", + "sha256:c5ec71fd4a43b6d84ddb88c1df94572479d9a26ef3f150cef3dacefecf888105", + "sha256:c6e5174f8ca585755988bc278c8bb5d02d9dc2e971591ef4a1baabdf2d99589b", + "sha256:c89b558f8a9a5a6f2cfc923c304d49f0ce629c3bd85cb442ca258ec20366394c", + "sha256:cc44e3545d908ecf3e5773266c487ad1877be718d9dc65fc7eb6e7d14960985b", + "sha256:cc6f8246e74dd210d7e2b56c76ceaba1cc52b025cd75dbe96eb48791e0250e98", + "sha256:cd556c79ad665faeae28020a0ab3bda6cd47d94bec48e36970719b0b86e4dcf4", + "sha256:ce6f3a147b4b1a8b09aae48517ae91139b1b010c5f36423fa2b866a8b23df879", + "sha256:ceb499d2b3d1d7b7ba23abe8bf26df5f06ba8c71127f188333dddcf356b4b63f", + "sha256:cef06fb382557f66d81d804230c11ab292d94b840b3cb7bf4450778377b592f4", + "sha256:e448f56cfeae7b1b3b5bcd99bb377cde7c4eb1970a525c770720a352bc4c8044", + "sha256:e52d3d95df81c8f6b2a1685aabffadf2d2d9ad97203a40f8d61e51b70f191e4e", + "sha256:ee2f1d1c223c3d2c24e3afbb2dd38be3f03b1a8d6a83ee3d9eb8c36a52bee899", + "sha256:f2c6888eada180814b8583c3e793f3f343a692fc802546eed45f40a001b1169f", + "sha256:f51dbba78d68a44e99d484ca8c8f604f17e957c1ca09c3ebc2c7e3bbd9ba0448", + "sha256:f54de00baf200b4539a5a092a759f000b5f45fd226d6d25a76b0dff71177a714", + "sha256:fa10fee7e32213f5c7b0d6428ea92e3a3fdd6d725590238a3f92c0de1c78b9d2", + "sha256:fabeeb121735d47d8eab8671b6b031ce08514c86b7ad8f7d5490a7b6dcd6267d", + "sha256:fac3c432851038b3e6afe086f777732bcf7f6ebbfd90951fa04ee53db6d0bcdd", + "sha256:fda29412a66099af6d6de0baa6bd7c52674de177ec2ad2630ca264142d69c6c7", + "sha256:ff1330e8bc996570221b450e2d539134baa9465f5cb98aff0e0f73f34172e0ae" + ], + "version": "==5.3.1" + }, + "coveralls": { + "hashes": [ + "sha256:2301a19500b06649d2ec4f2858f9c69638d7699a4c63027c5d53daba666147cc", + "sha256:b990ba1f7bc4288e63340be0433698c1efe8217f78c689d254c2540af3d38617" + ], + "index": "pypi", + "version": "==2.2.0" + }, + "cryptography": { + "hashes": [ + "sha256:0003a52a123602e1acee177dc90dd201f9bb1e73f24a070db7d36c588e8f5c7d", + "sha256:0e85aaae861d0485eb5a79d33226dd6248d2a9f133b81532c8f5aae37de10ff7", + "sha256:594a1db4511bc4d960571536abe21b4e5c3003e8750ab8365fafce71c5d86901", + "sha256:69e836c9e5ff4373ce6d3ab311c1a2eed274793083858d3cd4c7d12ce20d5f9c", + "sha256:788a3c9942df5e4371c199d10383f44a105d67d401fb4304178020142f020244", + "sha256:7e177e4bea2de937a584b13645cab32f25e3d96fc0bc4a4cf99c27dc77682be6", + "sha256:83d9d2dfec70364a74f4e7c70ad04d3ca2e6a08b703606993407bf46b97868c5", + "sha256:84ef7a0c10c24a7773163f917f1cb6b4444597efd505a8aed0a22e8c4780f27e", + "sha256:9e21301f7a1e7c03dbea73e8602905a4ebba641547a462b26dd03451e5769e7c", + "sha256:9f6b0492d111b43de5f70052e24c1f0951cb9e6022188ebcb1cc3a3d301469b0", + "sha256:a69bd3c68b98298f490e84519b954335154917eaab52cf582fa2c5c7efc6e812", + "sha256:b4890d5fb9b7a23e3bf8abf5a8a7da8e228f1e97dc96b30b95685df840b6914a", + "sha256:c366df0401d1ec4e548bebe8f91d55ebcc0ec3137900d214dd7aac8427ef3030", + "sha256:dc42f645f8f3a489c3dd416730a514e7a91a59510ddaadc09d04224c098d3302" + ], + "version": "==3.3.1" + }, + "distlib": { + "hashes": [ + "sha256:8c09de2c67b3e7deef7184574fc060ab8a793e7adbb183d942c389c8b13c52fb", + "sha256:edf6116872c863e1aa9d5bb7cb5e05a022c519a4594dc703843343a9ddd9bff1" + ], + "version": "==0.3.1" + }, + "docopt": { + "hashes": [ + "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491" + ], + "version": "==0.6.2" + }, + "docutils": { + "hashes": [ + "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af", + "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc" + ], + "index": "pypi", + "version": "==0.16" + }, + "filelock": { + "hashes": [ + "sha256:18d82244ee114f543149c66a6e0c14e9c4f8a1044b5cdaadd0f82159d6a6ff59", + "sha256:929b7d63ec5b7d6b71b0fa5ac14e030b3f70b75747cef1b10da9b879fef15836" + ], + "version": "==3.0.12" + }, + "flake8": { + "hashes": [ + "sha256:749dbbd6bfd0cf1318af27bf97a14e28e5ff548ef8e5b1566ccfb25a11e7c839", + "sha256:aadae8761ec651813c24be05c6f7b4680857ef6afaae4651a4eccaef97ce6c3b" + ], + "index": "pypi", + "version": "==3.8.4" + }, + "idna": { + "hashes": [ + "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6", + "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0" + ], + "version": "==2.10" + }, + "iniconfig": { + "hashes": [ + "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3", + "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32" + ], + "version": "==1.1.1" + }, + "jeepney": { + "hashes": [ + "sha256:7d59b6622675ca9e993a6bd38de845051d315f8b0c72cca3aef733a20b648657", + "sha256:aec56c0eb1691a841795111e184e13cad504f7703b9a64f63020816afa79a8ae" + ], + "markers": "sys_platform == 'linux'", + "version": "==0.6.0" + }, + "keyring": { + "hashes": [ + "sha256:1746d3ac913d449a090caf11e9e4af00e26c3f7f7e81027872192b2398b98675", + "sha256:4be9cbaaaf83e61d6399f733d113ede7d1c73bc75cb6aeb64eee0f6ac39b30ea" + ], + "version": "==21.8.0" + }, + "mccabe": { + "hashes": [ + "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", + "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f" + ], + "version": "==0.6.1" + }, + "mypy-extensions": { + "hashes": [ + "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d", + "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8" + ], + "version": "==0.4.3" + }, + "packaging": { + "hashes": [ + "sha256:24e0da08660a87484d1602c30bb4902d74816b6985b93de36926f5bc95741858", + "sha256:78598185a7008a470d64526a8059de9aaa449238f280fc9eb6b13ba6c4109093" + ], + "version": "==20.8" + }, + "pathspec": { + "hashes": [ + "sha256:86379d6b86d75816baba717e64b1a3a3469deb93bb76d613c9ce79edc5cb68fd", + "sha256:aa0cb481c4041bf52ffa7b0d8fa6cd3e88a2ca4879c533c9153882ee2556790d" + ], + "version": "==0.8.1" + }, + "pbr": { + "hashes": [ + "sha256:5fad80b613c402d5b7df7bd84812548b2a61e9977387a80a5fc5c396492b13c9", + "sha256:b236cde0ac9a6aedd5e3c34517b423cd4fd97ef723849da6b0d2231142d89c00" + ], + "version": "==5.5.1" + }, + "pipenv": { + "hashes": [ + "sha256:4ab2f60742184d851ac44b9e1d423afe71dc2ea7a68bde07eb890c8b4ce5a420", + "sha256:8253fe6f9cfb3791a54da8a0571f73c918cb3457dd908684c1800a13a06ec4c1" + ], + "version": "==2020.11.15" + }, + "pipenv-to-requirements": { + "hashes": [ + "sha256:1c18682a4ec70eb07261d2b558df3ee22ea00192663a1b98fd1e45e22946c163", + "sha256:cb70471a17a7d4658caffe989539413313d51df1b3a54838bcd7e7d3ab3fcc18" + ], + "index": "pypi", + "version": "==0.9.0" + }, + "pkginfo": { + "hashes": [ + "sha256:a6a4ac943b496745cec21f14f021bbd869d5e9b4f6ec06918cffea5a2f4b9193", + "sha256:ce14d7296c673dc4c61c759a0b6c14bae34e34eb819c0017bb6ca5b7292c56e9" + ], + "version": "==1.6.1" + }, + "pluggy": { + "hashes": [ + "sha256:265a94bf44ca13662f12fcd1b074c14d4b269a712f051b6f644ef7e705d6735f", + "sha256:467f0219e89bb5061a8429c6fc5cf055fa3983a0e68e84a1d205046306b37d9e" + ], + "version": "==1.0.0.dev0" + }, + "py": { + "hashes": [ + "sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3", + "sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a" + ], + "version": "==1.10.0" + }, + "pycodestyle": { + "hashes": [ + "sha256:2295e7b2f6b5bd100585ebcb1f616591b652db8a741695b3d8f5d28bdc934367", + "sha256:c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e" + ], + "version": "==2.6.0" + }, + "pycparser": { + "hashes": [ + "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0", + "sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705" + ], + "version": "==2.20" + }, + "pyflakes": { + "hashes": [ + "sha256:0d94e0e05a19e57a99444b6ddcf9a6eb2e5c68d3ca1e98e90707af8152c90a92", + "sha256:35b2d75ee967ea93b55750aa9edbbf72813e06a66ba54438df2cfac9e3c27fc8" + ], + "version": "==2.2.0" + }, + "pygments": { + "hashes": [ + "sha256:ccf3acacf3782cbed4a989426012f1c535c9a90d3a7fc3f16d231b9372d2b716", + "sha256:f275b6c0909e5dafd2d6269a656aa90fa58ebf4a74f8fcf9053195d226b24a08" + ], + "version": "==2.7.3" + }, + "pyparsing": { + "hashes": [ + "sha256:1c6409312ce2ce2997896af5756753778d5f1603666dba5587804f09ad82ed27", + "sha256:f4896b4cc085a1f8f8ae53a1a90db5a86b3825ff73eb974dffee3d9e701007f4" + ], + "version": "==3.0.0b2" + }, + "pytest": { + "hashes": [ + "sha256:1969f797a1a0dbd8ccf0fecc80262312729afea9c17f1d70ebf85c5e76c6f7c8", + "sha256:66e419b1899bc27346cb2c993e12c5e5e8daba9073c1fbce33b9807abc95c306" + ], + "index": "pypi", + "version": "==6.2.1" + }, + "pytest-cov": { + "hashes": [ + "sha256:45ec2d5182f89a81fc3eb29e3d1ed3113b9e9a873bcddb2a71faaab066110191", + "sha256:47bd0ce14056fdd79f93e1713f88fad7bdcc583dcd7783da86ef2f085a0bb88e" + ], + "index": "pypi", + "version": "==2.10.1" + }, + "readme-renderer": { + "hashes": [ + "sha256:267854ac3b1530633c2394ead828afcd060fc273217c42ac36b6be9c42cd9a9d", + "sha256:6b7e5aa59210a40de72eb79931491eaf46fefca2952b9181268bd7c7c65c260a" + ], + "version": "==28.0" + }, + "regex": { + "hashes": [ + "sha256:02951b7dacb123d8ea6da44fe45ddd084aa6777d4b2454fa0da61d569c6fa538", + "sha256:0d08e71e70c0237883d0bef12cad5145b84c3705e9c6a588b2a9c7080e5af2a4", + "sha256:1862a9d9194fae76a7aaf0150d5f2a8ec1da89e8b55890b1786b8f88a0f619dc", + "sha256:1ab79fcb02b930de09c76d024d279686ec5d532eb814fd0ed1e0051eb8bd2daa", + "sha256:1fa7ee9c2a0e30405e21031d07d7ba8617bc590d391adfc2b7f1e8b99f46f444", + "sha256:262c6825b309e6485ec2493ffc7e62a13cf13fb2a8b6d212f72bd53ad34118f1", + "sha256:2a11a3e90bd9901d70a5b31d7dd85114755a581a5da3fc996abfefa48aee78af", + "sha256:2c99e97d388cd0a8d30f7c514d67887d8021541b875baf09791a3baad48bb4f8", + "sha256:3128e30d83f2e70b0bed9b2a34e92707d0877e460b402faca908c6667092ada9", + "sha256:38c8fd190db64f513fe4e1baa59fed086ae71fa45083b6936b52d34df8f86a88", + "sha256:3bddc701bdd1efa0d5264d2649588cbfda549b2899dc8d50417e47a82e1387ba", + "sha256:4902e6aa086cbb224241adbc2f06235927d5cdacffb2425c73e6570e8d862364", + "sha256:49cae022fa13f09be91b2c880e58e14b6da5d10639ed45ca69b85faf039f7a4e", + "sha256:56e01daca75eae420bce184edd8bb341c8eebb19dd3bce7266332258f9fb9dd7", + "sha256:5862975b45d451b6db51c2e654990c1820523a5b07100fc6903e9c86575202a0", + "sha256:6a8ce43923c518c24a2579fda49f093f1397dad5d18346211e46f134fc624e31", + "sha256:6c54ce4b5d61a7129bad5c5dc279e222afd00e721bf92f9ef09e4fae28755683", + "sha256:6e4b08c6f8daca7d8f07c8d24e4331ae7953333dbd09c648ed6ebd24db5a10ee", + "sha256:717881211f46de3ab130b58ec0908267961fadc06e44f974466d1887f865bd5b", + "sha256:749078d1eb89484db5f34b4012092ad14b327944ee7f1c4f74d6279a6e4d1884", + "sha256:7913bd25f4ab274ba37bc97ad0e21c31004224ccb02765ad984eef43e04acc6c", + "sha256:7a25fcbeae08f96a754b45bdc050e1fb94b95cab046bf56b016c25e9ab127b3e", + "sha256:83d6b356e116ca119db8e7c6fc2983289d87b27b3fac238cfe5dca529d884562", + "sha256:8b882a78c320478b12ff024e81dc7d43c1462aa4a3341c754ee65d857a521f85", + "sha256:8f6a2229e8ad946e36815f2a03386bb8353d4bde368fdf8ca5f0cb97264d3b5c", + "sha256:9801c4c1d9ae6a70aeb2128e5b4b68c45d4f0af0d1535500884d644fa9b768c6", + "sha256:a15f64ae3a027b64496a71ab1f722355e570c3fac5ba2801cafce846bf5af01d", + "sha256:a3d748383762e56337c39ab35c6ed4deb88df5326f97a38946ddd19028ecce6b", + "sha256:a63f1a07932c9686d2d416fb295ec2c01ab246e89b4d58e5fa468089cab44b70", + "sha256:b2b1a5ddae3677d89b686e5c625fc5547c6e492bd755b520de5332773a8af06b", + "sha256:b2f4007bff007c96a173e24dcda236e5e83bde4358a557f9ccf5e014439eae4b", + "sha256:baf378ba6151f6e272824b86a774326f692bc2ef4cc5ce8d5bc76e38c813a55f", + "sha256:bafb01b4688833e099d79e7efd23f99172f501a15c44f21ea2118681473fdba0", + "sha256:bba349276b126947b014e50ab3316c027cac1495992f10e5682dc677b3dfa0c5", + "sha256:c084582d4215593f2f1d28b65d2a2f3aceff8342aa85afd7be23a9cad74a0de5", + "sha256:d1ebb090a426db66dd80df8ca85adc4abfcbad8a7c2e9a5ec7513ede522e0a8f", + "sha256:d2d8ce12b7c12c87e41123997ebaf1a5767a5be3ec545f64675388970f415e2e", + "sha256:e32f5f3d1b1c663af7f9c4c1e72e6ffe9a78c03a31e149259f531e0fed826512", + "sha256:e3faaf10a0d1e8e23a9b51d1900b72e1635c2d5b0e1bea1c18022486a8e2e52d", + "sha256:f7d29a6fc4760300f86ae329e3b6ca28ea9c20823df123a2ea8693e967b29917", + "sha256:f8f295db00ef5f8bae530fc39af0b40486ca6068733fb860b42115052206466f" + ], + "version": "==2020.11.13" + }, + "requests": { + "hashes": [ + "sha256:27973dd4a904a4f13b263a19c866c13b92a39ed1c964655f025f3f8d3d75b804", + "sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e" + ], + "version": "==2.25.1" + }, + "requests-toolbelt": { + "hashes": [ + "sha256:380606e1d10dc85c3bd47bf5a6095f815ec007be7a8b69c878507068df059e6f", + "sha256:968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0" + ], + "version": "==0.9.1" + }, + "rfc3986": { + "hashes": [ + "sha256:112398da31a3344dc25dbf477d8df6cb34f9278a94fee2625d89e4514be8bb9d", + "sha256:af9147e9aceda37c91a05f4deb128d4b4b49d6b199775fd2d2927768abdc8f50" + ], + "version": "==1.4.0" + }, + "secretstorage": { + "hashes": [ + "sha256:30cfdef28829dad64d6ea1ed08f8eff6aa115a77068926bcc9f5225d5a3246aa", + "sha256:5c36f6537a523ec5f969ef9fad61c98eb9e017bc601d811e53aa25bece64892f" + ], + "markers": "sys_platform == 'linux'", + "version": "==3.3.0" + }, + "six": { + "hashes": [ + "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", + "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" + ], + "version": "==1.15.0" + }, + "toml": { + "hashes": [ + "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", + "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" + ], + "version": "==0.10.2" + }, + "tqdm": { + "hashes": [ + "sha256:556c55b081bd9aa746d34125d024b73f0e2a0e62d5927ff0e400e20ee0a03b9a", + "sha256:b8b46036fd00176d0870307123ef06bb851096964fa7fc578d789f90ce82c3e4" + ], + "version": "==4.55.1" + }, + "twine": { + "hashes": [ + "sha256:2f6942ec2a17417e19d2dd372fc4faa424c87ee9ce49b4e20c427eb00a0f3f41", + "sha256:fcffa8fc37e8083a5be0728371f299598870ee1eccc94e9a25cef7b1dcfa8297" + ], + "index": "pypi", + "version": "==3.3.0" + }, + "typed-ast": { + "hashes": [ + "sha256:07d49388d5bf7e863f7fa2f124b1b1d89d8aa0e2f7812faff0a5658c01c59aa1", + "sha256:14bf1522cdee369e8f5581238edac09150c765ec1cb33615855889cf33dcb92d", + "sha256:240296b27397e4e37874abb1df2a608a92df85cf3e2a04d0d4d61055c8305ba6", + "sha256:36d829b31ab67d6fcb30e185ec996e1f72b892255a745d3a82138c97d21ed1cd", + "sha256:37f48d46d733d57cc70fd5f30572d11ab8ed92da6e6b28e024e4a3edfb456e37", + "sha256:4c790331247081ea7c632a76d5b2a265e6d325ecd3179d06e9cf8d46d90dd151", + "sha256:5dcfc2e264bd8a1db8b11a892bd1647154ce03eeba94b461effe68790d8b8e07", + "sha256:7147e2a76c75f0f64c4319886e7639e490fee87c9d25cb1d4faef1d8cf83a440", + "sha256:7703620125e4fb79b64aa52427ec192822e9f45d37d4b6625ab37ef403e1df70", + "sha256:8368f83e93c7156ccd40e49a783a6a6850ca25b556c0fa0240ed0f659d2fe496", + "sha256:84aa6223d71012c68d577c83f4e7db50d11d6b1399a9c779046d75e24bed74ea", + "sha256:85f95aa97a35bdb2f2f7d10ec5bbdac0aeb9dafdaf88e17492da0504de2e6400", + "sha256:8db0e856712f79c45956da0c9a40ca4246abc3485ae0d7ecc86a20f5e4c09abc", + "sha256:9044ef2df88d7f33692ae3f18d3be63dec69c4fb1b5a4a9ac950f9b4ba571606", + "sha256:963c80b583b0661918718b095e02303d8078950b26cc00b5e5ea9ababe0de1fc", + "sha256:987f15737aba2ab5f3928c617ccf1ce412e2e321c77ab16ca5a293e7bbffd581", + "sha256:9ec45db0c766f196ae629e509f059ff05fc3148f9ffd28f3cfe75d4afb485412", + "sha256:9fc0b3cb5d1720e7141d103cf4819aea239f7d136acf9ee4a69b047b7986175a", + "sha256:a2c927c49f2029291fbabd673d51a2180038f8cd5a5b2f290f78c4516be48be2", + "sha256:a38878a223bdd37c9709d07cd357bb79f4c760b29210e14ad0fb395294583787", + "sha256:b4fcdcfa302538f70929eb7b392f536a237cbe2ed9cba88e3bf5027b39f5f77f", + "sha256:c0c74e5579af4b977c8b932f40a5464764b2f86681327410aa028a22d2f54937", + "sha256:c1c876fd795b36126f773db9cbb393f19808edd2637e00fd6caba0e25f2c7b64", + "sha256:c9aadc4924d4b5799112837b226160428524a9a45f830e0d0f184b19e4090487", + "sha256:cc7b98bf58167b7f2db91a4327da24fb93368838eb84a44c472283778fc2446b", + "sha256:cf54cfa843f297991b7388c281cb3855d911137223c6b6d2dd82a47ae5125a41", + "sha256:d003156bb6a59cda9050e983441b7fa2487f7800d76bdc065566b7d728b4581a", + "sha256:d175297e9533d8d37437abc14e8a83cbc68af93cc9c1c59c2c292ec59a0697a3", + "sha256:d746a437cdbca200622385305aedd9aef68e8a645e385cc483bdc5e488f07166", + "sha256:e683e409e5c45d5c9082dc1daf13f6374300806240719f95dc783d1fc942af10" + ], + "version": "==1.4.2" + }, + "typing-extensions": { + "hashes": [ + "sha256:7cb407020f00f7bfc3cb3e7881628838e69d8f3fcab2f64742a5e76b2f841918", + "sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c", + "sha256:dafc7639cde7f1b6e1acc0f457842a83e722ccca8eef5270af2d74792619a89f" + ], + "version": "==3.7.4.3" + }, + "urllib3": { + "hashes": [ + "sha256:19188f96923873c92ccb987120ec4acaa12f0461fa9ce5d3d0772bc965a39e08", + "sha256:d8ff90d979214d7b4f8ce956e80f4028fc6860e4431f731ea4a8c08f23f99473" + ], + "markers": "python_version != '3.4'", + "version": "==1.26.2" + }, + "virtualenv": { + "hashes": [ + "sha256:54b05fc737ea9c9ee9f8340f579e5da5b09fb64fd010ab5757eb90268616907c", + "sha256:b7a8ec323ee02fb2312f098b6b4c9de99559b462775bc8fe3627a73706603c1b" + ], + "version": "==20.2.2" + }, + "virtualenv-clone": { + "hashes": [ + "sha256:07e74418b7cc64f4fda987bf5bc71ebd59af27a7bc9e8a8ee9fd54b1f2390a27", + "sha256:665e48dd54c84b98b71a657acb49104c54e7652bce9c1c4f6c6976ed4c827a29" + ], + "version": "==0.5.4" + }, + "webencodings": { + "hashes": [ + "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", + "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923" + ], + "version": "==0.5.1" + }, + "wheel": { + "hashes": [ + "sha256:78b5b185f0e5763c26ca1e324373aadd49182ca90e825f7853f4b2509215dc0e", + "sha256:e11eefd162658ea59a60a0f6c7d493a7190ea4b9a85e335b33489d9f17e0245e" + ], + "index": "pypi", + "version": "==0.36.2" + } } - } } From 131e387289a1b7a9f0f64f78e8e9b49ef14a6af9 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 5 Jan 2021 01:10:01 -0800 Subject: [PATCH 115/120] Bump pyyaml from 5.1 to 5.3.1 (#469) Bumps [pyyaml](https://github.com/yaml/pyyaml) from 5.1 to 5.3.1. - [Release notes](https://github.com/yaml/pyyaml/releases) - [Changelog](https://github.com/yaml/pyyaml/blob/master/CHANGES) - [Commits](https://github.com/yaml/pyyaml/compare/5.1...5.3.1) Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> --- Pipfile | 2 +- Pipfile.lock | 28 +++++++++++++++------------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/Pipfile b/Pipfile index a31c4ff2..63872204 100644 --- a/Pipfile +++ b/Pipfile @@ -22,7 +22,7 @@ docutils = "*" jmespath = "==0.10.0" pyaml = "==15.8.2" python-dateutil = "==2.8.1" -PyYAML = "==5.1" +PyYAML = "==5.3.1" [pipenv] allow_prereleases = true diff --git a/Pipfile.lock b/Pipfile.lock index 7e97fd0e..e916d20d 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "a694ac5fe98cc14d5b3285de3236facbd1fd6c7c166dc9e0fb6b89099c4740dc" + "sha256": "0c63bd930fe69f9333e819963cb72bc4a0977b1111c2e512b04fa4e703ac59cf" }, "pipfile-spec": 6, "requires": {}, @@ -69,20 +69,22 @@ }, "pyyaml": { "hashes": [ - "sha256:1adecc22f88d38052fb787d959f003811ca858b799590a5eaa70e63dca50308c", - "sha256:436bc774ecf7c103814098159fbb84c2715d25980175292c648f2da143909f95", - "sha256:460a5a4248763f6f37ea225d19d5c205677d8d525f6a83357ca622ed541830c2", - "sha256:5a22a9c84653debfbf198d02fe592c176ea548cccce47553f35f466e15cf2fd4", - "sha256:7a5d3f26b89d688db27822343dfa25c599627bc92093e788956372285c6298ad", - "sha256:9372b04a02080752d9e6f990179a4ab840227c6e2ce15b95e1278456664cf2ba", - "sha256:a5dcbebee834eaddf3fa7366316b880ff4062e4bcc9787b78c7fbb4a26ff2dd1", - "sha256:aee5bab92a176e7cd034e57f46e9df9a9862a71f8f37cad167c6fc74c65f5b4e", - "sha256:c51f642898c0bacd335fc119da60baae0824f2cde95b0330b56c0553439f0673", - "sha256:c68ea4d3ba1705da1e0d85da6684ac657912679a649e8868bd850d2c299cce13", - "sha256:e23d0cc5299223dcc37885dae624f382297717e459ea24053709675a976a3e19" + "sha256:06a0d7ba600ce0b2d2fe2e78453a470b5a6e000a985dd4a4e54e436cc36b0e97", + "sha256:240097ff019d7c70a4922b6869d8a86407758333f02203e0fc6ff79c5dcede76", + "sha256:4f4b913ca1a7319b33cfb1369e91e50354d6f07a135f3b901aca02aa95940bd2", + "sha256:6034f55dab5fea9e53f436aa68fa3ace2634918e8b5994d82f3621c04ff5ed2e", + "sha256:69f00dca373f240f842b2931fb2c7e14ddbacd1397d57157a9b005a6a9942648", + "sha256:73f099454b799e05e5ab51423c7bcf361c58d3206fa7b0d555426b1f4d9a3eaf", + "sha256:74809a57b329d6cc0fdccee6318f44b9b8649961fa73144a98735b0aaf029f1f", + "sha256:7739fc0fa8205b3ee8808aea45e968bc90082c10aef6ea95e855e10abf4a37b2", + "sha256:95f71d2af0ff4227885f7a6605c37fd53d3a106fcab511b8860ecca9fcf400ee", + "sha256:ad9c67312c84def58f3c04504727ca879cb0013b2517c85a9a253f0cb6380c0a", + "sha256:b8eac752c5e14d3eca0e6dd9199cd627518cb5ec06add0de9d32baeee6fe645d", + "sha256:cc8955cfbfc7a115fa81d85284ee61147059a753344bc51098f3ccd69b0d7e0c", + "sha256:d13155f591e6fcc1ec3b30685d50bf0711574e2c0dfffd7644babf8b5102ca1a" ], "index": "pypi", - "version": "==5.1" + "version": "==5.3.1" }, "s3transfer": { "hashes": [ From 2bec5802f518f69924b0b2940594d88b06aabc57 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Sat, 9 Jan 2021 00:03:55 -0800 Subject: [PATCH 116/120] Bump click from 6.6 to 7.1.2 (#492) Bumps [click](https://github.com/pallets/click) from 6.6 to 7.1.2. - [Release notes](https://github.com/pallets/click/releases) - [Changelog](https://github.com/pallets/click/blob/master/CHANGES.rst) - [Commits](https://github.com/pallets/click/compare/6.6...7.1.2) Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> --- Pipfile | 2 +- Pipfile.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Pipfile b/Pipfile index 63872204..643aa14a 100644 --- a/Pipfile +++ b/Pipfile @@ -17,7 +17,7 @@ pytest-cov = "*" [packages] boto3 = ">=1.4.4" -click = "==6.6" +click = "==7.1.2" docutils = "*" jmespath = "==0.10.0" pyaml = "==15.8.2" diff --git a/Pipfile.lock b/Pipfile.lock index e916d20d..487b0820 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "0c63bd930fe69f9333e819963cb72bc4a0977b1111c2e512b04fa4e703ac59cf" + "sha256": "d8306053e00c8642627d117406236e2420390f8d49aab46c05c6ee8a1c9d64ce" }, "pipfile-spec": 6, "requires": {}, @@ -30,11 +30,11 @@ }, "click": { "hashes": [ - "sha256:cc6a19da8ebff6e7074f731447ef7e112bd23adf3de5c597cf9989f2fd8defe9", - "sha256:fcf697e1fd4b567d817c69dab10a4035937fe6af175c05fd6806b69f74cbc6c4" + "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a", + "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc" ], "index": "pypi", - "version": "==6.6" + "version": "==7.1.2" }, "docutils": { "hashes": [ @@ -210,11 +210,11 @@ }, "click": { "hashes": [ - "sha256:cc6a19da8ebff6e7074f731447ef7e112bd23adf3de5c597cf9989f2fd8defe9", - "sha256:fcf697e1fd4b567d817c69dab10a4035937fe6af175c05fd6806b69f74cbc6c4" + "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a", + "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc" ], "index": "pypi", - "version": "==6.6" + "version": "==7.1.2" }, "codecov": { "hashes": [ From 1dacc2abb3edf9d5d189c690d7eb2136c770cd2b Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Sat, 9 Jan 2021 02:21:57 -0800 Subject: [PATCH 117/120] Bump pyaml from 15.8.2 to 20.4.0 (#486) Bumps [pyaml](https://github.com/mk-fg/pretty-yaml) from 15.8.2 to 20.4.0. - [Release notes](https://github.com/mk-fg/pretty-yaml/releases) - [Commits](https://github.com/mk-fg/pretty-yaml/commits) Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> --- Pipfile | 2 +- Pipfile.lock | 14 ++++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/Pipfile b/Pipfile index 643aa14a..abd01c64 100644 --- a/Pipfile +++ b/Pipfile @@ -20,7 +20,7 @@ boto3 = ">=1.4.4" click = "==7.1.2" docutils = "*" jmespath = "==0.10.0" -pyaml = "==15.8.2" +pyaml = "==20.4.0" python-dateutil = "==2.8.1" PyYAML = "==5.3.1" diff --git a/Pipfile.lock b/Pipfile.lock index 487b0820..4bff1dc6 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "d8306053e00c8642627d117406236e2420390f8d49aab46c05c6ee8a1c9d64ce" + "sha256": "7013bd722325666a778f221f5ee2957a554771203428b2a50c40fe07436a04dd" }, "pipfile-spec": 6, "requires": {}, @@ -16,6 +16,7 @@ "default": { "boto3": { "hashes": [ + "sha256:7b59ca28e17256ccd900c9a8c02061ce538a24b44b4d816e803e6431f8550ee0", "sha256:e6915ac164a05367787db2416eeaa8662ae5e0b9c53902dbf23b407686ef5028" ], "index": "pypi", @@ -23,10 +24,10 @@ }, "botocore": { "hashes": [ - "sha256:549aa9619b51c5b103c7bb906497f60824576366aa4e3642b4e57f9f53a06f7d", - "sha256:b954c596f8bdf31d5fdf1eff8a2296bde8094e1e22961a79b83bb62ddeba8a49" + "sha256:76c0ce78fd2a7e9e08d038f2bba2ce10bee08e04546c7812a9654edb2dc4d496", + "sha256:b204c5b477b043c7f61cba5db479c6b25f684f7409b71a8ecdb5a6b3f57b5cb4" ], - "version": "==1.19.48" + "version": "==1.19.51" }, "click": { "hashes": [ @@ -54,10 +55,11 @@ }, "pyaml": { "hashes": [ - "sha256:9c54fb5f17b58572c4cef50affea60bb73f445ab153580dac07a12383712b5b8" + "sha256:29a5c2a68660a799103d6949167bd6c7953d031449d08802386372de1db6ad71", + "sha256:67081749a82b72c45e5f7f812ee3a14a03b3f5c25ff36ec3b290514f8c4c4b99" ], "index": "pypi", - "version": "==15.8.2" + "version": "==20.4.0" }, "python-dateutil": { "hashes": [ From 7b255b0f4e08015e0797e52cd4350f871e276cab Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Fri, 19 Mar 2021 19:46:06 +0000 Subject: [PATCH 118/120] [Security] Bump urllib3 from 1.26.2 to 1.26.3 Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.26.2 to 1.26.3. **This update includes a security fix.** - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst) - [Commits](https://github.com/urllib3/urllib3/compare/1.26.2...1.26.3) Signed-off-by: dependabot-preview[bot] --- Pipfile.lock | 394 +++++++++++++++++++++++++++------------------------ 1 file changed, 205 insertions(+), 189 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index 4bff1dc6..de75fc42 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -24,10 +24,10 @@ }, "botocore": { "hashes": [ - "sha256:76c0ce78fd2a7e9e08d038f2bba2ce10bee08e04546c7812a9654edb2dc4d496", - "sha256:b204c5b477b043c7f61cba5db479c6b25f684f7409b71a8ecdb5a6b3f57b5cb4" + "sha256:ad4adfcc195b5401d84b0c65d3a89e507c1d54c201879c8761ff10ef5c361e21", + "sha256:d3694f6ef918def8082513e5ef309cd6cd83b612e9984e3a66e8adc98c650a92" ], - "version": "==1.19.51" + "version": "==1.19.63" }, "click": { "hashes": [ @@ -90,10 +90,10 @@ }, "s3transfer": { "hashes": [ - "sha256:2482b4259524933a022d59da830f51bd746db62f047d6eb213f2f8855dcb8a13", - "sha256:921a37e2aefc64145e7b73d50c71bb4f26f46e4c9f414dc648c6245ff92cf7db" + "sha256:5d48b1fd2232141a9d5fb279709117aaba506cacea7f86f11bc392f06bfa8fc2", + "sha256:c5dadf598762899d8cfaecf68eba649cd25b0ce93b6c954b156aaa3eed160547" ], - "version": "==0.3.3" + "version": "==0.3.6" }, "six": { "hashes": [ @@ -104,11 +104,11 @@ }, "urllib3": { "hashes": [ - "sha256:19188f96923873c92ccb987120ec4acaa12f0461fa9ce5d3d0772bc965a39e08", - "sha256:d8ff90d979214d7b4f8ce956e80f4028fc6860e4431f731ea4a8c08f23f99473" + "sha256:1b465e494e3e0d8939b50680403e3aedaa2bc434b7d5af64dfd3c958d7f5ae80", + "sha256:de3eedaad74a2683334e282005cd8d7f22f4d55fa690a2a1020a416cb0a47e73" ], - "markers": "python_version != '3.4'", - "version": "==1.26.2" + "index": "pypi", + "version": "==1.26.3" } }, "develop": { @@ -135,10 +135,10 @@ }, "bleach": { "hashes": [ - "sha256:52b5919b81842b1854196eaae5ca29679a2f2e378905c346d3ca8227c2c66080", - "sha256:9f8ccbeb6183c6e6cddea37592dfb0167485c1e3b13b3363bc325aa8bda3adbd" + "sha256:6123ddc1052673e52bab52cdc955bcb57a015264a1c57d37bea2f6b817af0125", + "sha256:98b3170739e5e83dd9dc19633f074727ad848cbedb6026708c8ac2d3b697a433" ], - "version": "==3.2.1" + "version": "==3.3.0" }, "bump2version": { "hashes": [ @@ -164,44 +164,45 @@ }, "cffi": { "hashes": [ - "sha256:00a1ba5e2e95684448de9b89888ccd02c98d512064b4cb987d48f4b40aa0421e", - "sha256:00e28066507bfc3fe865a31f325c8391a1ac2916219340f87dfad602c3e48e5d", - "sha256:045d792900a75e8b1e1b0ab6787dd733a8190ffcf80e8c8ceb2fb10a29ff238a", - "sha256:0638c3ae1a0edfb77c6765d487fee624d2b1ee1bdfeffc1f0b58c64d149e7eec", - "sha256:105abaf8a6075dc96c1fe5ae7aae073f4696f2905fde6aeada4c9d2926752362", - "sha256:155136b51fd733fa94e1c2ea5211dcd4c8879869008fc811648f16541bf99668", - "sha256:1a465cbe98a7fd391d47dce4b8f7e5b921e6cd805ef421d04f5f66ba8f06086c", - "sha256:1d2c4994f515e5b485fd6d3a73d05526aa0fcf248eb135996b088d25dfa1865b", - "sha256:2c24d61263f511551f740d1a065eb0212db1dbbbbd241db758f5244281590c06", - "sha256:51a8b381b16ddd370178a65360ebe15fbc1c71cf6f584613a7ea08bfad946698", - "sha256:594234691ac0e9b770aee9fcdb8fa02c22e43e5c619456efd0d6c2bf276f3eb2", - "sha256:5cf4be6c304ad0b6602f5c4e90e2f59b47653ac1ed9c662ed379fe48a8f26b0c", - "sha256:64081b3f8f6f3c3de6191ec89d7dc6c86a8a43911f7ecb422c60e90c70be41c7", - "sha256:6bc25fc545a6b3d57b5f8618e59fc13d3a3a68431e8ca5fd4c13241cd70d0009", - "sha256:798caa2a2384b1cbe8a2a139d80734c9db54f9cc155c99d7cc92441a23871c03", - "sha256:7c6b1dece89874d9541fc974917b631406233ea0440d0bdfbb8e03bf39a49b3b", - "sha256:840793c68105fe031f34d6a086eaea153a0cd5c491cde82a74b420edd0a2b909", - "sha256:8d6603078baf4e11edc4168a514c5ce5b3ba6e3e9c374298cb88437957960a53", - "sha256:9cc46bc107224ff5b6d04369e7c595acb700c3613ad7bcf2e2012f62ece80c35", - "sha256:9f7a31251289b2ab6d4012f6e83e58bc3b96bd151f5b5262467f4bb6b34a7c26", - "sha256:9ffb888f19d54a4d4dfd4b3f29bc2c16aa4972f1c2ab9c4ab09b8ab8685b9c2b", - "sha256:a5ed8c05548b54b998b9498753fb9cadbfd92ee88e884641377d8a8b291bcc01", - "sha256:a7711edca4dcef1a75257b50a2fbfe92a65187c47dab5a0f1b9b332c5919a3fb", - "sha256:af5c59122a011049aad5dd87424b8e65a80e4a6477419c0c1015f73fb5ea0293", - "sha256:b18e0a9ef57d2b41f5c68beefa32317d286c3d6ac0484efd10d6e07491bb95dd", - "sha256:b4e248d1087abf9f4c10f3c398896c87ce82a9856494a7155823eb45a892395d", - "sha256:ba4e9e0ae13fc41c6b23299545e5ef73055213e466bd107953e4a013a5ddd7e3", - "sha256:c6332685306b6417a91b1ff9fae889b3ba65c2292d64bd9245c093b1b284809d", - "sha256:d5ff0621c88ce83a28a10d2ce719b2ee85635e85c515f12bac99a95306da4b2e", - "sha256:d9efd8b7a3ef378dd61a1e77367f1924375befc2eba06168b6ebfa903a5e59ca", - "sha256:df5169c4396adc04f9b0a05f13c074df878b6052430e03f50e68adf3a57aa28d", - "sha256:ebb253464a5d0482b191274f1c8bf00e33f7e0b9c66405fbffc61ed2c839c775", - "sha256:ec80dc47f54e6e9a78181ce05feb71a0353854cc26999db963695f950b5fb375", - "sha256:f032b34669220030f905152045dfa27741ce1a6db3324a5bc0b96b6c7420c87b", - "sha256:f60567825f791c6f8a592f3c6e3bd93dd2934e3f9dac189308426bd76b00ef3b", - "sha256:f803eaa94c2fcda012c047e62bc7a51b0bdabda1cad7a92a522694ea2d76e49f" - ], - "version": "==1.14.4" + "sha256:005a36f41773e148deac64b08f233873a4d0c18b053d37da83f6af4d9087b813", + "sha256:0857f0ae312d855239a55c81ef453ee8fd24136eaba8e87a2eceba644c0d4c06", + "sha256:1071534bbbf8cbb31b498d5d9db0f274f2f7a865adca4ae429e147ba40f73dea", + "sha256:158d0d15119b4b7ff6b926536763dc0714313aa59e320ddf787502c70c4d4bee", + "sha256:1f436816fc868b098b0d63b8920de7d208c90a67212546d02f84fe78a9c26396", + "sha256:2894f2df484ff56d717bead0a5c2abb6b9d2bf26d6960c4604d5c48bbc30ee73", + "sha256:29314480e958fd8aab22e4a58b355b629c59bf5f2ac2492b61e3dc06d8c7a315", + "sha256:34eff4b97f3d982fb93e2831e6750127d1355a923ebaeeb565407b3d2f8d41a1", + "sha256:35f27e6eb43380fa080dccf676dece30bef72e4a67617ffda586641cd4508d49", + "sha256:3d3dd4c9e559eb172ecf00a2a7517e97d1e96de2a5e610bd9b68cea3925b4892", + "sha256:43e0b9d9e2c9e5d152946b9c5fe062c151614b262fda2e7b201204de0b99e482", + "sha256:48e1c69bbacfc3d932221851b39d49e81567a4d4aac3b21258d9c24578280058", + "sha256:51182f8927c5af975fece87b1b369f722c570fe169f9880764b1ee3bca8347b5", + "sha256:58e3f59d583d413809d60779492342801d6e82fefb89c86a38e040c16883be53", + "sha256:5de7970188bb46b7bf9858eb6890aad302577a5f6f75091fd7cdd3ef13ef3045", + "sha256:65fa59693c62cf06e45ddbb822165394a288edce9e276647f0046e1ec26920f3", + "sha256:69e395c24fc60aad6bb4fa7e583698ea6cc684648e1ffb7fe85e3c1ca131a7d5", + "sha256:6c97d7350133666fbb5cf4abdc1178c812cb205dc6f41d174a7b0f18fb93337e", + "sha256:6e4714cc64f474e4d6e37cfff31a814b509a35cb17de4fb1999907575684479c", + "sha256:72d8d3ef52c208ee1c7b2e341f7d71c6fd3157138abf1a95166e6165dd5d4369", + "sha256:8ae6299f6c68de06f136f1f9e69458eae58f1dacf10af5c17353eae03aa0d827", + "sha256:8b198cec6c72df5289c05b05b8b0969819783f9418e0409865dac47288d2a053", + "sha256:99cd03ae7988a93dd00bcd9d0b75e1f6c426063d6f03d2f90b89e29b25b82dfa", + "sha256:9cf8022fb8d07a97c178b02327b284521c7708d7c71a9c9c355c178ac4bbd3d4", + "sha256:9de2e279153a443c656f2defd67769e6d1e4163952b3c622dcea5b08a6405322", + "sha256:9e93e79c2551ff263400e1e4be085a1210e12073a31c2011dbbda14bda0c6132", + "sha256:9ff227395193126d82e60319a673a037d5de84633f11279e336f9c0f189ecc62", + "sha256:a465da611f6fa124963b91bf432d960a555563efe4ed1cc403ba5077b15370aa", + "sha256:ad17025d226ee5beec591b52800c11680fca3df50b8b29fe51d882576e039ee0", + "sha256:afb29c1ba2e5a3736f1c301d9d0abe3ec8b86957d04ddfa9d7a6a42b9367e396", + "sha256:b85eb46a81787c50650f2392b9b4ef23e1f126313b9e0e9013b35c15e4288e2e", + "sha256:bb89f306e5da99f4d922728ddcd6f7fcebb3241fc40edebcb7284d7514741991", + "sha256:cbde590d4faaa07c72bf979734738f328d239913ba3e043b1e98fe9a39f8b2b6", + "sha256:cd2868886d547469123fadc46eac7ea5253ea7fcb139f12e1dfc2bbd406427d1", + "sha256:d42b11d692e11b6634f7613ad8df5d6d5f8875f5d48939520d351007b3c13406", + "sha256:f2d45f97ab6bb54753eab54fffe75aaf3de4ff2341c9daee1987ee1837636f1d", + "sha256:fd78e5fee591709f32ef6edb9a015b4aa1a5022598e36227500c8f4e02328d9c" + ], + "version": "==1.14.5" }, "chardet": { "hashes": [ @@ -235,57 +236,60 @@ }, "coverage": { "hashes": [ - "sha256:08b3ba72bd981531fd557f67beee376d6700fba183b167857038997ba30dd297", - "sha256:2757fa64e11ec12220968f65d086b7a29b6583d16e9a544c889b22ba98555ef1", - "sha256:3102bb2c206700a7d28181dbe04d66b30780cde1d1c02c5f3c165cf3d2489497", - "sha256:3498b27d8236057def41de3585f317abae235dd3a11d33e01736ffedb2ef8606", - "sha256:378ac77af41350a8c6b8801a66021b52da8a05fd77e578b7380e876c0ce4f528", - "sha256:38f16b1317b8dd82df67ed5daa5f5e7c959e46579840d77a67a4ceb9cef0a50b", - "sha256:3911c2ef96e5ddc748a3c8b4702c61986628bb719b8378bf1e4a6184bbd48fe4", - "sha256:3a3c3f8863255f3c31db3889f8055989527173ef6192a283eb6f4db3c579d830", - "sha256:3b14b1da110ea50c8bcbadc3b82c3933974dbeea1832e814aab93ca1163cd4c1", - "sha256:535dc1e6e68fad5355f9984d5637c33badbdc987b0c0d303ee95a6c979c9516f", - "sha256:6f61319e33222591f885c598e3e24f6a4be3533c1d70c19e0dc59e83a71ce27d", - "sha256:723d22d324e7997a651478e9c5a3120a0ecbc9a7e94071f7e1954562a8806cf3", - "sha256:76b2775dda7e78680d688daabcb485dc87cf5e3184a0b3e012e1d40e38527cc8", - "sha256:782a5c7df9f91979a7a21792e09b34a658058896628217ae6362088b123c8500", - "sha256:7e4d159021c2029b958b2363abec4a11db0ce8cd43abb0d9ce44284cb97217e7", - "sha256:8dacc4073c359f40fcf73aede8428c35f84639baad7e1b46fce5ab7a8a7be4bb", - "sha256:8f33d1156241c43755137288dea619105477961cfa7e47f48dbf96bc2c30720b", - "sha256:8ffd4b204d7de77b5dd558cdff986a8274796a1e57813ed005b33fd97e29f059", - "sha256:93a280c9eb736a0dcca19296f3c30c720cb41a71b1f9e617f341f0a8e791a69b", - "sha256:9a4f66259bdd6964d8cf26142733c81fb562252db74ea367d9beb4f815478e72", - "sha256:9a9d4ff06804920388aab69c5ea8a77525cf165356db70131616acd269e19b36", - "sha256:a2070c5affdb3a5e751f24208c5c4f3d5f008fa04d28731416e023c93b275277", - "sha256:a4857f7e2bc6921dbd487c5c88b84f5633de3e7d416c4dc0bb70256775551a6c", - "sha256:a607ae05b6c96057ba86c811d9c43423f35e03874ffb03fbdcd45e0637e8b631", - "sha256:a66ca3bdf21c653e47f726ca57f46ba7fc1f260ad99ba783acc3e58e3ebdb9ff", - "sha256:ab110c48bc3d97b4d19af41865e14531f300b482da21783fdaacd159251890e8", - "sha256:b239711e774c8eb910e9b1ac719f02f5ae4bf35fa0420f438cdc3a7e4e7dd6ec", - "sha256:be0416074d7f253865bb67630cf7210cbc14eb05f4099cc0f82430135aaa7a3b", - "sha256:c46643970dff9f5c976c6512fd35768c4a3819f01f61169d8cdac3f9290903b7", - "sha256:c5ec71fd4a43b6d84ddb88c1df94572479d9a26ef3f150cef3dacefecf888105", - "sha256:c6e5174f8ca585755988bc278c8bb5d02d9dc2e971591ef4a1baabdf2d99589b", - "sha256:c89b558f8a9a5a6f2cfc923c304d49f0ce629c3bd85cb442ca258ec20366394c", - "sha256:cc44e3545d908ecf3e5773266c487ad1877be718d9dc65fc7eb6e7d14960985b", - "sha256:cc6f8246e74dd210d7e2b56c76ceaba1cc52b025cd75dbe96eb48791e0250e98", - "sha256:cd556c79ad665faeae28020a0ab3bda6cd47d94bec48e36970719b0b86e4dcf4", - "sha256:ce6f3a147b4b1a8b09aae48517ae91139b1b010c5f36423fa2b866a8b23df879", - "sha256:ceb499d2b3d1d7b7ba23abe8bf26df5f06ba8c71127f188333dddcf356b4b63f", - "sha256:cef06fb382557f66d81d804230c11ab292d94b840b3cb7bf4450778377b592f4", - "sha256:e448f56cfeae7b1b3b5bcd99bb377cde7c4eb1970a525c770720a352bc4c8044", - "sha256:e52d3d95df81c8f6b2a1685aabffadf2d2d9ad97203a40f8d61e51b70f191e4e", - "sha256:ee2f1d1c223c3d2c24e3afbb2dd38be3f03b1a8d6a83ee3d9eb8c36a52bee899", - "sha256:f2c6888eada180814b8583c3e793f3f343a692fc802546eed45f40a001b1169f", - "sha256:f51dbba78d68a44e99d484ca8c8f604f17e957c1ca09c3ebc2c7e3bbd9ba0448", - "sha256:f54de00baf200b4539a5a092a759f000b5f45fd226d6d25a76b0dff71177a714", - "sha256:fa10fee7e32213f5c7b0d6428ea92e3a3fdd6d725590238a3f92c0de1c78b9d2", - "sha256:fabeeb121735d47d8eab8671b6b031ce08514c86b7ad8f7d5490a7b6dcd6267d", - "sha256:fac3c432851038b3e6afe086f777732bcf7f6ebbfd90951fa04ee53db6d0bcdd", - "sha256:fda29412a66099af6d6de0baa6bd7c52674de177ec2ad2630ca264142d69c6c7", - "sha256:ff1330e8bc996570221b450e2d539134baa9465f5cb98aff0e0f73f34172e0ae" - ], - "version": "==5.3.1" + "sha256:004d1880bed2d97151facef49f08e255a20ceb6f9432df75f4eef018fdd5a78c", + "sha256:01d84219b5cdbfc8122223b39a954820929497a1cb1422824bb86b07b74594b6", + "sha256:040af6c32813fa3eae5305d53f18875bedd079960822ef8ec067a66dd8afcd45", + "sha256:06191eb60f8d8a5bc046f3799f8a07a2d7aefb9504b0209aff0b47298333302a", + "sha256:13034c4409db851670bc9acd836243aeee299949bd5673e11844befcb0149f03", + "sha256:13c4ee887eca0f4c5a247b75398d4114c37882658300e153113dafb1d76de529", + "sha256:184a47bbe0aa6400ed2d41d8e9ed868b8205046518c52464fde713ea06e3a74a", + "sha256:18ba8bbede96a2c3dde7b868de9dcbd55670690af0988713f0603f037848418a", + "sha256:1aa846f56c3d49205c952d8318e76ccc2ae23303351d9270ab220004c580cfe2", + "sha256:217658ec7187497e3f3ebd901afdca1af062b42cfe3e0dafea4cced3983739f6", + "sha256:24d4a7de75446be83244eabbff746d66b9240ae020ced65d060815fac3423759", + "sha256:2910f4d36a6a9b4214bb7038d537f015346f413a975d57ca6b43bf23d6563b53", + "sha256:2949cad1c5208b8298d5686d5a85b66aae46d73eec2c3e08c817dd3513e5848a", + "sha256:2a3859cb82dcbda1cfd3e6f71c27081d18aa251d20a17d87d26d4cd216fb0af4", + "sha256:2cafbbb3af0733db200c9b5f798d18953b1a304d3f86a938367de1567f4b5bff", + "sha256:2e0d881ad471768bf6e6c2bf905d183543f10098e3b3640fc029509530091502", + "sha256:30c77c1dc9f253283e34c27935fded5015f7d1abe83bc7821680ac444eaf7793", + "sha256:3487286bc29a5aa4b93a072e9592f22254291ce96a9fbc5251f566b6b7343cdb", + "sha256:372da284cfd642d8e08ef606917846fa2ee350f64994bebfbd3afb0040436905", + "sha256:41179b8a845742d1eb60449bdb2992196e211341818565abded11cfa90efb821", + "sha256:44d654437b8ddd9eee7d1eaee28b7219bec228520ff809af170488fd2fed3e2b", + "sha256:4a7697d8cb0f27399b0e393c0b90f0f1e40c82023ea4d45d22bce7032a5d7b81", + "sha256:51cb9476a3987c8967ebab3f0fe144819781fca264f57f89760037a2ea191cb0", + "sha256:52596d3d0e8bdf3af43db3e9ba8dcdaac724ba7b5ca3f6358529d56f7a166f8b", + "sha256:53194af30d5bad77fcba80e23a1441c71abfb3e01192034f8246e0d8f99528f3", + "sha256:5fec2d43a2cc6965edc0bb9e83e1e4b557f76f843a77a2496cbe719583ce8184", + "sha256:6c90e11318f0d3c436a42409f2749ee1a115cd8b067d7f14c148f1ce5574d701", + "sha256:74d881fc777ebb11c63736622b60cb9e4aee5cace591ce274fb69e582a12a61a", + "sha256:7501140f755b725495941b43347ba8a2777407fc7f250d4f5a7d2a1050ba8e82", + "sha256:796c9c3c79747146ebd278dbe1e5c5c05dd6b10cc3bcb8389dfdf844f3ead638", + "sha256:869a64f53488f40fa5b5b9dcb9e9b2962a66a87dab37790f3fcfb5144b996ef5", + "sha256:8963a499849a1fc54b35b1c9f162f4108017b2e6db2c46c1bed93a72262ed083", + "sha256:8d0a0725ad7c1a0bcd8d1b437e191107d457e2ec1084b9f190630a4fb1af78e6", + "sha256:900fbf7759501bc7807fd6638c947d7a831fc9fdf742dc10f02956ff7220fa90", + "sha256:92b017ce34b68a7d67bd6d117e6d443a9bf63a2ecf8567bb3d8c6c7bc5014465", + "sha256:970284a88b99673ccb2e4e334cfb38a10aab7cd44f7457564d11898a74b62d0a", + "sha256:972c85d205b51e30e59525694670de6a8a89691186012535f9d7dbaa230e42c3", + "sha256:9a1ef3b66e38ef8618ce5fdc7bea3d9f45f3624e2a66295eea5e57966c85909e", + "sha256:af0e781009aaf59e25c5a678122391cb0f345ac0ec272c7961dc5455e1c40066", + "sha256:b6d534e4b2ab35c9f93f46229363e17f63c53ad01330df9f2d6bd1187e5eaacf", + "sha256:b7895207b4c843c76a25ab8c1e866261bcfe27bfaa20c192de5190121770672b", + "sha256:c0891a6a97b09c1f3e073a890514d5012eb256845c451bd48f7968ef939bf4ae", + "sha256:c2723d347ab06e7ddad1a58b2a821218239249a9e4365eaff6649d31180c1669", + "sha256:d1f8bf7b90ba55699b3a5e44930e93ff0189aa27186e96071fac7dd0d06a1873", + "sha256:d1f9ce122f83b2305592c11d64f181b87153fc2c2bbd3bb4a3dde8303cfb1a6b", + "sha256:d314ed732c25d29775e84a960c3c60808b682c08d86602ec2c3008e1202e3bb6", + "sha256:d636598c8305e1f90b439dbf4f66437de4a5e3c31fdf47ad29542478c8508bbb", + "sha256:deee1077aae10d8fa88cb02c845cfba9b62c55e1183f52f6ae6a2df6a2187160", + "sha256:ebe78fe9a0e874362175b02371bdfbee64d8edc42a044253ddf4ee7d3c15212c", + "sha256:f030f8873312a16414c0d8e1a1ddff2d3235655a2174e3648b4fa66b3f2f1079", + "sha256:f0b278ce10936db1a37e6954e15a3730bea96a0997c26d7fee88e6c396c2086d", + "sha256:f11642dddbb0253cc8853254301b51390ba0081750a8ac03f20ea8103f0c56b6" + ], + "version": "==5.5" }, "coveralls": { "hashes": [ @@ -297,22 +301,20 @@ }, "cryptography": { "hashes": [ - "sha256:0003a52a123602e1acee177dc90dd201f9bb1e73f24a070db7d36c588e8f5c7d", - "sha256:0e85aaae861d0485eb5a79d33226dd6248d2a9f133b81532c8f5aae37de10ff7", - "sha256:594a1db4511bc4d960571536abe21b4e5c3003e8750ab8365fafce71c5d86901", - "sha256:69e836c9e5ff4373ce6d3ab311c1a2eed274793083858d3cd4c7d12ce20d5f9c", - "sha256:788a3c9942df5e4371c199d10383f44a105d67d401fb4304178020142f020244", - "sha256:7e177e4bea2de937a584b13645cab32f25e3d96fc0bc4a4cf99c27dc77682be6", - "sha256:83d9d2dfec70364a74f4e7c70ad04d3ca2e6a08b703606993407bf46b97868c5", - "sha256:84ef7a0c10c24a7773163f917f1cb6b4444597efd505a8aed0a22e8c4780f27e", - "sha256:9e21301f7a1e7c03dbea73e8602905a4ebba641547a462b26dd03451e5769e7c", - "sha256:9f6b0492d111b43de5f70052e24c1f0951cb9e6022188ebcb1cc3a3d301469b0", - "sha256:a69bd3c68b98298f490e84519b954335154917eaab52cf582fa2c5c7efc6e812", - "sha256:b4890d5fb9b7a23e3bf8abf5a8a7da8e228f1e97dc96b30b95685df840b6914a", - "sha256:c366df0401d1ec4e548bebe8f91d55ebcc0ec3137900d214dd7aac8427ef3030", - "sha256:dc42f645f8f3a489c3dd416730a514e7a91a59510ddaadc09d04224c098d3302" - ], - "version": "==3.3.1" + "sha256:066bc53f052dfeda2f2d7c195cf16fb3e5ff13e1b6b7415b468514b40b381a5b", + "sha256:0923ba600d00718d63a3976f23cab19aef10c1765038945628cd9be047ad0336", + "sha256:2d32223e5b0ee02943f32b19245b61a62db83a882f0e76cc564e1cec60d48f87", + "sha256:4169a27b818de4a1860720108b55a2801f32b6ae79e7f99c00d79f2a2822eeb7", + "sha256:57ad77d32917bc55299b16d3b996ffa42a1c73c6cfa829b14043c561288d2799", + "sha256:5ecf2bcb34d17415e89b546dbb44e73080f747e504273e4d4987630493cded1b", + "sha256:600cf9bfe75e96d965509a4c0b2b183f74a4fa6f5331dcb40fb7b77b7c2484df", + "sha256:66b57a9ca4b3221d51b237094b0303843b914b7d5afd4349970bb26518e350b0", + "sha256:93cfe5b7ff006de13e1e89830810ecbd014791b042cbe5eec253be11ac2b28f3", + "sha256:9e98b452132963678e3ac6c73f7010fe53adf72209a32854d55690acac3f6724", + "sha256:df186fcbf86dc1ce56305becb8434e4b6b7504bc724b71ad7a3239e0c9d14ef2", + "sha256:fec7fb46b10da10d9e1d078d1ff8ed9e05ae14f431fdbd11145edd0550b9a964" + ], + "version": "==3.4.6" }, "distlib": { "hashes": [ @@ -357,6 +359,13 @@ ], "version": "==2.10" }, + "importlib-metadata": { + "hashes": [ + "sha256:742add720a20d0467df2f444ae41704000f50e1234f46174b51f9c6031a1bd71", + "sha256:b74159469b464a99cb8cc3e21973e4d96e05d3024d337313fedb618a6e86e6f4" + ], + "version": "==3.7.3" + }, "iniconfig": { "hashes": [ "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3", @@ -374,10 +383,10 @@ }, "keyring": { "hashes": [ - "sha256:1746d3ac913d449a090caf11e9e4af00e26c3f7f7e81027872192b2398b98675", - "sha256:4be9cbaaaf83e61d6399f733d113ede7d1c73bc75cb6aeb64eee0f6ac39b30ea" + "sha256:237ff44888ba9b3918a7dcb55c8f1db909c95b6f071bfb46c6918f33f453a68a", + "sha256:29f407fd5509c014a6086f17338c70215c8d1ab42d5d49e0254273bc0a64bbfc" ], - "version": "==21.8.0" + "version": "==23.0.0" }, "mccabe": { "hashes": [ @@ -395,10 +404,10 @@ }, "packaging": { "hashes": [ - "sha256:24e0da08660a87484d1602c30bb4902d74816b6985b93de36926f5bc95741858", - "sha256:78598185a7008a470d64526a8059de9aaa449238f280fc9eb6b13ba6c4109093" + "sha256:5b327ac1320dc863dca72f4514ecc086f31186744b84a230374cc1fd776feae5", + "sha256:67714da7f7bc052e064859c05c595155bd1ee9f69f76557e21f051443c20947a" ], - "version": "==20.8" + "version": "==20.9" }, "pathspec": { "hashes": [ @@ -431,10 +440,10 @@ }, "pkginfo": { "hashes": [ - "sha256:a6a4ac943b496745cec21f14f021bbd869d5e9b4f6ec06918cffea5a2f4b9193", - "sha256:ce14d7296c673dc4c61c759a0b6c14bae34e34eb819c0017bb6ca5b7292c56e9" + "sha256:029a70cb45c6171c329dfc890cde0879f8c52d6f3922794796e06f577bb03db4", + "sha256:9fdbea6495622e022cc72c2e5e1b735218e4ffb2a2a69cde2694a6c1f16afb75" ], - "version": "==1.6.1" + "version": "==1.7.0" }, "pluggy": { "hashes": [ @@ -473,10 +482,10 @@ }, "pygments": { "hashes": [ - "sha256:ccf3acacf3782cbed4a989426012f1c535c9a90d3a7fc3f16d231b9372d2b716", - "sha256:f275b6c0909e5dafd2d6269a656aa90fa58ebf4a74f8fcf9053195d226b24a08" + "sha256:2656e1a6edcdabf4275f9a3640db59fd5de107d88e8663c5d4e9a0fa62f77f94", + "sha256:534ef71d539ae97d4c3a4cf7d6f110f214b0e687e92f9cb9d2a3b0d3101289c8" ], - "version": "==2.7.3" + "version": "==2.8.1" }, "pyparsing": { "hashes": [ @@ -503,56 +512,56 @@ }, "readme-renderer": { "hashes": [ - "sha256:267854ac3b1530633c2394ead828afcd060fc273217c42ac36b6be9c42cd9a9d", - "sha256:6b7e5aa59210a40de72eb79931491eaf46fefca2952b9181268bd7c7c65c260a" + "sha256:63b4075c6698fcfa78e584930f07f39e05d46f3ec97f65006e430b595ca6348c", + "sha256:92fd5ac2bf8677f310f3303aa4bce5b9d5f9f2094ab98c29f13791d7b805a3db" ], - "version": "==28.0" + "version": "==29.0" }, "regex": { "hashes": [ - "sha256:02951b7dacb123d8ea6da44fe45ddd084aa6777d4b2454fa0da61d569c6fa538", - "sha256:0d08e71e70c0237883d0bef12cad5145b84c3705e9c6a588b2a9c7080e5af2a4", - "sha256:1862a9d9194fae76a7aaf0150d5f2a8ec1da89e8b55890b1786b8f88a0f619dc", - "sha256:1ab79fcb02b930de09c76d024d279686ec5d532eb814fd0ed1e0051eb8bd2daa", - "sha256:1fa7ee9c2a0e30405e21031d07d7ba8617bc590d391adfc2b7f1e8b99f46f444", - "sha256:262c6825b309e6485ec2493ffc7e62a13cf13fb2a8b6d212f72bd53ad34118f1", - "sha256:2a11a3e90bd9901d70a5b31d7dd85114755a581a5da3fc996abfefa48aee78af", - "sha256:2c99e97d388cd0a8d30f7c514d67887d8021541b875baf09791a3baad48bb4f8", - "sha256:3128e30d83f2e70b0bed9b2a34e92707d0877e460b402faca908c6667092ada9", - "sha256:38c8fd190db64f513fe4e1baa59fed086ae71fa45083b6936b52d34df8f86a88", - "sha256:3bddc701bdd1efa0d5264d2649588cbfda549b2899dc8d50417e47a82e1387ba", - "sha256:4902e6aa086cbb224241adbc2f06235927d5cdacffb2425c73e6570e8d862364", - "sha256:49cae022fa13f09be91b2c880e58e14b6da5d10639ed45ca69b85faf039f7a4e", - "sha256:56e01daca75eae420bce184edd8bb341c8eebb19dd3bce7266332258f9fb9dd7", - "sha256:5862975b45d451b6db51c2e654990c1820523a5b07100fc6903e9c86575202a0", - "sha256:6a8ce43923c518c24a2579fda49f093f1397dad5d18346211e46f134fc624e31", - "sha256:6c54ce4b5d61a7129bad5c5dc279e222afd00e721bf92f9ef09e4fae28755683", - "sha256:6e4b08c6f8daca7d8f07c8d24e4331ae7953333dbd09c648ed6ebd24db5a10ee", - "sha256:717881211f46de3ab130b58ec0908267961fadc06e44f974466d1887f865bd5b", - "sha256:749078d1eb89484db5f34b4012092ad14b327944ee7f1c4f74d6279a6e4d1884", - "sha256:7913bd25f4ab274ba37bc97ad0e21c31004224ccb02765ad984eef43e04acc6c", - "sha256:7a25fcbeae08f96a754b45bdc050e1fb94b95cab046bf56b016c25e9ab127b3e", - "sha256:83d6b356e116ca119db8e7c6fc2983289d87b27b3fac238cfe5dca529d884562", - "sha256:8b882a78c320478b12ff024e81dc7d43c1462aa4a3341c754ee65d857a521f85", - "sha256:8f6a2229e8ad946e36815f2a03386bb8353d4bde368fdf8ca5f0cb97264d3b5c", - "sha256:9801c4c1d9ae6a70aeb2128e5b4b68c45d4f0af0d1535500884d644fa9b768c6", - "sha256:a15f64ae3a027b64496a71ab1f722355e570c3fac5ba2801cafce846bf5af01d", - "sha256:a3d748383762e56337c39ab35c6ed4deb88df5326f97a38946ddd19028ecce6b", - "sha256:a63f1a07932c9686d2d416fb295ec2c01ab246e89b4d58e5fa468089cab44b70", - "sha256:b2b1a5ddae3677d89b686e5c625fc5547c6e492bd755b520de5332773a8af06b", - "sha256:b2f4007bff007c96a173e24dcda236e5e83bde4358a557f9ccf5e014439eae4b", - "sha256:baf378ba6151f6e272824b86a774326f692bc2ef4cc5ce8d5bc76e38c813a55f", - "sha256:bafb01b4688833e099d79e7efd23f99172f501a15c44f21ea2118681473fdba0", - "sha256:bba349276b126947b014e50ab3316c027cac1495992f10e5682dc677b3dfa0c5", - "sha256:c084582d4215593f2f1d28b65d2a2f3aceff8342aa85afd7be23a9cad74a0de5", - "sha256:d1ebb090a426db66dd80df8ca85adc4abfcbad8a7c2e9a5ec7513ede522e0a8f", - "sha256:d2d8ce12b7c12c87e41123997ebaf1a5767a5be3ec545f64675388970f415e2e", - "sha256:e32f5f3d1b1c663af7f9c4c1e72e6ffe9a78c03a31e149259f531e0fed826512", - "sha256:e3faaf10a0d1e8e23a9b51d1900b72e1635c2d5b0e1bea1c18022486a8e2e52d", - "sha256:f7d29a6fc4760300f86ae329e3b6ca28ea9c20823df123a2ea8693e967b29917", - "sha256:f8f295db00ef5f8bae530fc39af0b40486ca6068733fb860b42115052206466f" - ], - "version": "==2020.11.13" + "sha256:07ef35301b4484bce843831e7039a84e19d8d33b3f8b2f9aab86c376813d0139", + "sha256:13f50969028e81765ed2a1c5fcfdc246c245cf8d47986d5172e82ab1a0c42ee5", + "sha256:14de88eda0976020528efc92d0a1f8830e2fb0de2ae6005a6fc4e062553031fa", + "sha256:159fac1a4731409c830d32913f13f68346d6b8e39650ed5d704a9ce2f9ef9cb3", + "sha256:18e25e0afe1cf0f62781a150c1454b2113785401ba285c745acf10c8ca8917df", + "sha256:201e2619a77b21a7780580ab7b5ce43835e242d3e20fef50f66a8df0542e437f", + "sha256:360a01b5fa2ad35b3113ae0c07fb544ad180603fa3b1f074f52d98c1096fa15e", + "sha256:39c44532d0e4f1639a89e52355b949573e1e2c5116106a395642cbbae0ff9bcd", + "sha256:3d9356add82cff75413bec360c1eca3e58db4a9f5dafa1f19650958a81e3249d", + "sha256:3d9a7e215e02bd7646a91fb8bcba30bc55fd42a719d6b35cf80e5bae31d9134e", + "sha256:4651f839dbde0816798e698626af6a2469eee6d9964824bb5386091255a1694f", + "sha256:486a5f8e11e1f5bbfcad87f7c7745eb14796642323e7e1829a331f87a713daaa", + "sha256:4b8a1fb724904139149a43e172850f35aa6ea97fb0545244dc0b805e0154ed68", + "sha256:4c0788010a93ace8a174d73e7c6c9d3e6e3b7ad99a453c8ee8c975ddd9965643", + "sha256:4c2e364491406b7888c2ad4428245fc56c327e34a5dfe58fd40df272b3c3dab3", + "sha256:575a832e09d237ae5fedb825a7a5bc6a116090dd57d6417d4f3b75121c73e3be", + "sha256:5770a51180d85ea468234bc7987f5597803a4c3d7463e7323322fe4a1b181578", + "sha256:633497504e2a485a70a3268d4fc403fe3063a50a50eed1039083e9471ad0101c", + "sha256:63f3ca8451e5ff7133ffbec9eda641aeab2001be1a01878990f6c87e3c44b9d5", + "sha256:709f65bb2fa9825f09892617d01246002097f8f9b6dde8d1bb4083cf554701ba", + "sha256:808404898e9a765e4058bf3d7607d0629000e0a14a6782ccbb089296b76fa8fe", + "sha256:882f53afe31ef0425b405a3f601c0009b44206ea7f55ee1c606aad3cc213a52c", + "sha256:8bd4f91f3fb1c9b1380d6894bd5b4a519409135bec14c0c80151e58394a4e88a", + "sha256:8e65e3e4c6feadf6770e2ad89ad3deb524bcb03d8dc679f381d0568c024e0deb", + "sha256:976a54d44fd043d958a69b18705a910a8376196c6b6ee5f2596ffc11bff4420d", + "sha256:a0d04128e005142260de3733591ddf476e4902c0c23c1af237d9acf3c96e1b38", + "sha256:a0df9a0ad2aad49ea3c7f65edd2ffb3d5c59589b85992a6006354f6fb109bb18", + "sha256:a2ee026f4156789df8644d23ef423e6194fad0bc53575534101bb1de5d67e8ce", + "sha256:a59a2ee329b3de764b21495d78c92ab00b4ea79acef0f7ae8c1067f773570afa", + "sha256:b97ec5d299c10d96617cc851b2e0f81ba5d9d6248413cd374ef7f3a8871ee4a6", + "sha256:b98bc9db003f1079caf07b610377ed1ac2e2c11acc2bea4892e28cc5b509d8d5", + "sha256:b9d8d286c53fe0cbc6d20bf3d583cabcd1499d89034524e3b94c93a5ab85ca90", + "sha256:bcd945175c29a672f13fce13a11893556cd440e37c1b643d6eeab1988c8b209c", + "sha256:c66221e947d7207457f8b6f42b12f613b09efa9669f65a587a2a71f6a0e4d106", + "sha256:c782da0e45aff131f0bed6e66fbcfa589ff2862fc719b83a88640daa01a5aff7", + "sha256:cb4ee827857a5ad9b8ae34d3c8cc51151cb4a3fe082c12ec20ec73e63cc7c6f0", + "sha256:d47d359545b0ccad29d572ecd52c9da945de7cd6cf9c0cfcb0269f76d3555689", + "sha256:dc9963aacb7da5177e40874585d7407c0f93fb9d7518ec58b86e562f633f36cd", + "sha256:ea2f41445852c660ba7c3ebf7d70b3779b20d9ca8ba54485a17740db49f46932", + "sha256:f5d0c921c99297354cecc5a416ee4280bd3f20fd81b9fb671ca6be71499c3fdf", + "sha256:f85d6f41e34f6a2d1607e312820971872944f1661a73d33e1e82d35ea3305e14" + ], + "version": "==2021.3.17" }, "requests": { "hashes": [ @@ -577,11 +586,11 @@ }, "secretstorage": { "hashes": [ - "sha256:30cfdef28829dad64d6ea1ed08f8eff6aa115a77068926bcc9f5225d5a3246aa", - "sha256:5c36f6537a523ec5f969ef9fad61c98eb9e017bc601d811e53aa25bece64892f" + "sha256:422d82c36172d88d6a0ed5afdec956514b189ddbfb72fefab0c8a1cee4eaf71f", + "sha256:fd666c51a6bf200643495a04abb261f83229dcb6fd8472ec393df7ffc8b6f195" ], "markers": "sys_platform == 'linux'", - "version": "==3.3.0" + "version": "==3.3.1" }, "six": { "hashes": [ @@ -599,10 +608,10 @@ }, "tqdm": { "hashes": [ - "sha256:556c55b081bd9aa746d34125d024b73f0e2a0e62d5927ff0e400e20ee0a03b9a", - "sha256:b8b46036fd00176d0870307123ef06bb851096964fa7fc578d789f90ce82c3e4" + "sha256:9fdf349068d047d4cfbe24862c425883af1db29bcddf4b0eeb2524f6fbdb23c7", + "sha256:d666ae29164da3e517fcf125e41d4fe96e5bb375cd87ff9763f6b38b5592fe33" ], - "version": "==4.55.1" + "version": "==4.59.0" }, "twine": { "hashes": [ @@ -657,18 +666,18 @@ }, "urllib3": { "hashes": [ - "sha256:19188f96923873c92ccb987120ec4acaa12f0461fa9ce5d3d0772bc965a39e08", - "sha256:d8ff90d979214d7b4f8ce956e80f4028fc6860e4431f731ea4a8c08f23f99473" + "sha256:1b465e494e3e0d8939b50680403e3aedaa2bc434b7d5af64dfd3c958d7f5ae80", + "sha256:de3eedaad74a2683334e282005cd8d7f22f4d55fa690a2a1020a416cb0a47e73" ], - "markers": "python_version != '3.4'", - "version": "==1.26.2" + "index": "pypi", + "version": "==1.26.3" }, "virtualenv": { "hashes": [ - "sha256:54b05fc737ea9c9ee9f8340f579e5da5b09fb64fd010ab5757eb90268616907c", - "sha256:b7a8ec323ee02fb2312f098b6b4c9de99559b462775bc8fe3627a73706603c1b" + "sha256:49ec4eb4c224c6f7dd81bb6d0a28a09ecae5894f4e593c89b0db0885f565a107", + "sha256:83f95875d382c7abafe06bd2a4cdd1b363e1bb77e02f155ebe8ac082a916b37c" ], - "version": "==20.2.2" + "version": "==20.4.3" }, "virtualenv-clone": { "hashes": [ @@ -691,6 +700,13 @@ ], "index": "pypi", "version": "==0.36.2" + }, + "zipp": { + "hashes": [ + "sha256:3607921face881ba3e026887d8150cca609d517579abe052ac81fc5aeffdbd76", + "sha256:51cb66cc54621609dd593d1787f286ee42a5c0adbb4b29abea5a63edc3e03098" + ], + "version": "==3.4.1" } } } From 935fae26fa4500896d9b259bce4cddafde5ee578 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 13 Jul 2021 19:38:56 -0700 Subject: [PATCH 119/120] Bump pytest-cov from 2.10.1 to 2.12.1 (#664) Bumps [pytest-cov](https://github.com/pytest-dev/pytest-cov) from 2.10.1 to 2.12.1. - [Release notes](https://github.com/pytest-dev/pytest-cov/releases) - [Changelog](https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest-cov/compare/v2.10.1...v2.12.1) Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> --- Pipfile.lock | 412 ++++++++++++++++++++++++++------------------------- 1 file changed, 212 insertions(+), 200 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index de75fc42..c9c3a70b 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -90,25 +90,25 @@ }, "s3transfer": { "hashes": [ - "sha256:5d48b1fd2232141a9d5fb279709117aaba506cacea7f86f11bc392f06bfa8fc2", - "sha256:c5dadf598762899d8cfaecf68eba649cd25b0ce93b6c954b156aaa3eed160547" + "sha256:35627b86af8ff97e7ac27975fe0a98a312814b46c6333d8a6b889627bcd80994", + "sha256:efa5bd92a897b6a8d5c1383828dca3d52d0790e0756d49740563a3fb6ed03246" ], - "version": "==0.3.6" + "version": "==0.3.7" }, "six": { "hashes": [ - "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", - "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" + "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", + "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" ], - "version": "==1.15.0" + "version": "==1.16.0" }, "urllib3": { "hashes": [ - "sha256:1b465e494e3e0d8939b50680403e3aedaa2bc434b7d5af64dfd3c958d7f5ae80", - "sha256:de3eedaad74a2683334e282005cd8d7f22f4d55fa690a2a1020a416cb0a47e73" + "sha256:753a0374df26658f99d826cfe40394a686d05985786d946fbe4165b5148f5a7c", + "sha256:a7acd0977125325f516bda9735fa7142b909a8d01e8b2e4c8108d0984e6e0098" ], - "index": "pypi", - "version": "==1.26.3" + "markers": "python_version != '3.4'", + "version": "==1.26.5" } }, "develop": { @@ -121,10 +121,10 @@ }, "attrs": { "hashes": [ - "sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6", - "sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700" + "sha256:149e90d6d8ac20db7a955ad60cf0e6881a3f20d37096140088356da6c716b0b1", + "sha256:ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb" ], - "version": "==20.3.0" + "version": "==21.2.0" }, "black": { "hashes": [ @@ -157,22 +157,31 @@ }, "certifi": { "hashes": [ - "sha256:1a4995114262bffbc2413b159f2a1a480c969de6e6eb13ee966d470af86af59c", - "sha256:719a74fb9e33b9bd44cc7f3a8d94bc35e4049deebe19ba7d8e108280cfd59830" + "sha256:2bbf76fd432960138b3ef6dda3dde0544f27cbf8546c458e60baf371917ba9ee", + "sha256:50b1e4f8446b06f41be7dd6338db18e0990601dce795c2b1686458aa7e8fa7d8" ], - "version": "==2020.12.5" + "version": "==2021.5.30" }, "cffi": { "hashes": [ "sha256:005a36f41773e148deac64b08f233873a4d0c18b053d37da83f6af4d9087b813", + "sha256:04c468b622ed31d408fea2346bec5bbffba2cc44226302a0de1ade9f5ea3d373", + "sha256:06d7cd1abac2ffd92e65c0609661866709b4b2d82dd15f611e602b9b188b0b69", + "sha256:06db6321b7a68b2bd6df96d08a5adadc1fa0e8f419226e25b2a5fbf6ccc7350f", "sha256:0857f0ae312d855239a55c81ef453ee8fd24136eaba8e87a2eceba644c0d4c06", + "sha256:0f861a89e0043afec2a51fd177a567005847973be86f709bbb044d7f42fc4e05", "sha256:1071534bbbf8cbb31b498d5d9db0f274f2f7a865adca4ae429e147ba40f73dea", "sha256:158d0d15119b4b7ff6b926536763dc0714313aa59e320ddf787502c70c4d4bee", + "sha256:1bf1ac1984eaa7675ca8d5745a8cb87ef7abecb5592178406e55858d411eadc0", "sha256:1f436816fc868b098b0d63b8920de7d208c90a67212546d02f84fe78a9c26396", + "sha256:24a570cd11895b60829e941f2613a4f79df1a27344cbbb82164ef2e0116f09c7", + "sha256:24ec4ff2c5c0c8f9c6b87d5bb53555bf267e1e6f70e52e5a9740d32861d36b6f", "sha256:2894f2df484ff56d717bead0a5c2abb6b9d2bf26d6960c4604d5c48bbc30ee73", "sha256:29314480e958fd8aab22e4a58b355b629c59bf5f2ac2492b61e3dc06d8c7a315", + "sha256:293e7ea41280cb28c6fcaaa0b1aa1f533b8ce060b9e701d78511e1e6c4a1de76", "sha256:34eff4b97f3d982fb93e2831e6750127d1355a923ebaeeb565407b3d2f8d41a1", "sha256:35f27e6eb43380fa080dccf676dece30bef72e4a67617ffda586641cd4508d49", + "sha256:3c3f39fa737542161d8b0d680df2ec249334cd70a8f420f71c9304bd83c3cbed", "sha256:3d3dd4c9e559eb172ecf00a2a7517e97d1e96de2a5e610bd9b68cea3925b4892", "sha256:43e0b9d9e2c9e5d152946b9c5fe062c151614b262fda2e7b201204de0b99e482", "sha256:48e1c69bbacfc3d932221851b39d49e81567a4d4aac3b21258d9c24578280058", @@ -180,6 +189,7 @@ "sha256:58e3f59d583d413809d60779492342801d6e82fefb89c86a38e040c16883be53", "sha256:5de7970188bb46b7bf9858eb6890aad302577a5f6f75091fd7cdd3ef13ef3045", "sha256:65fa59693c62cf06e45ddbb822165394a288edce9e276647f0046e1ec26920f3", + "sha256:681d07b0d1e3c462dd15585ef5e33cb021321588bebd910124ef4f4fb71aef55", "sha256:69e395c24fc60aad6bb4fa7e583698ea6cc684648e1ffb7fe85e3c1ca131a7d5", "sha256:6c97d7350133666fbb5cf4abdc1178c812cb205dc6f41d174a7b0f18fb93337e", "sha256:6e4714cc64f474e4d6e37cfff31a814b509a35cb17de4fb1999907575684479c", @@ -197,8 +207,10 @@ "sha256:b85eb46a81787c50650f2392b9b4ef23e1f126313b9e0e9013b35c15e4288e2e", "sha256:bb89f306e5da99f4d922728ddcd6f7fcebb3241fc40edebcb7284d7514741991", "sha256:cbde590d4faaa07c72bf979734738f328d239913ba3e043b1e98fe9a39f8b2b6", + "sha256:cc5a8e069b9ebfa22e26d0e6b97d6f9781302fe7f4f2b8776c3e1daea35f1adc", "sha256:cd2868886d547469123fadc46eac7ea5253ea7fcb139f12e1dfc2bbd406427d1", "sha256:d42b11d692e11b6634f7613ad8df5d6d5f8875f5d48939520d351007b3c13406", + "sha256:df5052c5d867c1ea0b311fb7c3cd28b19df469c056f7fdcfe88c7473aa63e333", "sha256:f2d45f97ab6bb54753eab54fffe75aaf3de4ff2341c9daee1987ee1837636f1d", "sha256:fd78e5fee591709f32ef6edb9a015b4aa1a5022598e36227500c8f4e02328d9c" ], @@ -236,60 +248,60 @@ }, "coverage": { "hashes": [ - "sha256:004d1880bed2d97151facef49f08e255a20ceb6f9432df75f4eef018fdd5a78c", - "sha256:01d84219b5cdbfc8122223b39a954820929497a1cb1422824bb86b07b74594b6", - "sha256:040af6c32813fa3eae5305d53f18875bedd079960822ef8ec067a66dd8afcd45", - "sha256:06191eb60f8d8a5bc046f3799f8a07a2d7aefb9504b0209aff0b47298333302a", - "sha256:13034c4409db851670bc9acd836243aeee299949bd5673e11844befcb0149f03", - "sha256:13c4ee887eca0f4c5a247b75398d4114c37882658300e153113dafb1d76de529", - "sha256:184a47bbe0aa6400ed2d41d8e9ed868b8205046518c52464fde713ea06e3a74a", - "sha256:18ba8bbede96a2c3dde7b868de9dcbd55670690af0988713f0603f037848418a", - "sha256:1aa846f56c3d49205c952d8318e76ccc2ae23303351d9270ab220004c580cfe2", - "sha256:217658ec7187497e3f3ebd901afdca1af062b42cfe3e0dafea4cced3983739f6", - "sha256:24d4a7de75446be83244eabbff746d66b9240ae020ced65d060815fac3423759", - "sha256:2910f4d36a6a9b4214bb7038d537f015346f413a975d57ca6b43bf23d6563b53", - "sha256:2949cad1c5208b8298d5686d5a85b66aae46d73eec2c3e08c817dd3513e5848a", - "sha256:2a3859cb82dcbda1cfd3e6f71c27081d18aa251d20a17d87d26d4cd216fb0af4", - "sha256:2cafbbb3af0733db200c9b5f798d18953b1a304d3f86a938367de1567f4b5bff", - "sha256:2e0d881ad471768bf6e6c2bf905d183543f10098e3b3640fc029509530091502", - "sha256:30c77c1dc9f253283e34c27935fded5015f7d1abe83bc7821680ac444eaf7793", - "sha256:3487286bc29a5aa4b93a072e9592f22254291ce96a9fbc5251f566b6b7343cdb", - "sha256:372da284cfd642d8e08ef606917846fa2ee350f64994bebfbd3afb0040436905", - "sha256:41179b8a845742d1eb60449bdb2992196e211341818565abded11cfa90efb821", - "sha256:44d654437b8ddd9eee7d1eaee28b7219bec228520ff809af170488fd2fed3e2b", - "sha256:4a7697d8cb0f27399b0e393c0b90f0f1e40c82023ea4d45d22bce7032a5d7b81", - "sha256:51cb9476a3987c8967ebab3f0fe144819781fca264f57f89760037a2ea191cb0", - "sha256:52596d3d0e8bdf3af43db3e9ba8dcdaac724ba7b5ca3f6358529d56f7a166f8b", - "sha256:53194af30d5bad77fcba80e23a1441c71abfb3e01192034f8246e0d8f99528f3", - "sha256:5fec2d43a2cc6965edc0bb9e83e1e4b557f76f843a77a2496cbe719583ce8184", - "sha256:6c90e11318f0d3c436a42409f2749ee1a115cd8b067d7f14c148f1ce5574d701", - "sha256:74d881fc777ebb11c63736622b60cb9e4aee5cace591ce274fb69e582a12a61a", - "sha256:7501140f755b725495941b43347ba8a2777407fc7f250d4f5a7d2a1050ba8e82", - "sha256:796c9c3c79747146ebd278dbe1e5c5c05dd6b10cc3bcb8389dfdf844f3ead638", - "sha256:869a64f53488f40fa5b5b9dcb9e9b2962a66a87dab37790f3fcfb5144b996ef5", - "sha256:8963a499849a1fc54b35b1c9f162f4108017b2e6db2c46c1bed93a72262ed083", - "sha256:8d0a0725ad7c1a0bcd8d1b437e191107d457e2ec1084b9f190630a4fb1af78e6", - "sha256:900fbf7759501bc7807fd6638c947d7a831fc9fdf742dc10f02956ff7220fa90", - "sha256:92b017ce34b68a7d67bd6d117e6d443a9bf63a2ecf8567bb3d8c6c7bc5014465", - "sha256:970284a88b99673ccb2e4e334cfb38a10aab7cd44f7457564d11898a74b62d0a", - "sha256:972c85d205b51e30e59525694670de6a8a89691186012535f9d7dbaa230e42c3", - "sha256:9a1ef3b66e38ef8618ce5fdc7bea3d9f45f3624e2a66295eea5e57966c85909e", - "sha256:af0e781009aaf59e25c5a678122391cb0f345ac0ec272c7961dc5455e1c40066", - "sha256:b6d534e4b2ab35c9f93f46229363e17f63c53ad01330df9f2d6bd1187e5eaacf", - "sha256:b7895207b4c843c76a25ab8c1e866261bcfe27bfaa20c192de5190121770672b", - "sha256:c0891a6a97b09c1f3e073a890514d5012eb256845c451bd48f7968ef939bf4ae", - "sha256:c2723d347ab06e7ddad1a58b2a821218239249a9e4365eaff6649d31180c1669", - "sha256:d1f8bf7b90ba55699b3a5e44930e93ff0189aa27186e96071fac7dd0d06a1873", - "sha256:d1f9ce122f83b2305592c11d64f181b87153fc2c2bbd3bb4a3dde8303cfb1a6b", - "sha256:d314ed732c25d29775e84a960c3c60808b682c08d86602ec2c3008e1202e3bb6", - "sha256:d636598c8305e1f90b439dbf4f66437de4a5e3c31fdf47ad29542478c8508bbb", - "sha256:deee1077aae10d8fa88cb02c845cfba9b62c55e1183f52f6ae6a2df6a2187160", - "sha256:ebe78fe9a0e874362175b02371bdfbee64d8edc42a044253ddf4ee7d3c15212c", - "sha256:f030f8873312a16414c0d8e1a1ddff2d3235655a2174e3648b4fa66b3f2f1079", - "sha256:f0b278ce10936db1a37e6954e15a3730bea96a0997c26d7fee88e6c396c2086d", - "sha256:f11642dddbb0253cc8853254301b51390ba0081750a8ac03f20ea8103f0c56b6" - ], - "version": "==5.5" + "sha256:00368e6328ebff76197fff5f4d5704b44098f89d8d99a67a349ad6674ec0b157", + "sha256:0389690e0a1c94e9a246dc3130355d70805e51ca509db1bf07fbde27efb33aa4", + "sha256:065d2181f44392893d37d0a4f9ff60b485d705f733356d0a2fb292a58c6f2e0f", + "sha256:082febdba717c769da92d5e19e14a659ebef6daab19b67fced304b7b8d2475e2", + "sha256:0a35ae0d590effb7cc96e7d6935ae2ab8a51526a111fbe0f12d1671aa9fdc377", + "sha256:142493f0400a0bd5acf03c52971229e937323c3e24c372800ae1c44a503e0921", + "sha256:186f53367a08e8d24cc534c7cbfa43a82d1618a48dec2e0c56e80577ec1888fe", + "sha256:2163a00bcd613e95e118c01ea2811f705fbbacf1904d657b24d306879e2303d3", + "sha256:24ecf342b1e23de259d81b3adc83578935babeb54f6950c9bd9534b12443a49c", + "sha256:2c24d3e09f433817ddd0cb2e8f82f8b42cd09a8ac558462fedf99be479ed4851", + "sha256:2d741575de4a13869c9d4a685235bacc897c94afd3703e2ad4fdc362f37e87da", + "sha256:305ca73c09dd84054a3a8f53d5b70e0325b5b303245d0b96ed505698dc7e8ea7", + "sha256:4bf1d0a390de707f8bfd49efdcdac9366ce77ed64cb35b344f58b1ec62517317", + "sha256:50d90d6b753debb7568621125aad4e5fb418e7bdcb0dba3fa6f4ee82994b35d4", + "sha256:5a2079bca21fa959608223b90cf2f95ce686a6497fb12bfaaa7bb24c3e298199", + "sha256:60c6d433f0357db7ed2a2a698fb75b8ce919ce547d6d6bc79c576e090f509768", + "sha256:66cfae29bccea703f02d8997f60d71e236c5a321588f5aa5a318bd88ca23dc0a", + "sha256:6d6fc990962559de1f3685eb3e365ca60f2e3257bfd145bf675c566b8ebb1944", + "sha256:703b126f3ad20c463b545e199c4da460695630da5fdfd949de6a6269b45eabab", + "sha256:730cee22c41852b90948343cdfd183db1e96a9de69fd4dabec3532c582afea68", + "sha256:7e4a16bde8a3b7424b2955130f5a6c29e741e7138fe05c5d9d72efc356076a80", + "sha256:801e8277958bc2e6cc1f2443a20a2a97f79583aa64524b130e1c0de44c287ca9", + "sha256:80baa69a78d5696c60b72dee44ac3d5ccf75ee82e84d018938ddf642d036a6a8", + "sha256:80c00ce9cef80afbf18d16cb3052f5601ba8d087501d829169eecb33c153346a", + "sha256:89db5a374d793344087732207ee15869549486b2148e3e2e6effe22146351fcd", + "sha256:917b98cc5725ea2e0b88c74d34182589a9be07092cb35b861ea9e74189174f71", + "sha256:9398f8fd89f6f260e94e57559df1885b8200b18312824b617a8789e0f5e7dc74", + "sha256:95b6f212bb0c7379f1f2f6e47c722fbdc7355d8b7488a68649e83dfa29522704", + "sha256:9f23313f3e494475581d46de3b8b6bdcf618ee1df412490e779a9aa0a6c72162", + "sha256:9f6f26e5b129bb0218aab30d368d6ead750517a457986f8854b1df4b4c318098", + "sha256:a502693c83a2c6558bc45b4c2dc01a00c9b99cb3cf846913438933a44af174fc", + "sha256:aa4999130a8e892fa9051edc18bf4daa0a2839d3f3de2dcfcbf0ae4619ee3b5e", + "sha256:b10be0b80784c1beb8061e5ce938d8511a182125de5fc695a60f0561b984d361", + "sha256:b1f7b23a606aaf2464eb81c23b5b20623e2ba44b4aaca6ea9bfe00e84a1a5264", + "sha256:b78c8d232d97dbc8ad3a3d94cc15fccabe9a331685d76d2e5cb5284acc4a5feb", + "sha256:b88fa862817035ad7921f2641c27a85dab12cc685ad3ef29c0caaf5b3d10a868", + "sha256:b93fb9137070899b5f10d6487724f4427b5945983a785e1e2f1102c5e175c516", + "sha256:b9639e16c1bc4eb8a78b3b30df4146bb78df5d52ba1b7454b634abd89aede6cc", + "sha256:baa3b6be365c97f80d92a397cb8963dcd9bc22d101b39784e77a9cad093812f8", + "sha256:c06c5758bae454a49dc3e7917804b46c31bb4a72cedfc8e7b4f17a318b3de9d6", + "sha256:c544153709e93ea7e9edcefee72f5afcf484a9cb526067065f9419419f4a3694", + "sha256:c6c74260ba130f7c20a340e8f9e544b0941621641f53edcf69e4602e12c9f29e", + "sha256:d040615ff5c02ffd97ba9f0f73b9db34c09b8142fbfdd363b2a79fa6a554242c", + "sha256:d85774b1ac09ec1d958e63baa436cc4c90e2e910294847ba51dcc3ca3ca04a63", + "sha256:e508bb216eee8350e77b436f9f99c4f2d8335ecb51483f5ffd8bf5e84aaa56d1", + "sha256:ea1cb38b1a52392ebb4e93eaf4a44b3cfdec35cca3f78a9a599f27b7f27031e2", + "sha256:ec310e0029d530d1043f638b7a326b349884421572626bc2909408da7b0d03e5", + "sha256:ed04b79f53fa975660f1a598120c504a0f4529170eeaf0d823fcc1f06f4d2e0f", + "sha256:f4909ee1ddabed351f0fa55063a7dbe498001e2245a9602d9fb0fd74afecdca9", + "sha256:f49ae9e19737493911e7f8e551310f719f463e442ea1ec92fe0804c62066a7e8", + "sha256:f4c93e6102087dda4931fcd50fa4ad44e8e43e09419290c5f05cc2c690961ebf", + "sha256:fa1b639d85af4794cb20d7cfd4c5ae38e94a418b17a2318a1992b470fb68260d" + ], + "version": "==5.6b1" }, "coveralls": { "hashes": [ @@ -301,27 +313,27 @@ }, "cryptography": { "hashes": [ - "sha256:066bc53f052dfeda2f2d7c195cf16fb3e5ff13e1b6b7415b468514b40b381a5b", - "sha256:0923ba600d00718d63a3976f23cab19aef10c1765038945628cd9be047ad0336", - "sha256:2d32223e5b0ee02943f32b19245b61a62db83a882f0e76cc564e1cec60d48f87", - "sha256:4169a27b818de4a1860720108b55a2801f32b6ae79e7f99c00d79f2a2822eeb7", - "sha256:57ad77d32917bc55299b16d3b996ffa42a1c73c6cfa829b14043c561288d2799", - "sha256:5ecf2bcb34d17415e89b546dbb44e73080f747e504273e4d4987630493cded1b", - "sha256:600cf9bfe75e96d965509a4c0b2b183f74a4fa6f5331dcb40fb7b77b7c2484df", - "sha256:66b57a9ca4b3221d51b237094b0303843b914b7d5afd4349970bb26518e350b0", - "sha256:93cfe5b7ff006de13e1e89830810ecbd014791b042cbe5eec253be11ac2b28f3", - "sha256:9e98b452132963678e3ac6c73f7010fe53adf72209a32854d55690acac3f6724", - "sha256:df186fcbf86dc1ce56305becb8434e4b6b7504bc724b71ad7a3239e0c9d14ef2", - "sha256:fec7fb46b10da10d9e1d078d1ff8ed9e05ae14f431fdbd11145edd0550b9a964" - ], - "version": "==3.4.6" + "sha256:0f1212a66329c80d68aeeb39b8a16d54ef57071bf22ff4e521657b27372e327d", + "sha256:1e056c28420c072c5e3cb36e2b23ee55e260cb04eee08f702e0edfec3fb51959", + "sha256:240f5c21aef0b73f40bb9f78d2caff73186700bf1bc6b94285699aff98cc16c6", + "sha256:26965837447f9c82f1855e0bc8bc4fb910240b6e0d16a664bb722df3b5b06873", + "sha256:37340614f8a5d2fb9aeea67fd159bfe4f5f4ed535b1090ce8ec428b2f15a11f2", + "sha256:3d10de8116d25649631977cb37da6cbdd2d6fa0e0281d014a5b7d337255ca713", + "sha256:3d8427734c781ea5f1b41d6589c293089704d4759e34597dce91014ac125aad1", + "sha256:7ec5d3b029f5fa2b179325908b9cd93db28ab7b85bb6c1db56b10e0b54235177", + "sha256:8e56e16617872b0957d1c9742a3f94b43533447fd78321514abbe7db216aa250", + "sha256:de4e5f7f68220d92b7637fc99847475b59154b7a1b3868fb7385337af54ac9ca", + "sha256:eb8cc2afe8b05acbd84a43905832ec78e7b3873fb124ca190f574dca7389a87d", + "sha256:ee77aa129f481be46f8d92a1a7db57269a2f23052d5f2433b4621bb457081cc9" + ], + "version": "==3.4.7" }, "distlib": { "hashes": [ - "sha256:8c09de2c67b3e7deef7184574fc060ab8a793e7adbb183d942c389c8b13c52fb", - "sha256:edf6116872c863e1aa9d5bb7cb5e05a022c519a4594dc703843343a9ddd9bff1" + "sha256:106fef6dc37dd8c0e2c0a60d3fca3e77460a48907f335fa28420463a6f799736", + "sha256:23e223426b28491b1ced97dc3bbe183027419dfc7982b4fa2f05d5f3ff10711c" ], - "version": "==0.3.1" + "version": "==0.3.2" }, "docopt": { "hashes": [ @@ -361,10 +373,10 @@ }, "importlib-metadata": { "hashes": [ - "sha256:742add720a20d0467df2f444ae41704000f50e1234f46174b51f9c6031a1bd71", - "sha256:b74159469b464a99cb8cc3e21973e4d96e05d3024d337313fedb618a6e86e6f4" + "sha256:960d52ba7c21377c990412aca380bf3642d734c2eaab78a2c39319f67c6a5786", + "sha256:e592faad8de1bda9fe920cf41e15261e7131bcf266c30306eec00e8e225c1dd5" ], - "version": "==3.7.3" + "version": "==4.4.0" }, "iniconfig": { "hashes": [ @@ -383,10 +395,10 @@ }, "keyring": { "hashes": [ - "sha256:237ff44888ba9b3918a7dcb55c8f1db909c95b6f071bfb46c6918f33f453a68a", - "sha256:29f407fd5509c014a6086f17338c70215c8d1ab42d5d49e0254273bc0a64bbfc" + "sha256:045703609dd3fccfcdb27da201684278823b72af515aedec1a8515719a038cb8", + "sha256:8f607d7d1cc502c43a932a275a56fe47db50271904513a379d39df1af277ac48" ], - "version": "==23.0.0" + "version": "==23.0.1" }, "mccabe": { "hashes": [ @@ -418,17 +430,17 @@ }, "pbr": { "hashes": [ - "sha256:5fad80b613c402d5b7df7bd84812548b2a61e9977387a80a5fc5c396492b13c9", - "sha256:b236cde0ac9a6aedd5e3c34517b423cd4fd97ef723849da6b0d2231142d89c00" + "sha256:42df03e7797b796625b1029c0400279c7c34fd7df24a7d7818a1abb5b38710dd", + "sha256:c68c661ac5cc81058ac94247278eeda6d2e6aecb3e227b0387c30d277e7ef8d4" ], - "version": "==5.5.1" + "version": "==5.6.0" }, "pipenv": { "hashes": [ - "sha256:4ab2f60742184d851ac44b9e1d423afe71dc2ea7a68bde07eb890c8b4ce5a420", - "sha256:8253fe6f9cfb3791a54da8a0571f73c918cb3457dd908684c1800a13a06ec4c1" + "sha256:05958fadcd70b2de6a27542fcd2bd72dd5c59c6d35307fdac3e06361fb06e30e", + "sha256:d180f5be4775c552fd5e69ae18a9d6099d9dafb462efe54f11c72cb5f4d5e977" ], - "version": "==2020.11.15" + "version": "==2021.5.29" }, "pipenv-to-requirements": { "hashes": [ @@ -482,10 +494,10 @@ }, "pygments": { "hashes": [ - "sha256:2656e1a6edcdabf4275f9a3640db59fd5de107d88e8663c5d4e9a0fa62f77f94", - "sha256:534ef71d539ae97d4c3a4cf7d6f110f214b0e687e92f9cb9d2a3b0d3101289c8" + "sha256:a18f47b506a429f6f4b9df81bb02beab9ca21d0a5fee38ed15aef65f0545519f", + "sha256:d66e804411278594d764fc69ec36ec13d9ae9147193a1740cd34d272ca383b8e" ], - "version": "==2.8.1" + "version": "==2.9.0" }, "pyparsing": { "hashes": [ @@ -504,11 +516,11 @@ }, "pytest-cov": { "hashes": [ - "sha256:45ec2d5182f89a81fc3eb29e3d1ed3113b9e9a873bcddb2a71faaab066110191", - "sha256:47bd0ce14056fdd79f93e1713f88fad7bdcc583dcd7783da86ef2f085a0bb88e" + "sha256:261bb9e47e65bd099c89c3edf92972865210c36813f80ede5277dceb77a4a62a", + "sha256:261ceeb8c227b726249b376b8526b600f38667ee314f910353fa318caa01f4d7" ], "index": "pypi", - "version": "==2.10.1" + "version": "==2.12.1" }, "readme-renderer": { "hashes": [ @@ -519,49 +531,49 @@ }, "regex": { "hashes": [ - "sha256:07ef35301b4484bce843831e7039a84e19d8d33b3f8b2f9aab86c376813d0139", - "sha256:13f50969028e81765ed2a1c5fcfdc246c245cf8d47986d5172e82ab1a0c42ee5", - "sha256:14de88eda0976020528efc92d0a1f8830e2fb0de2ae6005a6fc4e062553031fa", - "sha256:159fac1a4731409c830d32913f13f68346d6b8e39650ed5d704a9ce2f9ef9cb3", - "sha256:18e25e0afe1cf0f62781a150c1454b2113785401ba285c745acf10c8ca8917df", - "sha256:201e2619a77b21a7780580ab7b5ce43835e242d3e20fef50f66a8df0542e437f", - "sha256:360a01b5fa2ad35b3113ae0c07fb544ad180603fa3b1f074f52d98c1096fa15e", - "sha256:39c44532d0e4f1639a89e52355b949573e1e2c5116106a395642cbbae0ff9bcd", - "sha256:3d9356add82cff75413bec360c1eca3e58db4a9f5dafa1f19650958a81e3249d", - "sha256:3d9a7e215e02bd7646a91fb8bcba30bc55fd42a719d6b35cf80e5bae31d9134e", - "sha256:4651f839dbde0816798e698626af6a2469eee6d9964824bb5386091255a1694f", - "sha256:486a5f8e11e1f5bbfcad87f7c7745eb14796642323e7e1829a331f87a713daaa", - "sha256:4b8a1fb724904139149a43e172850f35aa6ea97fb0545244dc0b805e0154ed68", - "sha256:4c0788010a93ace8a174d73e7c6c9d3e6e3b7ad99a453c8ee8c975ddd9965643", - "sha256:4c2e364491406b7888c2ad4428245fc56c327e34a5dfe58fd40df272b3c3dab3", - "sha256:575a832e09d237ae5fedb825a7a5bc6a116090dd57d6417d4f3b75121c73e3be", - "sha256:5770a51180d85ea468234bc7987f5597803a4c3d7463e7323322fe4a1b181578", - "sha256:633497504e2a485a70a3268d4fc403fe3063a50a50eed1039083e9471ad0101c", - "sha256:63f3ca8451e5ff7133ffbec9eda641aeab2001be1a01878990f6c87e3c44b9d5", - "sha256:709f65bb2fa9825f09892617d01246002097f8f9b6dde8d1bb4083cf554701ba", - "sha256:808404898e9a765e4058bf3d7607d0629000e0a14a6782ccbb089296b76fa8fe", - "sha256:882f53afe31ef0425b405a3f601c0009b44206ea7f55ee1c606aad3cc213a52c", - "sha256:8bd4f91f3fb1c9b1380d6894bd5b4a519409135bec14c0c80151e58394a4e88a", - "sha256:8e65e3e4c6feadf6770e2ad89ad3deb524bcb03d8dc679f381d0568c024e0deb", - "sha256:976a54d44fd043d958a69b18705a910a8376196c6b6ee5f2596ffc11bff4420d", - "sha256:a0d04128e005142260de3733591ddf476e4902c0c23c1af237d9acf3c96e1b38", - "sha256:a0df9a0ad2aad49ea3c7f65edd2ffb3d5c59589b85992a6006354f6fb109bb18", - "sha256:a2ee026f4156789df8644d23ef423e6194fad0bc53575534101bb1de5d67e8ce", - "sha256:a59a2ee329b3de764b21495d78c92ab00b4ea79acef0f7ae8c1067f773570afa", - "sha256:b97ec5d299c10d96617cc851b2e0f81ba5d9d6248413cd374ef7f3a8871ee4a6", - "sha256:b98bc9db003f1079caf07b610377ed1ac2e2c11acc2bea4892e28cc5b509d8d5", - "sha256:b9d8d286c53fe0cbc6d20bf3d583cabcd1499d89034524e3b94c93a5ab85ca90", - "sha256:bcd945175c29a672f13fce13a11893556cd440e37c1b643d6eeab1988c8b209c", - "sha256:c66221e947d7207457f8b6f42b12f613b09efa9669f65a587a2a71f6a0e4d106", - "sha256:c782da0e45aff131f0bed6e66fbcfa589ff2862fc719b83a88640daa01a5aff7", - "sha256:cb4ee827857a5ad9b8ae34d3c8cc51151cb4a3fe082c12ec20ec73e63cc7c6f0", - "sha256:d47d359545b0ccad29d572ecd52c9da945de7cd6cf9c0cfcb0269f76d3555689", - "sha256:dc9963aacb7da5177e40874585d7407c0f93fb9d7518ec58b86e562f633f36cd", - "sha256:ea2f41445852c660ba7c3ebf7d70b3779b20d9ca8ba54485a17740db49f46932", - "sha256:f5d0c921c99297354cecc5a416ee4280bd3f20fd81b9fb671ca6be71499c3fdf", - "sha256:f85d6f41e34f6a2d1607e312820971872944f1661a73d33e1e82d35ea3305e14" - ], - "version": "==2021.3.17" + "sha256:01afaf2ec48e196ba91b37451aa353cb7eda77efe518e481707e0515025f0cd5", + "sha256:11d773d75fa650cd36f68d7ca936e3c7afaae41b863b8c387a22aaa78d3c5c79", + "sha256:18c071c3eb09c30a264879f0d310d37fe5d3a3111662438889ae2eb6fc570c31", + "sha256:1e1c20e29358165242928c2de1482fb2cf4ea54a6a6dea2bd7a0e0d8ee321500", + "sha256:281d2fd05555079448537fe108d79eb031b403dac622621c78944c235f3fcf11", + "sha256:314d66636c494ed9c148a42731b3834496cc9a2c4251b1661e40936814542b14", + "sha256:32e65442138b7b76dd8173ffa2cf67356b7bc1768851dded39a7a13bf9223da3", + "sha256:339456e7d8c06dd36a22e451d58ef72cef293112b559010db3d054d5560ef439", + "sha256:3916d08be28a1149fb97f7728fca1f7c15d309a9f9682d89d79db75d5e52091c", + "sha256:3a9cd17e6e5c7eb328517969e0cb0c3d31fd329298dd0c04af99ebf42e904f82", + "sha256:47bf5bf60cf04d72bf6055ae5927a0bd9016096bf3d742fa50d9bf9f45aa0711", + "sha256:4c46e22a0933dd783467cf32b3516299fb98cfebd895817d685130cc50cd1093", + "sha256:4c557a7b470908b1712fe27fb1ef20772b78079808c87d20a90d051660b1d69a", + "sha256:52ba3d3f9b942c49d7e4bc105bb28551c44065f139a65062ab7912bef10c9afb", + "sha256:563085e55b0d4fb8f746f6a335893bda5c2cef43b2f0258fe1020ab1dd874df8", + "sha256:598585c9f0af8374c28edd609eb291b5726d7cbce16be6a8b95aa074d252ee17", + "sha256:619d71c59a78b84d7f18891fe914446d07edd48dc8328c8e149cbe0929b4e000", + "sha256:67bdb9702427ceddc6ef3dc382455e90f785af4c13d495f9626861763ee13f9d", + "sha256:6d1b01031dedf2503631d0903cb563743f397ccaf6607a5e3b19a3d76fc10480", + "sha256:741a9647fcf2e45f3a1cf0e24f5e17febf3efe8d4ba1281dcc3aa0459ef424dc", + "sha256:7c2a1af393fcc09e898beba5dd59196edaa3116191cc7257f9224beaed3e1aa0", + "sha256:7d9884d86dd4dd489e981d94a65cd30d6f07203d90e98f6f657f05170f6324c9", + "sha256:90f11ff637fe8798933fb29f5ae1148c978cccb0452005bf4c69e13db951e765", + "sha256:919859aa909429fb5aa9cf8807f6045592c85ef56fdd30a9a3747e513db2536e", + "sha256:96fcd1888ab4d03adfc9303a7b3c0bd78c5412b2bfbe76db5b56d9eae004907a", + "sha256:97f29f57d5b84e73fbaf99ab3e26134e6687348e95ef6b48cfd2c06807005a07", + "sha256:980d7be47c84979d9136328d882f67ec5e50008681d94ecc8afa8a65ed1f4a6f", + "sha256:a91aa8619b23b79bcbeb37abe286f2f408d2f2d6f29a17237afda55bb54e7aac", + "sha256:ade17eb5d643b7fead300a1641e9f45401c98eee23763e9ed66a43f92f20b4a7", + "sha256:b9c3db21af35e3b3c05764461b262d6f05bbca08a71a7849fd79d47ba7bc33ed", + "sha256:bd28bc2e3a772acbb07787c6308e00d9626ff89e3bfcdebe87fa5afbfdedf968", + "sha256:bf5824bfac591ddb2c1f0a5f4ab72da28994548c708d2191e3b87dd207eb3ad7", + "sha256:c0502c0fadef0d23b128605d69b58edb2c681c25d44574fc673b0e52dce71ee2", + "sha256:c38c71df845e2aabb7fb0b920d11a1b5ac8526005e533a8920aea97efb8ec6a4", + "sha256:ce15b6d103daff8e9fee13cf7f0add05245a05d866e73926c358e871221eae87", + "sha256:d3029c340cfbb3ac0a71798100ccc13b97dddf373a4ae56b6a72cf70dfd53bc8", + "sha256:e512d8ef5ad7b898cdb2d8ee1cb09a8339e4f8be706d27eaa180c2f177248a10", + "sha256:e8e5b509d5c2ff12f8418006d5a90e9436766133b564db0abaec92fd27fcee29", + "sha256:ee54ff27bf0afaf4c3b3a62bcd016c12c3fdb4ec4f413391a90bd38bc3624605", + "sha256:fa4537fb4a98fe8fde99626e4681cc644bdcf2a795038533f9f711513a862ae6", + "sha256:fd45ff9293d9274c5008a2054ecef86a9bfe819a67c7be1afb65e69b405b3042" + ], + "version": "==2021.4.4" }, "requests": { "hashes": [ @@ -579,10 +591,10 @@ }, "rfc3986": { "hashes": [ - "sha256:112398da31a3344dc25dbf477d8df6cb34f9278a94fee2625d89e4514be8bb9d", - "sha256:af9147e9aceda37c91a05f4deb128d4b4b49d6b199775fd2d2927768abdc8f50" + "sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835", + "sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97" ], - "version": "==1.4.0" + "version": "==1.5.0" }, "secretstorage": { "hashes": [ @@ -594,10 +606,10 @@ }, "six": { "hashes": [ - "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", - "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" + "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", + "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" ], - "version": "==1.15.0" + "version": "==1.16.0" }, "toml": { "hashes": [ @@ -608,10 +620,10 @@ }, "tqdm": { "hashes": [ - "sha256:9fdf349068d047d4cfbe24862c425883af1db29bcddf4b0eeb2524f6fbdb23c7", - "sha256:d666ae29164da3e517fcf125e41d4fe96e5bb375cd87ff9763f6b38b5592fe33" + "sha256:736524215c690621b06fc89d0310a49822d75e599fcd0feb7cc742b98d692493", + "sha256:cd5791b5d7c3f2f1819efc81d36eb719a38e0906a7380365c556779f585ea042" ], - "version": "==4.59.0" + "version": "==4.61.0" }, "twine": { "hashes": [ @@ -623,61 +635,61 @@ }, "typed-ast": { "hashes": [ - "sha256:07d49388d5bf7e863f7fa2f124b1b1d89d8aa0e2f7812faff0a5658c01c59aa1", - "sha256:14bf1522cdee369e8f5581238edac09150c765ec1cb33615855889cf33dcb92d", - "sha256:240296b27397e4e37874abb1df2a608a92df85cf3e2a04d0d4d61055c8305ba6", - "sha256:36d829b31ab67d6fcb30e185ec996e1f72b892255a745d3a82138c97d21ed1cd", - "sha256:37f48d46d733d57cc70fd5f30572d11ab8ed92da6e6b28e024e4a3edfb456e37", - "sha256:4c790331247081ea7c632a76d5b2a265e6d325ecd3179d06e9cf8d46d90dd151", - "sha256:5dcfc2e264bd8a1db8b11a892bd1647154ce03eeba94b461effe68790d8b8e07", - "sha256:7147e2a76c75f0f64c4319886e7639e490fee87c9d25cb1d4faef1d8cf83a440", - "sha256:7703620125e4fb79b64aa52427ec192822e9f45d37d4b6625ab37ef403e1df70", - "sha256:8368f83e93c7156ccd40e49a783a6a6850ca25b556c0fa0240ed0f659d2fe496", - "sha256:84aa6223d71012c68d577c83f4e7db50d11d6b1399a9c779046d75e24bed74ea", - "sha256:85f95aa97a35bdb2f2f7d10ec5bbdac0aeb9dafdaf88e17492da0504de2e6400", - "sha256:8db0e856712f79c45956da0c9a40ca4246abc3485ae0d7ecc86a20f5e4c09abc", - "sha256:9044ef2df88d7f33692ae3f18d3be63dec69c4fb1b5a4a9ac950f9b4ba571606", - "sha256:963c80b583b0661918718b095e02303d8078950b26cc00b5e5ea9ababe0de1fc", - "sha256:987f15737aba2ab5f3928c617ccf1ce412e2e321c77ab16ca5a293e7bbffd581", - "sha256:9ec45db0c766f196ae629e509f059ff05fc3148f9ffd28f3cfe75d4afb485412", - "sha256:9fc0b3cb5d1720e7141d103cf4819aea239f7d136acf9ee4a69b047b7986175a", - "sha256:a2c927c49f2029291fbabd673d51a2180038f8cd5a5b2f290f78c4516be48be2", - "sha256:a38878a223bdd37c9709d07cd357bb79f4c760b29210e14ad0fb395294583787", - "sha256:b4fcdcfa302538f70929eb7b392f536a237cbe2ed9cba88e3bf5027b39f5f77f", - "sha256:c0c74e5579af4b977c8b932f40a5464764b2f86681327410aa028a22d2f54937", - "sha256:c1c876fd795b36126f773db9cbb393f19808edd2637e00fd6caba0e25f2c7b64", - "sha256:c9aadc4924d4b5799112837b226160428524a9a45f830e0d0f184b19e4090487", - "sha256:cc7b98bf58167b7f2db91a4327da24fb93368838eb84a44c472283778fc2446b", - "sha256:cf54cfa843f297991b7388c281cb3855d911137223c6b6d2dd82a47ae5125a41", - "sha256:d003156bb6a59cda9050e983441b7fa2487f7800d76bdc065566b7d728b4581a", - "sha256:d175297e9533d8d37437abc14e8a83cbc68af93cc9c1c59c2c292ec59a0697a3", - "sha256:d746a437cdbca200622385305aedd9aef68e8a645e385cc483bdc5e488f07166", - "sha256:e683e409e5c45d5c9082dc1daf13f6374300806240719f95dc783d1fc942af10" - ], - "version": "==1.4.2" + "sha256:01ae5f73431d21eead5015997ab41afa53aa1fbe252f9da060be5dad2c730ace", + "sha256:067a74454df670dcaa4e59349a2e5c81e567d8d65458d480a5b3dfecec08c5ff", + "sha256:0fb71b8c643187d7492c1f8352f2c15b4c4af3f6338f21681d3681b3dc31a266", + "sha256:1b3ead4a96c9101bef08f9f7d1217c096f31667617b58de957f690c92378b528", + "sha256:2068531575a125b87a41802130fa7e29f26c09a2833fea68d9a40cf33902eba6", + "sha256:209596a4ec71d990d71d5e0d312ac935d86930e6eecff6ccc7007fe54d703808", + "sha256:2c726c276d09fc5c414693a2de063f521052d9ea7c240ce553316f70656c84d4", + "sha256:398e44cd480f4d2b7ee8d98385ca104e35c81525dd98c519acff1b79bdaac363", + "sha256:52b1eb8c83f178ab787f3a4283f68258525f8d70f778a2f6dd54d3b5e5fb4341", + "sha256:5feca99c17af94057417d744607b82dd0a664fd5e4ca98061480fd8b14b18d04", + "sha256:7538e495704e2ccda9b234b82423a4038f324f3a10c43bc088a1636180f11a41", + "sha256:760ad187b1041a154f0e4d0f6aae3e40fdb51d6de16e5c99aedadd9246450e9e", + "sha256:777a26c84bea6cd934422ac2e3b78863a37017618b6e5c08f92ef69853e765d3", + "sha256:95431a26309a21874005845c21118c83991c63ea800dd44843e42a916aec5899", + "sha256:9ad2c92ec681e02baf81fdfa056fe0d818645efa9af1f1cd5fd6f1bd2bdfd805", + "sha256:9c6d1a54552b5330bc657b7ef0eae25d00ba7ffe85d9ea8ae6540d2197a3788c", + "sha256:aee0c1256be6c07bd3e1263ff920c325b59849dc95392a05f258bb9b259cf39c", + "sha256:af3d4a73793725138d6b334d9d247ce7e5f084d96284ed23f22ee626a7b88e39", + "sha256:b36b4f3920103a25e1d5d024d155c504080959582b928e91cb608a65c3a49e1a", + "sha256:b9574c6f03f685070d859e75c7f9eeca02d6933273b5e69572e5ff9d5e3931c3", + "sha256:bff6ad71c81b3bba8fa35f0f1921fb24ff4476235a6e94a26ada2e54370e6da7", + "sha256:c190f0899e9f9f8b6b7863debfb739abcb21a5c054f911ca3596d12b8a4c4c7f", + "sha256:c907f561b1e83e93fad565bac5ba9c22d96a54e7ea0267c708bffe863cbe4075", + "sha256:cae53c389825d3b46fb37538441f75d6aecc4174f615d048321b716df2757fb0", + "sha256:dd4a21253f42b8d2b48410cb31fe501d32f8b9fbeb1f55063ad102fe9c425e40", + "sha256:dde816ca9dac1d9c01dd504ea5967821606f02e510438120091b84e852367428", + "sha256:f2362f3cb0f3172c42938946dbc5b7843c2a28aec307c49100c8b38764eb6927", + "sha256:f328adcfebed9f11301eaedfa48e15bdece9b519fb27e6a8c01aa52a17ec31b3", + "sha256:f8afcf15cc511ada719a88e013cec87c11aff7b91f019295eb4530f96fe5ef2f", + "sha256:fb1bbeac803adea29cedd70781399c99138358c26d05fcbd23c13016b7f5ec65" + ], + "version": "==1.4.3" }, "typing-extensions": { "hashes": [ - "sha256:7cb407020f00f7bfc3cb3e7881628838e69d8f3fcab2f64742a5e76b2f841918", - "sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c", - "sha256:dafc7639cde7f1b6e1acc0f457842a83e722ccca8eef5270af2d74792619a89f" + "sha256:0ac0f89795dd19de6b97debb0c6af1c70987fd80a2d62d1958f7e56fcc31b497", + "sha256:50b6f157849174217d0656f99dc82fe932884fb250826c18350e159ec6cdf342", + "sha256:779383f6086d90c99ae41cf0ff39aac8a7937a9283ce0a414e5dd782f4c94a84" ], - "version": "==3.7.4.3" + "version": "==3.10.0.0" }, "urllib3": { "hashes": [ - "sha256:1b465e494e3e0d8939b50680403e3aedaa2bc434b7d5af64dfd3c958d7f5ae80", - "sha256:de3eedaad74a2683334e282005cd8d7f22f4d55fa690a2a1020a416cb0a47e73" + "sha256:753a0374df26658f99d826cfe40394a686d05985786d946fbe4165b5148f5a7c", + "sha256:a7acd0977125325f516bda9735fa7142b909a8d01e8b2e4c8108d0984e6e0098" ], - "index": "pypi", - "version": "==1.26.3" + "markers": "python_version != '3.4'", + "version": "==1.26.5" }, "virtualenv": { "hashes": [ - "sha256:49ec4eb4c224c6f7dd81bb6d0a28a09ecae5894f4e593c89b0db0885f565a107", - "sha256:83f95875d382c7abafe06bd2a4cdd1b363e1bb77e02f155ebe8ac082a916b37c" + "sha256:14fdf849f80dbb29a4eb6caa9875d476ee2a5cf76a5f5415fa2f1606010ab467", + "sha256:2b0126166ea7c9c3661f5b8e06773d28f83322de7a3ff7d06f0aed18c9de6a76" ], - "version": "==20.4.3" + "version": "==20.4.7" }, "virtualenv-clone": { "hashes": [ From 2f9f17a5c5993e65ee2b61d06f29ed5a6689d337 Mon Sep 17 00:00:00 2001 From: rashadmoarref Date: Thu, 2 Jun 2022 23:57:29 -0700 Subject: [PATCH 120/120] fix lambda deployment (#714) * fixed lambda deployment * Update aws_lambda.py corrected typo in comment --- aws_lambda/aws_lambda.py | 4 ++++ setup.py | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/aws_lambda/aws_lambda.py b/aws_lambda/aws_lambda.py index 780715a9..0b5ca884 100644 --- a/aws_lambda/aws_lambda.py +++ b/aws_lambda/aws_lambda.py @@ -704,6 +704,10 @@ def update_function( Publish=True, ) + # Wait for function to be updated + waiter = client.get_waiter('function_updated') + waiter.wait(FunctionName=cfg.get("function_name")) + kwargs = { "FunctionName": cfg.get("function_name"), "Role": role, diff --git a/setup.py b/setup.py index 5f6ca2f8..bce3297e 100644 --- a/setup.py +++ b/setup.py @@ -10,7 +10,7 @@ REQUIREMENTS = [ "boto3>=1.4.4", - "click==6.6", + "click>=6.6", "PyYAML==5.1", ] PACKAGE_DATA = {