METADATA 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. Metadata-Version: 2.1
  2. Name: moto
  3. Version: 4.0.8
  4. Summary: A library that allows your python tests to easily mock out the boto library
  5. Home-page: https://github.com/spulec/moto
  6. Author: Steve Pulec
  7. Author-email: spulec@gmail.com
  8. License: Apache License 2.0
  9. Project-URL: Documentation, http://docs.getmoto.org/en/latest/
  10. Project-URL: Issue tracker, https://github.com/spulec/moto/issues
  11. Project-URL: Changelog, https://github.com/spulec/moto/blob/master/CHANGELOG.md
  12. Classifier: Programming Language :: Python :: 3
  13. Classifier: Programming Language :: Python :: 3.6
  14. Classifier: Programming Language :: Python :: 3.7
  15. Classifier: Programming Language :: Python :: 3.8
  16. Classifier: Programming Language :: Python :: 3.9
  17. Classifier: Programming Language :: Python :: 3.10
  18. Classifier: License :: OSI Approved :: Apache Software License
  19. Classifier: Topic :: Software Development :: Testing
  20. Requires-Python: >=3.6
  21. Description-Content-Type: text/markdown
  22. License-File: LICENSE
  23. License-File: AUTHORS.md
  24. Requires-Dist: boto3 (>=1.9.201)
  25. Requires-Dist: botocore (>=1.12.201)
  26. Requires-Dist: cryptography (>=3.3.1)
  27. Requires-Dist: requests (>=2.5)
  28. Requires-Dist: xmltodict
  29. Requires-Dist: werkzeug (!=2.2.0,!=2.2.1,>=0.5)
  30. Requires-Dist: pytz
  31. Requires-Dist: python-dateutil (<3.0.0,>=2.1)
  32. Requires-Dist: responses (>=0.13.0)
  33. Requires-Dist: MarkupSafe (!=2.0.0a1)
  34. Requires-Dist: Jinja2 (>=2.10.1)
  35. Requires-Dist: importlib-metadata ; python_version < "3.8"
  36. Provides-Extra: acm
  37. Provides-Extra: all
  38. Requires-Dist: PyYAML (>=5.1) ; extra == 'all'
  39. Requires-Dist: python-jose[cryptography] (<4.0.0,>=3.1.0) ; extra == 'all'
  40. Requires-Dist: ecdsa (!=0.15) ; extra == 'all'
  41. Requires-Dist: docker (>=2.5.1) ; extra == 'all'
  42. Requires-Dist: graphql-core ; extra == 'all'
  43. Requires-Dist: jsondiff (>=1.1.2) ; extra == 'all'
  44. Requires-Dist: aws-xray-sdk (!=0.96,>=0.93) ; extra == 'all'
  45. Requires-Dist: idna (<4,>=2.5) ; extra == 'all'
  46. Requires-Dist: cfn-lint (>=0.4.0) ; extra == 'all'
  47. Requires-Dist: sshpubkeys (>=3.1.0) ; extra == 'all'
  48. Requires-Dist: pyparsing (>=3.0.7) ; extra == 'all'
  49. Requires-Dist: openapi-spec-validator (>=0.2.8) ; extra == 'all'
  50. Requires-Dist: setuptools ; extra == 'all'
  51. Provides-Extra: amp
  52. Provides-Extra: apigateway
  53. Requires-Dist: PyYAML (>=5.1) ; extra == 'apigateway'
  54. Requires-Dist: python-jose[cryptography] (<4.0.0,>=3.1.0) ; extra == 'apigateway'
  55. Requires-Dist: ecdsa (!=0.15) ; extra == 'apigateway'
  56. Requires-Dist: openapi-spec-validator (>=0.2.8) ; extra == 'apigateway'
  57. Provides-Extra: apigatewayv2
  58. Requires-Dist: PyYAML (>=5.1) ; extra == 'apigatewayv2'
  59. Provides-Extra: applicationautoscaling
  60. Provides-Extra: appsync
  61. Requires-Dist: graphql-core ; extra == 'appsync'
  62. Provides-Extra: athena
  63. Provides-Extra: autoscaling
  64. Provides-Extra: awslambda
  65. Requires-Dist: docker (>=2.5.1) ; extra == 'awslambda'
  66. Provides-Extra: batch
  67. Requires-Dist: docker (>=2.5.1) ; extra == 'batch'
  68. Provides-Extra: batch_simple
  69. Provides-Extra: budgets
  70. Provides-Extra: ce
  71. Provides-Extra: cloudformation
  72. Requires-Dist: PyYAML (>=5.1) ; extra == 'cloudformation'
  73. Requires-Dist: python-jose[cryptography] (<4.0.0,>=3.1.0) ; extra == 'cloudformation'
  74. Requires-Dist: ecdsa (!=0.15) ; extra == 'cloudformation'
  75. Requires-Dist: docker (>=2.5.1) ; extra == 'cloudformation'
  76. Requires-Dist: graphql-core ; extra == 'cloudformation'
  77. Requires-Dist: jsondiff (>=1.1.2) ; extra == 'cloudformation'
  78. Requires-Dist: aws-xray-sdk (!=0.96,>=0.93) ; extra == 'cloudformation'
  79. Requires-Dist: idna (<4,>=2.5) ; extra == 'cloudformation'
  80. Requires-Dist: cfn-lint (>=0.4.0) ; extra == 'cloudformation'
  81. Requires-Dist: sshpubkeys (>=3.1.0) ; extra == 'cloudformation'
  82. Requires-Dist: pyparsing (>=3.0.7) ; extra == 'cloudformation'
  83. Requires-Dist: openapi-spec-validator (>=0.2.8) ; extra == 'cloudformation'
  84. Requires-Dist: setuptools ; extra == 'cloudformation'
  85. Provides-Extra: cloudfront
  86. Provides-Extra: cloudtrail
  87. Provides-Extra: cloudwatch
  88. Provides-Extra: codebuild
  89. Provides-Extra: codecommit
  90. Provides-Extra: codepipeline
  91. Provides-Extra: cognitoidentity
  92. Provides-Extra: cognitoidp
  93. Requires-Dist: python-jose[cryptography] (<4.0.0,>=3.1.0) ; extra == 'cognitoidp'
  94. Requires-Dist: ecdsa (!=0.15) ; extra == 'cognitoidp'
  95. Provides-Extra: comprehend
  96. Provides-Extra: config
  97. Provides-Extra: databrew
  98. Provides-Extra: datapipeline
  99. Provides-Extra: datasync
  100. Provides-Extra: dax
  101. Provides-Extra: dms
  102. Provides-Extra: ds
  103. Requires-Dist: sshpubkeys (>=3.1.0) ; extra == 'ds'
  104. Provides-Extra: dynamodb
  105. Requires-Dist: docker (>=2.5.1) ; extra == 'dynamodb'
  106. Provides-Extra: dynamodb2
  107. Requires-Dist: docker (>=2.5.1) ; extra == 'dynamodb2'
  108. Provides-Extra: dynamodbstreams
  109. Requires-Dist: docker (>=2.5.1) ; extra == 'dynamodbstreams'
  110. Provides-Extra: ebs
  111. Requires-Dist: sshpubkeys (>=3.1.0) ; extra == 'ebs'
  112. Provides-Extra: ec2
  113. Requires-Dist: sshpubkeys (>=3.1.0) ; extra == 'ec2'
  114. Provides-Extra: ec2instanceconnect
  115. Provides-Extra: ecr
  116. Provides-Extra: ecs
  117. Provides-Extra: efs
  118. Requires-Dist: sshpubkeys (>=3.1.0) ; extra == 'efs'
  119. Provides-Extra: eks
  120. Provides-Extra: elasticache
  121. Provides-Extra: elasticbeanstalk
  122. Provides-Extra: elastictranscoder
  123. Provides-Extra: elb
  124. Provides-Extra: elbv2
  125. Provides-Extra: emr
  126. Provides-Extra: emrcontainers
  127. Provides-Extra: emrserverless
  128. Provides-Extra: es
  129. Provides-Extra: events
  130. Provides-Extra: firehose
  131. Provides-Extra: forecast
  132. Provides-Extra: glacier
  133. Provides-Extra: glue
  134. Requires-Dist: pyparsing (>=3.0.7) ; extra == 'glue'
  135. Provides-Extra: greengrass
  136. Provides-Extra: guardduty
  137. Provides-Extra: iam
  138. Provides-Extra: iot
  139. Provides-Extra: iotdata
  140. Requires-Dist: jsondiff (>=1.1.2) ; extra == 'iotdata'
  141. Provides-Extra: kinesis
  142. Provides-Extra: kinesisvideo
  143. Provides-Extra: kinesisvideoarchivedmedia
  144. Provides-Extra: kms
  145. Provides-Extra: lambda
  146. Provides-Extra: logs
  147. Provides-Extra: managedblockchain
  148. Provides-Extra: mediaconnect
  149. Provides-Extra: medialive
  150. Provides-Extra: mediapackage
  151. Provides-Extra: mediastore
  152. Provides-Extra: mediastoredata
  153. Provides-Extra: meteringmarketplace
  154. Provides-Extra: mq
  155. Provides-Extra: opsworks
  156. Provides-Extra: organizations
  157. Provides-Extra: personalize
  158. Provides-Extra: pinpoint
  159. Provides-Extra: polly
  160. Provides-Extra: quicksight
  161. Provides-Extra: ram
  162. Provides-Extra: rds
  163. Provides-Extra: redshift
  164. Provides-Extra: redshiftdata
  165. Provides-Extra: rekognition
  166. Provides-Extra: resourcegroups
  167. Provides-Extra: resourcegroupstaggingapi
  168. Provides-Extra: route53
  169. Provides-Extra: route53resolver
  170. Requires-Dist: sshpubkeys (>=3.1.0) ; extra == 'route53resolver'
  171. Provides-Extra: s3
  172. Requires-Dist: PyYAML (>=5.1) ; extra == 's3'
  173. Provides-Extra: s3control
  174. Provides-Extra: sagemaker
  175. Provides-Extra: sdb
  176. Provides-Extra: secretsmanager
  177. Provides-Extra: server
  178. Requires-Dist: PyYAML (>=5.1) ; extra == 'server'
  179. Requires-Dist: python-jose[cryptography] (<4.0.0,>=3.1.0) ; extra == 'server'
  180. Requires-Dist: ecdsa (!=0.15) ; extra == 'server'
  181. Requires-Dist: docker (>=2.5.1) ; extra == 'server'
  182. Requires-Dist: graphql-core ; extra == 'server'
  183. Requires-Dist: jsondiff (>=1.1.2) ; extra == 'server'
  184. Requires-Dist: aws-xray-sdk (!=0.96,>=0.93) ; extra == 'server'
  185. Requires-Dist: idna (<4,>=2.5) ; extra == 'server'
  186. Requires-Dist: cfn-lint (>=0.4.0) ; extra == 'server'
  187. Requires-Dist: sshpubkeys (>=3.1.0) ; extra == 'server'
  188. Requires-Dist: pyparsing (>=3.0.7) ; extra == 'server'
  189. Requires-Dist: openapi-spec-validator (>=0.2.8) ; extra == 'server'
  190. Requires-Dist: setuptools ; extra == 'server'
  191. Requires-Dist: flask (!=2.2.0,!=2.2.1) ; extra == 'server'
  192. Requires-Dist: flask-cors ; extra == 'server'
  193. Provides-Extra: servicediscovery
  194. Provides-Extra: servicequotas
  195. Provides-Extra: ses
  196. Provides-Extra: signer
  197. Provides-Extra: sns
  198. Provides-Extra: sqs
  199. Provides-Extra: ssm
  200. Requires-Dist: PyYAML (>=5.1) ; extra == 'ssm'
  201. Requires-Dist: dataclasses ; (python_version < "3.7") and extra == 'ssm'
  202. Provides-Extra: ssoadmin
  203. Provides-Extra: stepfunctions
  204. Provides-Extra: sts
  205. Provides-Extra: support
  206. Provides-Extra: swf
  207. Provides-Extra: textract
  208. Provides-Extra: timestreamwrite
  209. Provides-Extra: transcribe
  210. Provides-Extra: wafv2
  211. Provides-Extra: xray
  212. Requires-Dist: aws-xray-sdk (!=0.96,>=0.93) ; extra == 'xray'
  213. Requires-Dist: setuptools ; extra == 'xray'
  214. Provides-Extra: xray_client
  215. # Moto - Mock AWS Services
  216. [![Join the chat at https://gitter.im/awsmoto/Lobby](https://badges.gitter.im/awsmoto/Lobby.svg)](https://gitter.im/awsmoto/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
  217. [![Build Status](https://github.com/spulec/moto/workflows/TestNDeploy/badge.svg)](https://github.com/spulec/moto/actions)
  218. [![Coverage Status](https://codecov.io/gh/spulec/moto/branch/master/graph/badge.svg)](https://codecov.io/gh/spulec/moto)
  219. [![Docs](https://readthedocs.org/projects/pip/badge/?version=stable)](http://docs.getmoto.org)
  220. [![PyPI](https://img.shields.io/pypi/v/moto.svg)](https://pypi.org/project/moto/)
  221. [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/moto.svg)](#)
  222. [![PyPI - Downloads](https://img.shields.io/pypi/dw/moto.svg)](https://pypistats.org/packages/moto)
  223. [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
  224. ## Install
  225. ```console
  226. $ pip install 'moto[ec2,s3,all]'
  227. ```
  228. ## In a nutshell
  229. Moto is a library that allows your tests to easily mock out AWS Services.
  230. Imagine you have the following python code that you want to test:
  231. ```python
  232. import boto3
  233. class MyModel(object):
  234. def __init__(self, name, value):
  235. self.name = name
  236. self.value = value
  237. def save(self):
  238. s3 = boto3.client('s3', region_name='us-east-1')
  239. s3.put_object(Bucket='mybucket', Key=self.name, Body=self.value)
  240. ```
  241. Take a minute to think how you would have tested that in the past.
  242. Now see how you could test it with Moto:
  243. ```python
  244. import boto3
  245. from moto import mock_s3
  246. from mymodule import MyModel
  247. @mock_s3
  248. def test_my_model_save():
  249. conn = boto3.resource('s3', region_name='us-east-1')
  250. # We need to create the bucket since this is all in Moto's 'virtual' AWS account
  251. conn.create_bucket(Bucket='mybucket')
  252. model_instance = MyModel('steve', 'is awesome')
  253. model_instance.save()
  254. body = conn.Object('mybucket', 'steve').get()['Body'].read().decode("utf-8")
  255. assert body == 'is awesome'
  256. ```
  257. With the decorator wrapping the test, all the calls to s3 are automatically mocked out. The mock keeps the state of the buckets and keys.
  258. For a full list of which services and features are covered, please see our [implementation coverage](https://github.com/spulec/moto/blob/master/IMPLEMENTATION_COVERAGE.md).
  259. ### Documentation
  260. The full documentation can be found here:
  261. [http://docs.getmoto.org/en/latest/](http://docs.getmoto.org/en/latest/)