about summary refs log tree commit diff
path: root/pkgs/development/python-modules/moto/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/python-modules/moto/default.nix')
-rw-r--r--pkgs/development/python-modules/moto/default.nix272
1 files changed, 59 insertions, 213 deletions
diff --git a/pkgs/development/python-modules/moto/default.nix b/pkgs/development/python-modules/moto/default.nix
index 1d9d077437982..f920a06488a3f 100644
--- a/pkgs/development/python-modules/moto/default.nix
+++ b/pkgs/development/python-modules/moto/default.nix
@@ -1,269 +1,115 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27, fetchpatch
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+
+# runtime
 , aws-xray-sdk
-, backports_tempfile
 , boto3
 , botocore
 , cfn-lint
+, cryptography
 , docker
 , flask
 , flask-cors
-, freezegun
+, graphql-core
+, idna
 , jinja2
 , jsondiff
-, mock
-, pyaml
+, python-dateutil
 , python-jose
 , pytz
+, pyyaml
 , requests
 , responses
-, six
 , sshpubkeys
-, sure
 , werkzeug
 , xmltodict
-, parameterized
-, idna
-, nose
+
+# tests
+, freezegun
 , pytestCheckHook
 , pytest-xdist
+, sure
 }:
 
 buildPythonPackage rec {
   pname = "moto";
-  version = "3.0.2";
+  version = "3.0.5";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-vZ1oofOYUkFETDFKwSmifvvn+bCi/6NQAxu950NYk5k=";
+    sha256 = "sha256-hfLs4K0DBaoTo5E5zmSKs6/hwEyzKsHbjV5ekRfU0Q4=";
   };
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "ecdsa<0.15" "ecdsa" \
-      --replace "idna<3,>=2.5" "idna" \
-      --replace "MarkupSafe<2.0" "MarkupSafe" \
-  '';
-
   propagatedBuildInputs = [
     aws-xray-sdk
     boto3
     botocore
     cfn-lint
+    cryptography
     docker
-    flask # required for server
+    flask
+    flask-cors
+    graphql-core
+    idna
     jinja2
     jsondiff
-    mock
-    pyaml
+    python-dateutil
     python-jose
     pytz
-    six
+    pyyaml
     requests
     responses
     sshpubkeys
     werkzeug
     xmltodict
-    idna
-  ] ++ lib.optionals isPy27 [ backports_tempfile ];
+  ];
 
   checkInputs = [
-    boto3
-    flask-cors
     freezegun
-    parameterized
-    pytestCheckHook
     pytest-xdist
+    pytestCheckHook
     sure
   ];
 
