about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/python-modules/moto/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/python-modules/moto/default.nix')
-rw-r--r--nixpkgs/pkgs/development/python-modules/moto/default.nix161
1 files changed, 161 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/python-modules/moto/default.nix b/nixpkgs/pkgs/development/python-modules/moto/default.nix
new file mode 100644
index 000000000000..071b7f3ddb64
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/moto/default.nix
@@ -0,0 +1,161 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+
+# build-system
+, setuptools
+
+# dependencies
+, boto3
+, botocore
+, cryptography
+, jinja2
+, python-dateutil
+, requests
+, responses
+, werkzeug
+, xmltodict
+
+# optional-dependencies
+, aws-xray-sdk
+, cfn-lint
+, docker
+, ecdsa
+, flask
+, flask-cors
+, graphql-core
+, jsondiff
+, multipart
+, openapi-spec-validator
+, py-partiql-parser
+, pyparsing
+, python-jose
+, pyyaml
+, sshpubkeys
+
+# tests
+, freezegun
+, pytestCheckHook
+, pytest-order
+, pytest-xdist
+}:
+
+buildPythonPackage rec {
+  pname = "moto";
+  version = "4.2.13";
+  pyproject = true;
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-Aa72pImnJcjXJb09xvcP8b7a7j4mQXUuS0cf8O3ktNc=";
+  };
+
+  nativeBuildInputs = [
+    setuptools
+  ];
+
+  propagatedBuildInputs = [
+    boto3
+    botocore
+    cryptography
+    requests
+    xmltodict
+    werkzeug
+    python-dateutil
+    responses
+    jinja2
+  ];
+
+  passthru.optional-dependencies = {
+    # non-exhaustive list of extras, that was cobbled together for testing
+    all = [
+      aws-xray-sdk
+      cfn-lint
+      docker
+      ecdsa
+      flask
+      flask-cors
+      graphql-core
+      jsondiff
+      multipart
+      openapi-spec-validator
+      py-partiql-parser
+      pyparsing
+      python-jose
+      pyyaml
+      setuptools
+      sshpubkeys
+    ] ++ python-jose.optional-dependencies.cryptography;
+  };
+
+  __darwinAllowLocalNetworking = true;
+
+  nativeCheckInputs = [
+    freezegun
+    pytestCheckHook
+    pytest-order
+    pytest-xdist
+  ] ++ passthru.optional-dependencies.all;
+
+  # Some tests depend on AWS credentials environment variables to be set.
+  env.AWS_ACCESS_KEY_ID = "ak";
+  env.AWS_SECRET_ACCESS_KEY = "sk";
+
+  pytestFlagsArray = [
+    "-m" "'not network and not requires_docker'"
+
+    # Matches upstream configuration, presumably due to expensive setup/teardown.
+    "--dist" "loadscope"
+
+    # Fails at local name resolution
+    "--deselect=tests/test_s3/test_multiple_accounts_server.py::TestAccountIdResolution::test_with_custom_request_header"
+    "--deselect=tests/test_s3/test_server.py::test_s3_server_post_cors_multiple_origins"
+    "--deselect=tests/test_s3/test_s3_file_handles.py::TestS3FileHandleClosuresUsingMocks::test_create_multipart"
+    "--deselect=tests/test_core/test_responses_module.py::TestResponsesMockWithPassThru::test_aws_and_http_requests"
+    "--deselect=tests/test_core/test_responses_module.py::TestResponsesMockWithPassThru::test_http_requests"
+
+    # Fails at resolving google.com
+    "--deselect=tests/test_firehose/test_firehose_put.py::test_put_record_http_destination"
+    "--deselect=tests/test_firehose/test_firehose_put.py::test_put_record_batch_http_destination"
+
+    # Download recordings returns faulty JSON
+    "--deselect=tests/test_moto_api/recorder/test_recorder.py::TestRecorder::test_ec2_instance_creation_recording_on"
+    "--deselect=tests/test_moto_api/recorder/test_recorder.py::TestRecorder::test_ec2_instance_creation__recording_off"
+
+    # Connection Reset by Peer, when connecting to localhost:5678
+    "--deselect=tests/test_moto_api/recorder/test_recorder.py::TestRecorder::test_replay"
+
+    # Flaky under parallel execution
+    "--deselect=tests/test_cloudformation/test_server.py::test_cloudformation_server_get"
+    "--deselect=tests/test_core/test_moto_api.py::TestModelDataResetForClassDecorator::test_should_find_bucket"
+
+    # AssertionError: assert ResourceWarning not in [<class 'ResourceWarning'>, <class 'ResourceWarning'>]
+    "--deselect=ests/test_s3/test_s3_file_handles.py::TestS3FileHandleClosuresUsingMocks::test_delete_object_with_version"
+  ];
+
+  disabledTestPaths = [
+    # Flaky under parallel execution, Connection Reset errors to localhost.
+    "tests/test_moto_api/recorder/test_recorder.py"
+
+    # Flaky under parallel execution
+    "tests/test_resourcegroupstaggingapi/*.py"
+
+    # Tries to access the network
+    "tests/test_batch/test_batch_jobs.py"
+
+    # Threading tests regularly blocks test execution
+    "tests/test_utilities/test_threaded_server.py"
+    "tests/test_s3/test_s3_bucket_policy.py"
+  ];
+
+  meta = with lib; {
+    description = "Allows your tests to easily mock out AWS Services";
+    homepage = "https://github.com/getmoto/moto";
+    changelog = "https://github.com/getmoto/moto/blob/${version}/CHANGELOG.md";
+    license = licenses.asl20;
+    maintainers = [ ];
+  };
+}