From 436ef6b940a618e2748275931994c9456d7eb8c8 Mon Sep 17 00:00:00 2001 From: Matt Garber Date: Fri, 24 Mar 2023 15:25:48 -0400 Subject: [PATCH 1/7] Env seperation cleanup, subscription API --- .pre-commit-config.yaml | 2 +- .python-version | 1 + events/event-dashboard-chart-request.json | 141 ------------------ events/event-get-chart-data.json | 125 ++++++++++++++++ pyproject.toml | 46 ++++++ scripts/cumulus_upload_data.py | 11 +- src/handlers/dashboard/get_chart_data.py | 15 +- src/handlers/dashboard/get_subscriptions.py | 26 ++++ src/handlers/site_upload/powerset_merge.py | 8 +- template.yaml | 82 ++++++++-- tests/conftest.py | 27 +++- tests/dashboard/test_get_chart_data.py | 28 +++- tests/dashboard/test_get_subscriptions.py | 28 ++++ .../test_api_gateway_authorizer.py | 2 +- tests/utils.py | 12 ++ 15 files changed, 376 insertions(+), 178 deletions(-) create mode 100644 .python-version delete mode 100644 events/event-dashboard-chart-request.json create mode 100644 events/event-get-chart-data.json create mode 100644 pyproject.toml create mode 100644 src/handlers/dashboard/get_subscriptions.py create mode 100644 tests/dashboard/test_get_subscriptions.py diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index ab59ab4..4eb1416 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -9,4 +9,4 @@ repos: # supported by your project here, or alternatively use # pre-commit's default_language_version, see # https://pre-commit.com/#top_level-default_language_version - language_version: python3.11 \ No newline at end of file + language_version: python3.10 diff --git a/.python-version b/.python-version new file mode 100644 index 0000000..63353cb --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +aggregator-env-3.10.10 \ No newline at end of file diff --git a/events/event-dashboard-chart-request.json b/events/event-dashboard-chart-request.json deleted file mode 100644 index 7f64ee1..0000000 --- a/events/event-dashboard-chart-request.json +++ /dev/null @@ -1,141 +0,0 @@ -{ - "resource": "/poc/{subscription_id}", - "path": "/poc/106", - "httpMethod": "GET", - "headers": { - "Accept": "*/*", - "Accept-Encoding": "gzip, deflate, br", - "CloudFront-Forwarded-Proto": "https", - "CloudFront-Is-Desktop-Viewer": "true", - "CloudFront-Is-Mobile-Viewer": "false", - "CloudFront-Is-SmartTV-Viewer": "false", - "CloudFront-Is-Tablet-Viewer": "false", - "CloudFront-Viewer-ASN": "40127", - "CloudFront-Viewer-Country": "US", - "Host": "vnkfm60p0c.execute-api.us-east-1.amazonaws.com", - "Postman-Token": "54b34c48-90bc-4b65-9263-3697df3fa9b9", - "User-Agent": "PostmanRuntime/7.30.1", - "Via": "1.1 405b8ed0c1df92e14644e6db88a3af5a.cloudfront.net (CloudFront)", - "X-Amz-Cf-Id": "HgPndrLdHrunAoX3ZAG1KRZwjiYh-opniHaA0JBnoOQhmmcPAujdcw==", - "x-amz-date": "20230207T144804Z", - "X-Amz-Security-Token": "FwoGZXIvYXdzEDUaDBjGb+pyZw9caRguUSLxAS1GRd64gpBoHhS8TpHCC1lWZezzzzsMFIdoUxhLU4A5NYXS+c35U1fUqC6uJGNfvLFiPjcHf9vytHiuVDwMH5omfMO6n6LeWmNLMkLYgingdkmiAueVVO7G7og2VKA3+fVYf+9GPf4Odw/C89k5C+fDJXJLYOncqxV0xxc/9SyruTBt5fYZbz/2/+LuGmHDlb+8/8w4kJfpmnvIp0TaAA21B5CnV1n3IAZc27yRmSDrfbquH70E+VHrKAod9bukdsQiHZRo1qoWWLBVE4jfDiLRrzNzMgDyOK7YBqN//kjqdBLva2HWlsiLR9+IiS+nAu8oyN7xnQYyMlJUGImUNFjhQePDiSEPdnXx4Jp83bDyO3S8okQa0+9qpDoTMpmkYqrB69j5boWg5Gk+", - "X-Amzn-Trace-Id": "Root=1-63e264a5-12016be54cfd8ff21d2350a3", - "X-Forwarded-For": "134.174.21.171, 15.158.52.7", - "X-Forwarded-Port": "443", - "X-Forwarded-Proto": "https" - }, - "multiValueHeaders": { - "Accept": [ - "*/*" - ], - "Accept-Encoding": [ - "gzip, deflate, br" - ], - "CloudFront-Forwarded-Proto": [ - "https" - ], - "CloudFront-Is-Desktop-Viewer": [ - "true" - ], - "CloudFront-Is-Mobile-Viewer": [ - "false" - ], - "CloudFront-Is-SmartTV-Viewer": [ - "false" - ], - "CloudFront-Is-Tablet-Viewer": [ - "false" - ], - "CloudFront-Viewer-ASN": [ - "40127" - ], - "CloudFront-Viewer-Country": [ - "US" - ], - "Host": [ - "vnkfm60p0c.execute-api.us-east-1.amazonaws.com" - ], - "Postman-Token": [ - "54b34c48-90bc-4b65-9263-3697df3fa9b9" - ], - "User-Agent": [ - "PostmanRuntime/7.30.1" - ], - "Via": [ - "1.1 405b8ed0c1df92e14644e6db88a3af5a.cloudfront.net (CloudFront)" - ], - "X-Amz-Cf-Id": [ - "HgPndrLdHrunAoX3ZAG1KRZwjiYh-opniHaA0JBnoOQhmmcPAujdcw==" - ], - "x-amz-date": [ - "20230207T144804Z" - ], - "X-Amz-Security-Token": [ - "FwoGZXIvYXdzEDUaDBjGb+pyZw9caRguUSLxAS1GRd64gpBoHhS8TpHCC1lWZezzzzsMFIdoUxhLU4A5NYXS+c35U1fUqC6uJGNfvLFiPjcHf9vytHiuVDwMH5omfMO6n6LeWmNLMkLYgingdkmiAueVVO7G7og2VKA3+fVYf+9GPf4Odw/C89k5C+fDJXJLYOncqxV0xxc/9SyruTBt5fYZbz/2/+LuGmHDlb+8/8w4kJfpmnvIp0TaAA21B5CnV1n3IAZc27yRmSDrfbquH70E+VHrKAod9bukdsQiHZRo1qoWWLBVE4jfDiLRrzNzMgDyOK7YBqN//kjqdBLva2HWlsiLR9+IiS+nAu8oyN7xnQYyMlJUGImUNFjhQePDiSEPdnXx4Jp83bDyO3S8okQa0+9qpDoTMpmkYqrB69j5boWg5Gk+" - ], - "X-Amzn-Trace-Id": [ - "Root=1-63e264a5-12016be54cfd8ff21d2350a3" - ], - "X-Forwarded-For": [ - "134.174.21.171, 15.158.52.7" - ], - "X-Forwarded-Port": [ - "443" - ], - "X-Forwarded-Proto": [ - "https" - ] - }, - "queryStringParameters": { - "column": "age_group", - "filter": "age_group:lte:10", - "stratifier": "covid_pcr_result" - }, - "multiValueQueryStringParameters": { - "column": [ - "age_group" - ], - "filter": [ - "age_group:lte:10" - ], - "stratifier": [ - "covid_pcr_result" - ] - }, - "pathParameters": { - "subscription_id": "106" - }, - "stageVariables": "None", - "requestContext": { - "resourceId": "qqgokr", - "resourcePath": "/poc/{subscription_id}", - "httpMethod": "GET", - "extendedRequestId": "f-Sp0ExFoAMFcBw=", - "requestTime": "07/Feb/2023:14:48:05 +0000", - "path": "/Prod/poc/106", - "accountId": "316333106222", - "protocol": "HTTP/1.1", - "stage": "Prod", - "domainPrefix": "vnkfm60p0c", - "requestTimeEpoch": 1675781285028, - "requestId": "06509c3d-d51a-4291-bf67-de7c7270a4d8", - "identity": { - "cognitoIdentityPoolId": "None", - "accountId": "None", - "cognitoIdentityId": "None", - "caller": "None", - "sourceIp": "134.174.21.171", - "principalOrgId": "None", - "accessKey": "None", - "cognitoAuthenticationType": "None", - "cognitoAuthenticationProvider": "None", - "userArn": "None", - "userAgent": "PostmanRuntime/7.30.1", - "user": "None" - }, - "domainName": "vnkfm60p0c.execute-api.us-east-1.amazonaws.com", - "apiId": "vnkfm60p0c" - }, - "body": "None", - "isBase64Encoded": false -} \ No newline at end of file diff --git a/events/event-get-chart-data.json b/events/event-get-chart-data.json new file mode 100644 index 0000000..401375b --- /dev/null +++ b/events/event-get-chart-data.json @@ -0,0 +1,125 @@ +{ + "resource": "/chart_data/{subscription_name}", + "path": "/chart_data/covid__encounter", + "httpMethod": "GET", + "headers": { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "CloudFront-Forwarded-Proto": "https", + "CloudFront-Is-Desktop-Viewer": "true", + "CloudFront-Is-Mobile-Viewer": "false", + "CloudFront-Is-SmartTV-Viewer": "false", + "CloudFront-Is-Tablet-Viewer": "false", + "CloudFront-Viewer-ASN": "40127", + "CloudFront-Viewer-Country": "US", + "Host": "effmuaxft2.execute-api.us-east-1.amazonaws.com", + "Postman-Token": "10f731c3-bb8d-4720-971c-7fd5e7cf0065", + "User-Agent": "PostmanRuntime/7.31.3", + "Via": "1.1 3ae9464b3a12f9a00e97e3c81ee98466.cloudfront.net (CloudFront)", + "X-Amz-Cf-Id": "JWyqc8QN24nqpUdGuej_gc35vpExxV017XJD8EXxM8x1OupUzCGYbg==", + "X-Amzn-Trace-Id": "Root=1-641c7f2c-5c612f3e389094297688efa0", + "X-Forwarded-For": "134.174.21.156, 70.132.21.75", + "X-Forwarded-Port": "443", + "X-Forwarded-Proto": "https" + }, + "multiValueHeaders": { + "Accept": [ + "*/*" + ], + "Accept-Encoding": [ + "gzip, deflate, br" + ], + "CloudFront-Forwarded-Proto": [ + "https" + ], + "CloudFront-Is-Desktop-Viewer": [ + "true" + ], + "CloudFront-Is-Mobile-Viewer": [ + "false" + ], + "CloudFront-Is-SmartTV-Viewer": [ + "false" + ], + "CloudFront-Is-Tablet-Viewer": [ + "false" + ], + "CloudFront-Viewer-ASN": [ + "40127" + ], + "CloudFront-Viewer-Country": [ + "US" + ], + "Host": [ + "effmuaxft2.execute-api.us-east-1.amazonaws.com" + ], + "Postman-Token": [ + "10f731c3-bb8d-4720-971c-7fd5e7cf0065" + ], + "User-Agent": [ + "PostmanRuntime/7.31.3" + ], + "Via": [ + "1.1 3ae9464b3a12f9a00e97e3c81ee98466.cloudfront.net (CloudFront)" + ], + "X-Amz-Cf-Id": [ + "JWyqc8QN24nqpUdGuej_gc35vpExxV017XJD8EXxM8x1OupUzCGYbg==" + ], + "X-Amzn-Trace-Id": [ + "Root=1-641c7f2c-5c612f3e389094297688efa0" + ], + "X-Forwarded-For": [ + "134.174.21.156, 70.132.21.75" + ], + "X-Forwarded-Port": [ + "443" + ], + "X-Forwarded-Proto": [ + "https" + ] + }, + "queryStringParameters": { + "column": "gender" + }, + "multiValueQueryStringParameters": { + "column": [ + "gender" + ] + }, + "pathParameters": { + "subscription_name": "covid__encounter" + }, + "stageVariables": "None", + "requestContext": { + "resourceId": "ta1ris", + "resourcePath": "/chart_data/{subscription_name}", + "httpMethod": "GET", + "extendedRequestId": "CPjPEHgQoAMFZ8A=", + "requestTime": "23/Mar/2023:16:32:44 +0000", + "path": "/dev/chart_data/covid__encounter", + "accountId": "316333106222", + "protocol": "HTTP/1.1", + "stage": "dev", + "domainPrefix": "effmuaxft2", + "requestTimeEpoch": 1679589164970, + "requestId": "ec3e7961-c978-45b5-af6b-46b70bcd9d7c", + "identity": { + "cognitoIdentityPoolId": "None", + "accountId": "None", + "cognitoIdentityId": "None", + "caller": "None", + "sourceIp": "134.174.21.156", + "principalOrgId": "None", + "accessKey": "None", + "cognitoAuthenticationType": "None", + "cognitoAuthenticationProvider": "None", + "userArn": "None", + "userAgent": "PostmanRuntime/7.31.3", + "user": "None" + }, + "domainName": "effmuaxft2.execute-api.us-east-1.amazonaws.com", + "apiId": "effmuaxft2" + }, + "body": "None", + "isBase64Encoded": false +} diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..6643916 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,46 @@ +[project] +name = "aggregator" +version = "0.1.0" +# This project is designed to run on the AWS serverless application framework (SAM). +# The project dependencies are handled via AWS layers. These are only required for +# local development. +dependencies= [ + "awswrangler", + "boto3", + "pandas" +] +authors = [ + { name="Matt Garber", email="matthew.garber@childrens.harvard.edu" }, +] +description = "Aggregates data from distributed hopsitals for display in Cumulus dashboard" +readme = "README.md" +license = { text="Apache License 2.0" } +classifiers = [ + "License :: OSI Approved :: Apache Software License", + "Programming Language :: Python :: 3", + "Topic :: Software Development :: Libraries :: Python Modules", +] + +[package] +include = ["src/*.py"] + +[project.urls] +"Homepage" = "https://github.com/smart-on-fhir/cumulus-aggregator" + +[build-system] +build-backend = "setuptools.build_meta" +requires = [ + "setuptools ~=63.2.0", + "wheel ~=0.37.1", +] + +[project.optional-dependencies] +test = [ + "moto[s3,athena] == 4.1.5", +] +dev = [ + "pre-commit", + "black", + "pytest", + "pytest-mock" +] diff --git a/scripts/cumulus_upload_data.py b/scripts/cumulus_upload_data.py index 72a1f6e..2a71299 100755 --- a/scripts/cumulus_upload_data.py +++ b/scripts/cumulus_upload_data.py @@ -25,16 +25,19 @@ def upload_file(args): try: api_client = boto3.client("apigateway") res = api_client.get_rest_apis() - site_api_dict = list( + api_dict = list( filter( lambda x: "cumulus-aggregator-dev" in x["tags"]["aws:cloudformation:stack-name"], res["items"], ) ) - api_id = site_api_dict[0]["id"] - url = f"https://{api_id}.execute-api.us-east-1.amazonaws.com/dev/" - + for api in api_dict: + print(api["name"]) + if api["name"] == "CumulusAggregatorSiteAPI": + url = ( + f"https://{api['id']}.execute-api.us-east-1.amazonaws.com/dev/" + ) except: print("No response recieved from AWS API gateway.") exit(1) diff --git a/src/handlers/dashboard/get_chart_data.py b/src/handlers/dashboard/get_chart_data.py index 8ed3bd8..0bb1833 100644 --- a/src/handlers/dashboard/get_chart_data.py +++ b/src/handlers/dashboard/get_chart_data.py @@ -24,8 +24,8 @@ def _get_table_cols(table_name: str) -> List: """ s3_bucket_name = os.environ.get("BUCKET_NAME") s3_key = ( - f"{BucketPath.CSVAGGREGATE.value}/{table_name.split('_')[0]}" - f"/{table_name}/{table_name}_aggregate.csv" + f"{BucketPath.CSVAGGREGATE.value}/{table_name.split('__')[0]}" + f"/{table_name}/{table_name}__aggregate.csv" ) s3_client = boto3.client("s3") s3_iter = s3_client.get_object( @@ -54,13 +54,13 @@ def _build_query(query_params: Dict, filters: List, path_params: Dict) -> str: group_str = f"{query_params['stratifier']}, {group_str}" columns.remove(query_params["stratifier"]) if len(columns) > 0: - coalesce_str = f"WHERE COALESCE ({','.join(columns)}) = '' AND" + coalesce_str = f"WHERE COALESCE ({','.join(columns)}) IS NOT Null AND" else: coalesce_str = "WHERE" query_str = ( - f"SELECT {select_str} FROM {table} " # nosec + f"SELECT {select_str} FROM \"{os.environ.get('GLUE_DB_NAME')}\".\"{table}\" " # nosec f"{coalesce_str} " - f"{query_params['column']} != '' {filter_str} " + f"{query_params['column']} IS NOT Null {filter_str} " f"GROUP BY {group_str}" ) return query_str @@ -100,8 +100,9 @@ def chart_data_handler(event, context): query = _build_query(query_params, filters, path_params) df = awswrangler.athena.read_sql_query( query, - database="cumulus-aggregator-db", - s3_output="s3://cumulus-aggregator-site-counts/awswrangler", + database=os.environ.get("GLUE_DB_NAME"), + s3_output=f"s3://{os.environ.get('BUCKET_NAME')}/awswrangler", + workgroup=os.environ.get("WORKGROUP_NAME"), ) res = _format_payload(df, query_params, filters) res = http_response(200, res) diff --git a/src/handlers/dashboard/get_subscriptions.py b/src/handlers/dashboard/get_subscriptions.py new file mode 100644 index 0000000..21e9a4f --- /dev/null +++ b/src/handlers/dashboard/get_subscriptions.py @@ -0,0 +1,26 @@ +import os + +import awswrangler +import boto3 + +from src.handlers.shared.decorators import generic_error_handler +from src.handlers.shared.functions import http_response + + +# @generic_error_handler(msg="Error retrieving subscriptions") +def subscriptions_handler(event, context): + """Retrieves list of subscriptions in Athena DB.""" + del context + boto3.setup_default_session(region_name="us-east-1") + db = os.environ.get("GLUE_DB_NAME") + df = awswrangler.athena.read_sql_query( + ( + f"SELECT table_name FROM information_schema.tables " + f"WHERE table_schema = '{db}'" + ), + database=db, + s3_output=f"s3://{os.environ.get('BUCKET_NAME')}/awswrangler", + workgroup=os.environ.get("WORKGROUP_NAME"), + ) + res = http_response(200, df.iloc[:, 0].to_json(orient="values")) + return res diff --git a/src/handlers/site_upload/powerset_merge.py b/src/handlers/site_upload/powerset_merge.py index ec660fc..5b89cdd 100644 --- a/src/handlers/site_upload/powerset_merge.py +++ b/src/handlers/site_upload/powerset_merge.py @@ -88,6 +88,7 @@ def process_upload(s3_client, s3_bucket_name: str, s3_key: str) -> None: def concat_sets(df: pandas.DataFrame, file_path: str) -> pandas.DataFrame: """concats a count dataset in a specified S3 location with in memory dataframe""" site_df = awswrangler.s3.read_parquet(file_path) + # print(site_df) data_cols = list(site_df.columns) # type: ignore[union-attr] # There is a baked in assumption with the following line related to the powerset # structures, which we will need to handle differently in the future: @@ -95,7 +96,12 @@ def concat_sets(df: pandas.DataFrame, file_path: str) -> pandas.DataFrame: # but at some point, we may have different kinds of counts, like "cnt_encounter". # We'll need to modify this once we know a bit more about the final design. data_cols.remove("cnt") - return pandas.concat([df, site_df]).groupby(data_cols).sum().reset_index() + return ( + pandas.concat([df, site_df]) + .groupby(data_cols, dropna=False) + .sum() + .reset_index() + ) def get_site_filename_suffix(s3_path: str): diff --git a/template.yaml b/template.yaml index 11f5aeb..50aa10a 100644 --- a/template.yaml +++ b/template.yaml @@ -70,7 +70,7 @@ Resources: PowersetMergeFunction: Type: AWS::Serverless::Function Properties: - FunctionName: !Sub 'CumulusAggPowersetMerge--${DeployStage}' + FunctionName: !Sub 'CumulusAggPowersetMerge-${DeployStage}' Layers: [arn:aws:lambda:us-east-1:336392948345:layer:AWSSDKPandas-Python39:1] Handler: src/handlers/site_upload/powerset_merge.powerset_merge_handler Runtime: python3.9 @@ -99,6 +99,8 @@ Resources: Environment: Variables: BUCKET_NAME: !Sub '${BucketNameParameter}-${DeployStage}' + GLUE_DB_NAME: !Sub '${GlueNameParameter}-${DeployStage}' + WORKGROUP_NAME: !Sub '${AthenaWorkgroupNameParameter}-${DeployStage}' Events: GetChartDataAPI: Type: Api @@ -108,7 +110,7 @@ Resources: Method: GET Policies: - S3CrudPolicy: - BucketName: !Sub '${BucketNameParameter}-${DeployStage}' + BucketName: !Ref AggregatorBucket - Statement: - Sid: GluePermissionsPolicy Effect: Allow @@ -117,18 +119,14 @@ Resources: - glue:*Partition* Resource: - !Sub 'arn:aws:glue:${AWS::Region}:${AWS::AccountId}:catalog' - - !Sub 'arn:aws:glue:${AWS::Region}:${AWS::AccountId}:database/${GlueNameParameter}-db-${DeployStage}' - - !Sub 'arn:aws:glue:${AWS::Region}:${AWS::AccountId}:table/${GlueNameParameter}-db-${DeployStage}/*' + - !Sub 'arn:aws:glue:${AWS::Region}:${AWS::AccountId}:database/${GlueNameParameter}-${DeployStage}' + - !Sub 'arn:aws:glue:${AWS::Region}:${AWS::AccountId}:table/${GlueNameParameter}-${DeployStage}/*' - Statement: - Sid: AthenaExecuteQueryPermissionsPolicy Effect: Allow Action: - - athena:StartQueryExecution - - athena:GetQueryResults - - athena:GetWorkGroup - - athena:GetQueryExecution - - athena:StopQueryExecution - Resource: !Sub 'arn:aws:athena:*:${AWS::AccountId}:workgroup/${AthenaWorkgroupNameParameter}-${DeployStage}' + - athena:* + Resource: !Sub 'arn:aws:athena:${AWS::Region}:${AWS::AccountId}:workgroup/${AthenaWorkgroupNameParameter}-${DeployStage}' DashboardGetMetadataFunction: Type: AWS::Serverless::Function @@ -169,8 +167,54 @@ Resources: Method: GET Policies: - S3ReadPolicy: - BucketName: !Ref BucketNameParameter + BucketName: !Sub '${BucketNameParameter}-${DeployStage}' + DashboardGetSubscriptionsFunction: + Type: AWS::Serverless::Function + Properties: + FunctionName: !Sub 'CumulusAggDashboardGetSubscriptions-${DeployStage}' + Layers: [arn:aws:lambda:us-east-1:336392948345:layer:AWSSDKPandas-Python39:1] + Handler: src/handlers/dashboard/get_subscriptions.subscriptions_handler + Runtime: python3.9 + MemorySize: 512 + Timeout: 100 + Description: Retrieve data for chart display in Cumulus Dashboard + Environment: + Variables: + BUCKET_NAME: !Sub '${BucketNameParameter}-${DeployStage}' + GLUE_DB_NAME: !Sub '${GlueNameParameter}-${DeployStage}' + WORKGROUP_NAME: !Sub '${AthenaWorkgroupNameParameter}-${DeployStage}' + Events: + GetSubscriptionsAPI: + Type: Api + Properties: + RestApiId: !Ref DashboardApiGateway + Path: /subscriptions + Method: GET + # TODO: it :should: be possible to move these policies to a central role/policy + # set that can be referenced in multiple places; see + # https://stackoverflow.com/questions/64523817/aws-sam-multiple-functions-with-same-inline-policy + # However - this causes a lot of nested policy conflicts that might require a + # more comprehensive policy/role overhaul. + Policies: + - S3CrudPolicy: + BucketName: !Ref AggregatorBucket + - Statement: + - Sid: GlueSubscriptionsPolicy + Effect: Allow + Action: + - glue:*Table* + - glue:*Partition* + Resource: + - !Sub 'arn:aws:glue:${AWS::Region}:${AWS::AccountId}:catalog' + - !Sub 'arn:aws:glue:${AWS::Region}:${AWS::AccountId}:database/${GlueNameParameter}-${DeployStage}' + - !Sub 'arn:aws:glue:${AWS::Region}:${AWS::AccountId}:table/${GlueNameParameter}-${DeployStage}/*' + - Statement: + - Sid: AthenaSubscriptionsPolicy + Effect: Allow + Action: + - athena:* + Resource: !Sub 'arn:aws:athena:${AWS::Region}:${AWS::AccountId}:workgroup/${AthenaWorkgroupNameParameter}-${DeployStage}' ### Lambda permissions @@ -209,7 +253,7 @@ Resources: Properties: CatalogId: !Ref AWS::AccountId DatabaseInput: - Name: !Sub '${GlueNameParameter}-db-${DeployStage}' + Name: !Sub '${GlueNameParameter}-${DeployStage}' Description: Database for serving data to Cumulus Dashboard GlueCrawler: @@ -240,7 +284,18 @@ Resources: - site_metadata/** - site_upload/** - + AthenaWorkGroup: + Type: AWS::Athena::WorkGroup + Properties: + Name: !Sub '${AthenaWorkgroupNameParameter}-${DeployStage}' + State: ENABLED + WorkGroupConfiguration: + EnforceWorkGroupConfiguration: True + PublishCloudWatchMetricsEnabled: True + EngineVersion: + SelectedEngineVersion: "Athena engine version 3" + ResultConfiguration: + OutputLocation: !Sub "s3://${BucketNameParameter}-${DeployStage}/athena/" ### IAM Roles @@ -284,6 +339,7 @@ Resources: - s3:PutObject Resource: !Sub "arn:aws:s3:::${BucketNameParameter}-${DeployStage}/aggregates/*" + ### API Gateways # If you need to enable logging at the API Gateway level, uncomment the nodes diff --git a/tests/conftest.py b/tests/conftest.py index bfe561b..24cc5b9 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -8,7 +8,7 @@ from src.handlers.shared.enums import BucketPath from src.handlers.shared.functions import read_metadata, write_metadata -from tests.utils import get_mock_metadata, get_mock_auth, TEST_BUCKET, ITEM_COUNT +from tests.utils import get_mock_metadata, ITEM_COUNT, TEST_BUCKET, TEST_GLUE_DB def _init_mock_data(s3_client, bucket_name, site, study, subscription): @@ -46,7 +46,30 @@ def mock_bucket(): s3.stop() -def test_mock_bucket(): +""" Leaving this unused here for now - there are some low level inconsistencies between moto + and AWS wrangler w.r.t. how workgroups are mocked out, but we might be able to + use this in the future/mock AWSwranger below the entrypoint if we are concerned. + + https://stackoverflow.com/a/73208335/5318482 discusses this a bit, but doesn't + adress mocking out the aws workgroup response (though setting the workgroup + to primary helped a bit since it has default permissions). +""" + + +@pytest.fixture +def mock_db(): + athena = mock_athena() + athena.start() + athena_client = boto3.client("athena", region_name="us-east-1") + athena_client.start_query_execution( + QueryString=f"create database {TEST_GLUE_DB}", + ResultConfiguration={"OutputLocation": f"s3://{TEST_BUCKET}/athena/"}, + ) + yield + athena.stop() + + +def test_mock_bucket(mock_bucket): s3_client = boto3.client("s3", region_name="us-east-1") item = s3_client.list_objects_v2(Bucket=TEST_BUCKET) assert (len(item["Contents"])) == ITEM_COUNT diff --git a/tests/dashboard/test_get_chart_data.py b/tests/dashboard/test_get_chart_data.py index f7625d3..90976f5 100644 --- a/tests/dashboard/test_get_chart_data.py +++ b/tests/dashboard/test_get_chart_data.py @@ -1,4 +1,5 @@ import json +import os import pandas import pytest @@ -6,6 +7,7 @@ from unittest import mock from src.handlers.dashboard import get_chart_data +from tests.utils import TEST_BUCKET, TEST_GLUE_DB, TEST_WORKGROUP def mock_get_table_cols(name): @@ -22,6 +24,14 @@ def mock_data_frame(filter): @mock.patch( "src.handlers.dashboard.get_chart_data._get_table_cols", mock_get_table_cols ) +@mock.patch.dict( + os.environ, + { + "BUCKET_NAME": TEST_BUCKET, + "GLUE_DB_NAME": TEST_GLUE_DB, + "WORKGROUP_NAME": TEST_WORKGROUP, + }, +) @pytest.mark.parametrize( "query_params,filters,path_params,query_str", [ @@ -29,24 +39,24 @@ def mock_data_frame(filter): {"column": "gender"}, [], {"subscription_name": "test_study"}, - "SELECT gender, sum(cnt) as cnt FROM test_study " - "WHERE COALESCE (race) = '' AND gender != '' " + f'SELECT gender, sum(cnt) as cnt FROM "{TEST_GLUE_DB}"."test_study" ' + "WHERE COALESCE (race) IS NOT Null AND gender IS NOT Null " "GROUP BY gender", ), ( {"column": "gender", "stratifier": "race"}, [], {"subscription_name": "test_study"}, - "SELECT race, gender, sum(cnt) as cnt FROM test_study " - "WHERE gender != '' " + f'SELECT race, gender, sum(cnt) as cnt FROM "{TEST_GLUE_DB}"."test_study" ' + "WHERE gender IS NOT Null " "GROUP BY race, gender", ), ( {"column": "gender"}, ["gender:strEq:female"], {"subscription_name": "test_study"}, - "SELECT gender, sum(cnt) as cnt FROM test_study " - "WHERE COALESCE (race) = '' AND gender != '' " + f'SELECT gender, sum(cnt) as cnt FROM "{TEST_GLUE_DB}"."test_study" ' + "WHERE COALESCE (race) IS NOT Null AND gender IS NOT Null " "AND gender LIKE 'female' " "GROUP BY gender", ), @@ -54,8 +64,8 @@ def mock_data_frame(filter): {"column": "gender", "stratifier": "race"}, ["gender:strEq:female"], {"subscription_name": "test_study"}, - "SELECT race, gender, sum(cnt) as cnt FROM test_study " - "WHERE gender != '' " + f'SELECT race, gender, sum(cnt) as cnt FROM "{TEST_GLUE_DB}"."test_study" ' + "WHERE gender IS NOT Null " "AND gender LIKE 'female' " "GROUP BY race, gender", ), @@ -63,6 +73,8 @@ def mock_data_frame(filter): ) def test_build_query(query_params, filters, path_params, query_str): query = get_chart_data._build_query(query_params, filters, path_params) + print(query) + print(query_str) assert query == query_str diff --git a/tests/dashboard/test_get_subscriptions.py b/tests/dashboard/test_get_subscriptions.py new file mode 100644 index 0000000..93fc9d7 --- /dev/null +++ b/tests/dashboard/test_get_subscriptions.py @@ -0,0 +1,28 @@ +import os + +from unittest import mock + +import awswrangler +import pandas + +from src.handlers.dashboard.get_subscriptions import subscriptions_handler +from tests.utils import get_mock_metadata, get_mock_env, SUBSCRIPTION_COUNT + + +def mock_response(*args, **kwargs): + meta = get_mock_metadata() + table_names = [] + for site in meta.keys(): + for study in meta[site].keys(): + for subscription in meta[site][study].keys(): + table_names.append(f"{study}__{subscription}") + return pandas.DataFrame.from_dict({"0": list(set(table_names))}) + + +@mock.patch.dict(os.environ, get_mock_env()) +def test_get_subscriptions(mocker): + mocker_read = mocker.patch("awswrangler.athena.read_sql_query") + mocker_read.side_effect = mock_response + res = subscriptions_handler({}, {}) + assert res["statusCode"] == 200 + assert SUBSCRIPTION_COUNT == 2 diff --git a/tests/site_upload/test_api_gateway_authorizer.py b/tests/site_upload/test_api_gateway_authorizer.py index 3e90a59..1ded529 100644 --- a/tests/site_upload/test_api_gateway_authorizer.py +++ b/tests/site_upload/test_api_gateway_authorizer.py @@ -28,4 +28,4 @@ def test_validate_pw(auth, expects, mock_bucket, mocker_site_json): "methodArn": "arn:aws:execute-api:us-east-1:11223:123/Prod/post/lambda", } with expects: - auth = lambda_handler(event, {}) + res = lambda_handler(event, {}) diff --git a/tests/utils.py b/tests/utils.py index 8715c81..c8553ff 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -1,6 +1,10 @@ """Storage for state variables/methods shared by test modules""" + TEST_BUCKET = "cumulus-aggregator-site-counts-test" +TEST_WORKGROUP = "cumulus-aggregator-test-wg" +TEST_GLUE_DB = "cumulus-aggregator-test-db" ITEM_COUNT = 7 +SUBSCRIPTION_COUNT = 2 def get_mock_metadata(): @@ -57,3 +61,11 @@ def get_mock_auth(): # u/a: hope test3 "aG9wZTp0ZXN0Mw==": {"site": "chicago_hope"}, } + + +def get_mock_env(): + return { + "BUCKET_NAME": TEST_BUCKET, + "GLUE_DB_NAME": TEST_GLUE_DB, + "WORKGROUP_NAME": TEST_WORKGROUP, + } From 8edead97299b5a50839af89c37f687119a04bee1 Mon Sep 17 00:00:00 2001 From: Matt Garber Date: Mon, 27 Mar 2023 09:54:11 -0400 Subject: [PATCH 2/7] print trim --- src/handlers/site_upload/powerset_merge.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/handlers/site_upload/powerset_merge.py b/src/handlers/site_upload/powerset_merge.py index 5b89cdd..6f39af8 100644 --- a/src/handlers/site_upload/powerset_merge.py +++ b/src/handlers/site_upload/powerset_merge.py @@ -88,7 +88,6 @@ def process_upload(s3_client, s3_bucket_name: str, s3_key: str) -> None: def concat_sets(df: pandas.DataFrame, file_path: str) -> pandas.DataFrame: """concats a count dataset in a specified S3 location with in memory dataframe""" site_df = awswrangler.s3.read_parquet(file_path) - # print(site_df) data_cols = list(site_df.columns) # type: ignore[union-attr] # There is a baked in assumption with the following line related to the powerset # structures, which we will need to handle differently in the future: From 3f53371450ca4dab2378d60db3e5d291ffa170a9 Mon Sep 17 00:00:00 2001 From: Matt Garber Date: Mon, 27 Mar 2023 11:24:58 -0400 Subject: [PATCH 3/7] trimming debug --- docs/architecture.png | Bin 0 -> 102286 bytes pyproject.toml | 3 --- ...gned_post_test.cpython-310-pytest-7.2.0.pyc | Bin 0 -> 851 bytes scripts/cumulus_upload_data.py | 1 - src/handlers/dashboard/get_subscriptions.py | 8 ++++++-- tests/dashboard/test_get_chart_data.py | 2 -- 6 files changed, 6 insertions(+), 8 deletions(-) create mode 100644 docs/architecture.png create mode 100644 scripts/__pycache__/presigned_post_test.cpython-310-pytest-7.2.0.pyc diff --git a/docs/architecture.png b/docs/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..c7e6842f7dc7cae5da15f6048102284301fc2ba7 GIT binary patch literal 102286 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%0DXeLb`x0_t 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 z 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 literal 0 HcmV?d00001 diff --git a/pyproject.toml b/pyproject.toml index 6643916..517e7a7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,9 +21,6 @@ classifiers = [ "Topic :: Software Development :: Libraries :: Python Modules", ] -[package] -include = ["src/*.py"] - [project.urls] "Homepage" = "https://github.com/smart-on-fhir/cumulus-aggregator" diff --git a/scripts/__pycache__/presigned_post_test.cpython-310-pytest-7.2.0.pyc b/scripts/__pycache__/presigned_post_test.cpython-310-pytest-7.2.0.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f1cd12b13e319d77a985131cbdfcb1d1ba60103f GIT binary patch literal 851 zcma)4O>fgM7`79)b=$Q2>NYwMs&?CfMF@!lLTDEd2ZSaugzzPD%Es1^zYpQ-mDFJ@Ijm#u7B)Tjt!UjY;A5I~*Q6^^~wqp&_ zLUeOL4g;Ga#|VzW`^36h)t1rt3*uDr0y0NOy1C-2fr`$=+9JAksueoPtY}}3AgV_2 zh3MO8zk(l6|96S8P6}(no7G*d&+*5zT$L$2skUYI5%zsfIqiC!GN0j#{o*L;(!dYs K9=-FkSNjcUBm)Tm literal 0 HcmV?d00001 diff --git a/scripts/cumulus_upload_data.py b/scripts/cumulus_upload_data.py index 2a71299..32a887f 100755 --- a/scripts/cumulus_upload_data.py +++ b/scripts/cumulus_upload_data.py @@ -33,7 +33,6 @@ def upload_file(args): ) ) for api in api_dict: - print(api["name"]) if api["name"] == "CumulusAggregatorSiteAPI": url = ( f"https://{api['id']}.execute-api.us-east-1.amazonaws.com/dev/" diff --git a/src/handlers/dashboard/get_subscriptions.py b/src/handlers/dashboard/get_subscriptions.py index 21e9a4f..584bec7 100644 --- a/src/handlers/dashboard/get_subscriptions.py +++ b/src/handlers/dashboard/get_subscriptions.py @@ -7,20 +7,24 @@ from src.handlers.shared.functions import http_response -# @generic_error_handler(msg="Error retrieving subscriptions") +@generic_error_handler(msg="Error retrieving subscriptions") def subscriptions_handler(event, context): """Retrieves list of subscriptions in Athena DB.""" del context boto3.setup_default_session(region_name="us-east-1") db = os.environ.get("GLUE_DB_NAME") + # TODO: If awswrangler adds support for SHOW TABLE sql queries, cut this + # query over to that format - it's much faster. df = awswrangler.athena.read_sql_query( ( f"SELECT table_name FROM information_schema.tables " - f"WHERE table_schema = '{db}'" + f"WHERE table_schema = '{db}'" # nosec ), database=db, s3_output=f"s3://{os.environ.get('BUCKET_NAME')}/awswrangler", workgroup=os.environ.get("WORKGROUP_NAME"), ) + # df.iloc[:, 0] is getting the first pandas Series from the awswrangler datafame. + # Should be insulated from the change mentioned above res = http_response(200, df.iloc[:, 0].to_json(orient="values")) return res diff --git a/tests/dashboard/test_get_chart_data.py b/tests/dashboard/test_get_chart_data.py index 90976f5..4674ec0 100644 --- a/tests/dashboard/test_get_chart_data.py +++ b/tests/dashboard/test_get_chart_data.py @@ -73,8 +73,6 @@ def mock_data_frame(filter): ) def test_build_query(query_params, filters, path_params, query_str): query = get_chart_data._build_query(query_params, filters, path_params) - print(query) - print(query_str) assert query == query_str From 70ea97dafee2b19d90f773cf5fbf3774abfca2fc Mon Sep 17 00:00:00 2001 From: Matt Garber Date: Mon, 27 Mar 2023 13:56:35 -0400 Subject: [PATCH 4/7] mocker linting, 3.9 cleanup, resorted athena permissions --- .gitignore | 2 ++ .python-version | 1 - pyproject.toml | 9 ++++++--- template.yaml | 6 +++++- tests/dashboard/test_get_chart_data.py | 11 ++--------- tests/dashboard/test_get_subscriptions.py | 8 +++++--- tests/site_upload/test_api_gateway_authorizer.py | 4 +++- tests/utils.py | 14 +++++++++----- 8 files changed, 32 insertions(+), 23 deletions(-) delete mode 100644 .python-version diff --git a/.gitignore b/.gitignore index 1ef10d2..757da83 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,10 @@ .aws-sam +.python-version samconfig.toml data/ auth.json metadata.json +*.png # Byte-compiled / optimized / DLL files __pycache__/ diff --git a/.python-version b/.python-version deleted file mode 100644 index 63353cb..0000000 --- a/.python-version +++ /dev/null @@ -1 +0,0 @@ -aggregator-env-3.10.10 \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 517e7a7..661bc9b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,11 +33,14 @@ requires = [ [project.optional-dependencies] test = [ + # TODO: We are investigating some new features around athena mocks, + # which currently only exist in 4.1.5 and are broken in 4.1.6dev. Swing back + # around on this as the functionality matures. "moto[s3,athena] == 4.1.5", + "pytest", + "pytest-mock" ] dev = [ "pre-commit", - "black", - "pytest", - "pytest-mock" + "black" ] diff --git a/template.yaml b/template.yaml index 50aa10a..5a8e6c5 100644 --- a/template.yaml +++ b/template.yaml @@ -213,7 +213,11 @@ Resources: - Sid: AthenaSubscriptionsPolicy Effect: Allow Action: - - athena:* + - athena:StartQueryExecution + - athena:GetQueryResults + - athena:GetWorkGroup + - athena:GetQueryExecution + - athena:StopQueryExecution Resource: !Sub 'arn:aws:athena:${AWS::Region}:${AWS::AccountId}:workgroup/${AthenaWorkgroupNameParameter}-${DeployStage}' ### Lambda permissions diff --git a/tests/dashboard/test_get_chart_data.py b/tests/dashboard/test_get_chart_data.py index 4674ec0..643afe9 100644 --- a/tests/dashboard/test_get_chart_data.py +++ b/tests/dashboard/test_get_chart_data.py @@ -7,7 +7,7 @@ from unittest import mock from src.handlers.dashboard import get_chart_data -from tests.utils import TEST_BUCKET, TEST_GLUE_DB, TEST_WORKGROUP +from tests.utils import MOCK_ENV, TEST_BUCKET, TEST_GLUE_DB, TEST_WORKGROUP def mock_get_table_cols(name): @@ -24,14 +24,7 @@ def mock_data_frame(filter): @mock.patch( "src.handlers.dashboard.get_chart_data._get_table_cols", mock_get_table_cols ) -@mock.patch.dict( - os.environ, - { - "BUCKET_NAME": TEST_BUCKET, - "GLUE_DB_NAME": TEST_GLUE_DB, - "WORKGROUP_NAME": TEST_WORKGROUP, - }, -) +@mock.patch.dict(os.environ, MOCK_ENV) @pytest.mark.parametrize( "query_params,filters,path_params,query_str", [ diff --git a/tests/dashboard/test_get_subscriptions.py b/tests/dashboard/test_get_subscriptions.py index 93fc9d7..731b886 100644 --- a/tests/dashboard/test_get_subscriptions.py +++ b/tests/dashboard/test_get_subscriptions.py @@ -5,8 +5,10 @@ import awswrangler import pandas +from pytest_mock import MockerFixture + from src.handlers.dashboard.get_subscriptions import subscriptions_handler -from tests.utils import get_mock_metadata, get_mock_env, SUBSCRIPTION_COUNT +from tests.utils import get_mock_metadata, MOCK_ENV, SUBSCRIPTION_COUNT def mock_response(*args, **kwargs): @@ -19,8 +21,8 @@ def mock_response(*args, **kwargs): return pandas.DataFrame.from_dict({"0": list(set(table_names))}) -@mock.patch.dict(os.environ, get_mock_env()) -def test_get_subscriptions(mocker): +@mock.patch.dict(os.environ, MOCK_ENV) +def test_get_subscriptions(mocker: MockerFixture): mocker_read = mocker.patch("awswrangler.athena.read_sql_query") mocker_read.side_effect = mock_response res = subscriptions_handler({}, {}) diff --git a/tests/site_upload/test_api_gateway_authorizer.py b/tests/site_upload/test_api_gateway_authorizer.py index 1ded529..1b40258 100644 --- a/tests/site_upload/test_api_gateway_authorizer.py +++ b/tests/site_upload/test_api_gateway_authorizer.py @@ -3,12 +3,14 @@ from contextlib import nullcontext as does_not_raise +from pytest_mock import MockerFixture + from src.handlers.site_upload.api_gateway_authorizer import lambda_handler from tests.utils import get_mock_auth @pytest.fixture -def mocker_site_json(mocker): +def mocker_site_json(mocker: MockerFixture): mocked_site_json = mocker.mock_open(read_data=json.dumps(get_mock_auth())) mocker.patch("builtins.open", mocked_site_json) diff --git a/tests/utils.py b/tests/utils.py index c8553ff..21ff2a5 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -6,6 +6,14 @@ ITEM_COUNT = 7 SUBSCRIPTION_COUNT = 2 +# This is a convenience for loading into os.environ with mock.patch.dict. +# Other cases should probably use the getter version below. +MOCK_ENV = { + "BUCKET_NAME": TEST_BUCKET, + "GLUE_DB_NAME": TEST_GLUE_DB, + "WORKGROUP_NAME": TEST_WORKGROUP, +} + def get_mock_metadata(): return { @@ -64,8 +72,4 @@ def get_mock_auth(): def get_mock_env(): - return { - "BUCKET_NAME": TEST_BUCKET, - "GLUE_DB_NAME": TEST_GLUE_DB, - "WORKGROUP_NAME": TEST_WORKGROUP, - } + return MOCK_ENV From 9e7d542284f58e2dfa5ba5bc9cc82bf9d01173be Mon Sep 17 00:00:00 2001 From: Matt Garber Date: Mon, 27 Mar 2023 14:07:22 -0400 Subject: [PATCH 5/7] manual lint run and correction --- pyproject.toml | 6 +++++- src/handlers/dashboard/get_chart_data.py | 3 ++- src/handlers/dashboard/get_subscriptions.py | 4 ++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 661bc9b..db44f85 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,6 +41,10 @@ test = [ "pytest-mock" ] dev = [ + "bandit", + "black", "pre-commit", - "black" + "pylint", + "pycodestyle" + ] diff --git a/src/handlers/dashboard/get_chart_data.py b/src/handlers/dashboard/get_chart_data.py index 0bb1833..370a86e 100644 --- a/src/handlers/dashboard/get_chart_data.py +++ b/src/handlers/dashboard/get_chart_data.py @@ -58,7 +58,8 @@ def _build_query(query_params: Dict, filters: List, path_params: Dict) -> str: else: coalesce_str = "WHERE" query_str = ( - f"SELECT {select_str} FROM \"{os.environ.get('GLUE_DB_NAME')}\".\"{table}\" " # nosec + f"SELECT {select_str} " # nosec + f"FROM \"{os.environ.get('GLUE_DB_NAME')}\".\"{table}\" " f"{coalesce_str} " f"{query_params['column']} IS NOT Null {filter_str} " f"GROUP BY {group_str}" diff --git a/src/handlers/dashboard/get_subscriptions.py b/src/handlers/dashboard/get_subscriptions.py index 584bec7..c6f0e15 100644 --- a/src/handlers/dashboard/get_subscriptions.py +++ b/src/handlers/dashboard/get_subscriptions.py @@ -1,3 +1,6 @@ +""" Lambda for retrieving list of available subscriptions +""" + import os import awswrangler @@ -10,6 +13,7 @@ @generic_error_handler(msg="Error retrieving subscriptions") def subscriptions_handler(event, context): """Retrieves list of subscriptions in Athena DB.""" + del event del context boto3.setup_default_session(region_name="us-east-1") db = os.environ.get("GLUE_DB_NAME") From 4e06b04cebfefbcb33f4df61999e449b42de0468 Mon Sep 17 00:00:00 2001 From: Matt Garber Date: Mon, 27 Mar 2023 14:08:04 -0400 Subject: [PATCH 6/7] documentation branch leak plugging --- docs/architecture.png | Bin 102286 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 docs/architecture.png diff --git a/docs/architecture.png b/docs/architecture.png deleted file mode 100644 index c7e6842f7dc7cae5da15f6048102284301fc2ba7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102286 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%0DXeLb`x0_t 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 z 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 From cff7d4e2ba0449b080e0ffcc50b767e074c99d49 Mon Sep 17 00:00:00 2001 From: Matt Garber Date: Mon, 27 Mar 2023 14:09:09 -0400 Subject: [PATCH 7/7] black targeting --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 4eb1416..f3b13f7 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -9,4 +9,4 @@ repos: # supported by your project here, or alternatively use # pre-commit's default_language_version, see # https://pre-commit.com/#top_level-default_language_version - language_version: python3.10 + language_version: python3.9