-  # Multiple test files still import boto, rather than boto3 like
-  # boto is long-deprecated and broken on python3.9
-  # https://github.com/spulec/moto/blob/63ce647123755e4c4693a89f52c254596004c098/tests/test_autoscaling/test_autoscaling.py#L2
-  # NOTE: This should change to use disabledTestFiles / disabledTestPaths once that
-  # feature stabalizes: see #113153 (mostly the discussion therein), #113167, #110700
   pytestFlagsArray = [
-    "-n $NIX_BUILD_CORES"
-    "--ignore=tests/test_awslambda/test_policy.py"
-    "--ignore=tests/test_autoscaling/test_autoscaling.py"
-    "--ignore=tests/test_autoscaling/test_cloudformation.py"
-    "--ignore=tests/test_autoscaling/test_elbv2.py"
-    "--ignore=tests/test_autoscaling/test_launch_configurations.py"
-    "--ignore=tests/test_autoscaling/test_policies.py"
-    "--ignore=tests/test_autoscaling/test_server.py"
-    "--ignore=tests/test_awslambda/test_lambda.py"
-    "--ignore=tests/test_awslambda/test_lambda_cloudformation.py"
-    "--ignore=tests/test_batch/test_cloudformation.py"
-    "--ignore=tests/test_batch/test_server.py"
-    "--ignore=tests/test_cloudformation/test_cloudformation_depends_on.py"
-    "--ignore=tests/test_cloudformation/test_cloudformation_stack_crud.py"
-    "--ignore=tests/test_cloudformation/test_cloudformation_stack_crud_boto3.py"
-    "--ignore=tests/test_cloudformation/test_cloudformation_stack_integration.py"
-    "--ignore=tests/test_cloudformation/test_stack_parsing.py"
-    "--ignore=tests/test_cloudformation/test_validate.py"
-    "--ignore=tests/test_cloudwatch/test_cloudwatch.py"
-    "--ignore=tests/test_cognitoidentity/test_server.py"
-    "--ignore=tests/test_config/test_config.py"
-    "--ignore=tests/test_core/test_auth.py"
-    "--ignore=tests/test_core/test_decorator_calls.py"
-    "--ignore=tests/test_core/test_nested.py"
-    "--ignore=tests/test_core/test_server.py"
-    "--ignore=tests/test_datapipeline/test_datapipeline.py"
-    "--ignore=tests/test_datapipeline/test_server.py"
-    "--ignore=tests/test_datasync/test_datasync.py"
-    "--ignore=tests/test_dynamodb/test_dynamodb.py"
-    "--ignore=tests/test_dynamodb/test_dynamodb_table_with_range_key.py"
-    "--ignore=tests/test_dynamodb/test_dynamodb_table_without_range_key.py"
-    "--ignore=tests/test_dynamodb/test_server.py"
-    "--ignore=tests/test_dynamodb2/test_dynamodb.py"
-    "--ignore=tests/test_dynamodb2/test_dynamodb_table_with_range_key.py"
-    "--ignore=tests/test_dynamodb2/test_dynamodb_table_without_range_key.py"
-    "--ignore=tests/test_dynamodb2/test_server.py"
-    "--ignore=tests/test_ec2/test_amazon_dev_pay.py"
-    "--ignore=tests/test_ec2/test_amis.py"
-    "--ignore=tests/test_ec2/test_availability_zones_and_regions.py"
-    "--ignore=tests/test_ec2/test_customer_gateways.py"
-    "--ignore=tests/test_ec2/test_dhcp_options.py"
-    "--ignore=tests/test_ec2/test_elastic_block_store.py"
-    "--ignore=tests/test_ec2/test_elastic_ip_addresses.py"
-    "--ignore=tests/test_ec2/test_elastic_network_interfaces.py"
-    "--ignore=tests/test_ec2/test_general.py"
-    "--ignore=tests/test_ec2/test_instances.py"
-    "--ignore=tests/test_ec2/test_internet_gateways.py"
-    "--ignore=tests/test_ec2/test_ip_addresses.py"
-    "--ignore=tests/test_ec2/test_key_pairs.py"
-    "--ignore=tests/test_ec2/test_monitoring.py"
-    "--ignore=tests/test_ec2/test_network_acls.py"
-    "--ignore=tests/test_ec2/test_placement_groups.py"
-    "--ignore=tests/test_ec2/test_regions.py"
-    "--ignore=tests/test_ec2/test_reserved_instances.py"
-    "--ignore=tests/test_ec2/test_route_tables.py"
-    "--ignore=tests/test_ec2/test_security_groups.py"
-    "--ignore=tests/test_ec2/test_spot_instances.py"
-    "--ignore=tests/test_ec2/test_subnets.py"
-    "--ignore=tests/test_ec2/test_tags.py"
-    "--ignore=tests/test_ec2/test_virtual_private_gateways.py"
-    "--ignore=tests/test_ec2/test_vm_export.py"
-    "--ignore=tests/test_ec2/test_vm_import.py"
-    "--ignore=tests/test_ec2/test_vpc_peering.py"
-    "--ignore=tests/test_ec2/test_vpcs.py"
-    "--ignore=tests/test_ec2/test_vpn_connections.py"
-    "--ignore=tests/test_ec2/test_vpn_connections.py"
-    "--ignore=tests/test_ec2/test_windows.py"
-    "--ignore=tests/test_ecs/test_ecs_boto3.py"
-    "--ignore=tests/test_elb/test_elb.py"
-    "--ignore=tests/test_elb/test_server.py"
-    "--ignore=tests/test_elbv2/test_elbv2.py"
-    "--ignore=tests/test_elbv2/test_server.py"
-    "--ignore=tests/test_emr/test_emr.py"
-    "--ignore=tests/test_emr/test_server.py"
-    "--ignore=tests/test_glacier/test_glacier_archives.py"
-    "--ignore=tests/test_glacier/test_glacier_jobs.py"
-    "--ignore=tests/test_glacier/test_glacier_vaults.py"
-    "--ignore=tests/test_iam/test_iam.py"
-    "--ignore=tests/test_iam/test_iam_cloudformation.py"
-    "--ignore=tests/test_iam/test_iam_groups.py"
-    "--ignore=tests/test_iam/test_server.py"
-    "--ignore=tests/test_iot/test_server.py"
-    "--ignore=tests/test_iotdata/test_server.py"
-    "--ignore=tests/test_kinesis/test_kinesis.py"
-    "--ignore=tests/test_kinesis/test_kinesis_cloudformation.py"
-    "--ignore=tests/test_kinesis/test_server.py"
-    "--ignore=tests/test_kinesisvideo/test_server.py"
-    "--ignore=tests/test_kinesisvideoarchivedmedia/test_server.py"
-    "--ignore=tests/test_kms/test_kms.py"
-    "--ignore=tests/test_kms/test_server.py"
-    "--ignore=tests/test_kms/test_utils.py"
-    "--ignore=tests/test_logs/test_logs.py"
-    "--ignore=tests/test_polly/test_server.py"
-    "--ignore=tests/test_rds/test_rds.py"
-    "--ignore=tests/test_rds/test_server.py"
-    "--ignore=tests/test_rds2/test_server.py"
-    "--ignore=tests/test_redshift/test_redshift.py"
-    "--ignore=tests/test_redshift/test_server.py"
-    "--ignore=tests/test_resourcegroupstaggingapi/test_resourcegroupstaggingapi.py"
-    "--ignore=tests/test_route53/test_route53.py"
-    "--ignore=tests/test_s3/test_s3.py"
-    "--ignore=tests/test_s3/test_s3_cloudformation.py"
-    "--ignore=tests/test_s3/test_s3_lifecycle.py"
-    "--ignore=tests/test_s3/test_s3_storageclass.py"
-    "--ignore=tests/test_s3/test_s3_utils.py"
-    "--ignore=tests/test_s3bucket_path/test_s3bucket_path.py"
-    "--ignore=tests/test_s3bucket_path/test_s3bucket_path_combo.py"
-    "--ignore=tests/test_secretsmanager/test_server.py"
-    "--ignore=tests/test_ses/test_server.py"
-    "--ignore=tests/test_ses/test_ses.py"
-    "--ignore=tests/test_ses/test_ses_boto3.py"
-    "--ignore=tests/test_ses/test_ses_sns_boto3.py"
-    "--ignore=tests/test_sns/test_application.py"
-    "--ignore=tests/test_sns/test_application_boto3.py"
-    "--ignore=tests/test_sns/test_publishing.py"
-    "--ignore=tests/test_sns/test_publishing_boto3.py"
-    "--ignore=tests/test_sns/test_server.py"
-    "--ignore=tests/test_sns/test_subscriptions.py"
-    "--ignore=tests/test_sns/test_subscriptions_boto3.py"
-    "--ignore=tests/test_sns/test_topics.py"
-    "--ignore=tests/test_sns/test_topics_boto3.py"
-    "--ignore=tests/test_sqs/test_server.py"
-    "--ignore=tests/test_sqs/test_sqs.py"
-    "--ignore=tests/test_ssm/test_ssm_boto3.py"
-    "--ignore=tests/test_ssm/test_ssm_docs.py"
-    "--ignore=tests/test_sts/test_server.py"
-    "--ignore=tests/test_sts/test_sts.py"
-    "--ignore=tests/test_swf/models/test_activity_task.py"
-    "--ignore=tests/test_swf/models/test_decision_task.py"
-    "--ignore=tests/test_swf/models/test_timeout.py"
-    "--ignore=tests/test_swf/models/test_workflow_execution.py"
-    "--ignore=tests/test_swf/responses/test_activity_tasks.py"
-    "--ignore=tests/test_swf/responses/test_activity_types.py"
-    "--ignore=tests/test_swf/responses/test_decision_tasks.py"
-    "--ignore=tests/test_swf/responses/test_domains.py"
-    "--ignore=tests/test_swf/responses/test_timeouts.py"
-    "--ignore=tests/test_swf/responses/test_workflow_executions.py"
-    "--ignore=tests/test_swf/responses/test_workflow_types.py"
-    # attempts web connections
-    "--ignore=tests/test_appsync/test_appsync_schema.py"
-    "--ignore=tests/test_awslambda/test_lambda_eventsourcemapping.py"
-    "--ignore=tests/test_awslambda/test_lambda_invoke.py"
-    "--ignore=tests/test_batch/test_batch_jobs.py"
-    "--ignore=tests/**/*_integration.py"
+    "--numprocesses $NIX_BUILD_CORES"
+
+    # Disable tests that try to access the network
+    "--deselect=tests/test_cloudformation/test_cloudformation_custom_resources.py::test_create_custom_lambda_resource__verify_cfnresponse_failed"
+    "--deselect=tests/test_cloudformation/test_server.py::test_cloudformation_server_get"
+    "--deselect=tests/test_core/test_decorator_calls.py::test_context_manager"
+    "--deselect=tests/test_core/test_decorator_calls.py::test_decorator_start_and_stop"
+    "--deselect=tests/test_core/test_request_mocking.py::test_passthrough_requests"
+    "--deselect=tests/test_firehose/test_firehose_put.py::test_put_record_batch_http_destination"
+    "--deselect=tests/test_firehose/test_firehose_put.py::test_put_record_http_destination"
+    "--deselect=tests/test_logs/test_integration.py::test_put_subscription_filter_with_lambda"
+    "--deselect=tests/test_sqs/test_integration.py::test_invoke_function_from_sqs_exception"
+    "--deselect=tests/test_sqs/test_sqs_integration.py::test_invoke_function_from_sqs_exception"
+    "--deselect=tests/test_stepfunctions/test_stepfunctions.py::test_state_machine_creation_fails_with_invalid_names"
+    "--deselect=tests/test_stepfunctions/test_stepfunctions.py::test_state_machine_list_executions_with_pagination"
+
+    # json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
+    "--deselect=tests/test_cloudformation/test_cloudformation_stack_integration.py::test_lambda_function"
+  ];
+
+  disabledTestPaths = [
+    # xml.parsers.expat.ExpatError: out of memory: line 1, column 0
+    "tests/test_sts/test_sts.py"
+    # botocore.exceptions.NoCredentialsError: Unable to locate credentials
+    "tests/test_redshiftdata/test_redshiftdata.py"
+    # Tries to access the network
+    "tests/test_appsync/test_appsync_schema.py"
+    "tests/test_awslambda/test_lambda_eventsourcemapping.py"
+    "tests/test_awslambda/test_lambda_invoke.py"
+    "tests/test_batch/test_batch_jobs.py"
   ];
 
   disabledTests = [
-    # these tests rely on the network
-    "test_server"
-    "test_managedblockchain_nodes"
-    "test_swf"
-    "test_simple_instance"
-    "test_passthrough_requests"
-    "test_s3_server_get"
-    "test_s3_server_bucket_create"
-    "test_s3_server_post_to_bucket"
-    "test_s3_server_put_ipv6"
-    "test_s3_server_put_ipv4"
-    "test_http_proxying_integration"
-    "test_submit_job_by_name"
-    "test_submit_job"
-    "test_list_jobs"
-    "test_terminate_job"
-    "test_idtoken_contains_kid_header"
-    "test_latest_meta_data"
-    "test_meta_data_iam"
-    "test_meta_data_security_credentials"
-    "test_meta_data_default_role"
-    "test_reset_api"
-    "test_data_api"
-    "test_requests_to_amazon_subdomains_dont_work"
-    "test_get_records_seq"
-    "test_stream_with_range_key"
-    "test_create_notebook_instance_bad_volume_size"
-    "http_destination"
-    "test_invoke_function_from_sqs_exception"
-    "test_state_machine_list_executions_with_pagination"
-    "test_put_subscription_filter_with_lambda"
-    "test_create_custom_lambda_resource__verify_cfnresponse_failed"
-    "test_state_machine_creation_fails_with_invalid_names"
-    # needs graphql
-    "test_get_schema_creation_status"
     # only appears in aarch64 currently, but best to be safe
     "test_state_machine_list_executions_with_filter"
   ];