METADATA 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275
  1. Metadata-Version: 2.1
  2. Name: moto
  3. Version: 3.1.12
  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
  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 (>=0.5)
  30. Requires-Dist: pytz
  31. Requires-Dist: python-dateutil (<3.0.0,>=2.1)
  32. Requires-Dist: responses (>=0.9.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: apigateway
  52. Requires-Dist: PyYAML (>=5.1) ; extra == 'apigateway'
  53. Requires-Dist: python-jose[cryptography] (<4.0.0,>=3.1.0) ; extra == 'apigateway'
  54. Requires-Dist: ecdsa (!=0.15) ; extra == 'apigateway'
  55. Requires-Dist: openapi-spec-validator (>=0.2.8) ; extra == 'apigateway'
  56. Provides-Extra: apigatewayv2
  57. Requires-Dist: PyYAML (>=5.1) ; extra == 'apigatewayv2'
  58. Provides-Extra: applicationautoscaling
  59. Provides-Extra: appsync
  60. Requires-Dist: graphql-core ; extra == 'appsync'
  61. Provides-Extra: athena
  62. Provides-Extra: autoscaling
  63. Provides-Extra: awslambda
  64. Requires-Dist: docker (>=2.5.1) ; extra == 'awslambda'
  65. Provides-Extra: batch
  66. Requires-Dist: docker (>=2.5.1) ; extra == 'batch'
  67. Provides-Extra: batch_simple
  68. Provides-Extra: budgets
  69. Provides-Extra: cloudformation
  70. Requires-Dist: PyYAML (>=5.1) ; extra == 'cloudformation'
  71. Requires-Dist: python-jose[cryptography] (<4.0.0,>=3.1.0) ; extra == 'cloudformation'
  72. Requires-Dist: ecdsa (!=0.15) ; extra == 'cloudformation'
  73. Requires-Dist: docker (>=2.5.1) ; extra == 'cloudformation'
  74. Requires-Dist: graphql-core ; extra == 'cloudformation'
  75. Requires-Dist: jsondiff (>=1.1.2) ; extra == 'cloudformation'
  76. Requires-Dist: aws-xray-sdk (!=0.96,>=0.93) ; extra == 'cloudformation'
  77. Requires-Dist: idna (<4,>=2.5) ; extra == 'cloudformation'
  78. Requires-Dist: cfn-lint (>=0.4.0) ; extra == 'cloudformation'
  79. Requires-Dist: sshpubkeys (>=3.1.0) ; extra == 'cloudformation'
  80. Requires-Dist: pyparsing (>=3.0.7) ; extra == 'cloudformation'
  81. Requires-Dist: openapi-spec-validator (>=0.2.8) ; extra == 'cloudformation'
  82. Requires-Dist: setuptools ; extra == 'cloudformation'
  83. Provides-Extra: cloudfront
  84. Provides-Extra: cloudtrail
  85. Provides-Extra: cloudwatch
  86. Provides-Extra: codecommit
  87. Provides-Extra: codepipeline
  88. Provides-Extra: cognitoidentity
  89. Provides-Extra: cognitoidp
  90. Requires-Dist: python-jose[cryptography] (<4.0.0,>=3.1.0) ; extra == 'cognitoidp'
  91. Requires-Dist: ecdsa (!=0.15) ; extra == 'cognitoidp'
  92. Provides-Extra: config
  93. Provides-Extra: databrew
  94. Provides-Extra: datapipeline
  95. Provides-Extra: datasync
  96. Provides-Extra: dax
  97. Provides-Extra: dms
  98. Provides-Extra: ds
  99. Requires-Dist: sshpubkeys (>=3.1.0) ; extra == 'ds'
  100. Provides-Extra: dynamodb
  101. Requires-Dist: docker (>=2.5.1) ; extra == 'dynamodb'
  102. Provides-Extra: dynamodb2
  103. Requires-Dist: docker (>=2.5.1) ; extra == 'dynamodb2'
  104. Provides-Extra: dynamodbstreams
  105. Requires-Dist: docker (>=2.5.1) ; extra == 'dynamodbstreams'
  106. Provides-Extra: ebs
  107. Requires-Dist: sshpubkeys (>=3.1.0) ; extra == 'ebs'
  108. Provides-Extra: ec2
  109. Requires-Dist: sshpubkeys (>=3.1.0) ; extra == 'ec2'
  110. Provides-Extra: ec2instanceconnect
  111. Provides-Extra: ecr
  112. Provides-Extra: ecs
  113. Provides-Extra: efs
  114. Requires-Dist: sshpubkeys (>=3.1.0) ; extra == 'efs'
  115. Provides-Extra: eks
  116. Provides-Extra: elasticache
  117. Provides-Extra: elasticbeanstalk
  118. Provides-Extra: elastictranscoder
  119. Provides-Extra: elb
  120. Provides-Extra: elbv2
  121. Provides-Extra: emr
  122. Provides-Extra: emrcontainers
  123. Provides-Extra: es
  124. Provides-Extra: events
  125. Provides-Extra: firehose
  126. Provides-Extra: forecast
  127. Provides-Extra: glacier
  128. Provides-Extra: glue
  129. Requires-Dist: pyparsing (>=3.0.7) ; extra == 'glue'
  130. Provides-Extra: greengrass
  131. Provides-Extra: guardduty
  132. Provides-Extra: iam
  133. Provides-Extra: iot
  134. Provides-Extra: iotdata
  135. Requires-Dist: jsondiff (>=1.1.2) ; extra == 'iotdata'
  136. Provides-Extra: kinesis
  137. Provides-Extra: kinesisvideo
  138. Provides-Extra: kinesisvideoarchivedmedia
  139. Provides-Extra: kms
  140. Provides-Extra: lambda
  141. Provides-Extra: logs
  142. Provides-Extra: managedblockchain
  143. Provides-Extra: mediaconnect
  144. Provides-Extra: medialive
  145. Provides-Extra: mediapackage
  146. Provides-Extra: mediastore
  147. Provides-Extra: mediastoredata
  148. Provides-Extra: mq
  149. Provides-Extra: opsworks
  150. Provides-Extra: organizations
  151. Provides-Extra: pinpoint
  152. Provides-Extra: polly
  153. Provides-Extra: quicksight
  154. Provides-Extra: ram
  155. Provides-Extra: rds
  156. Provides-Extra: rds2
  157. Provides-Extra: redshift
  158. Provides-Extra: redshiftdata
  159. Provides-Extra: rekognition
  160. Provides-Extra: resourcegroups
  161. Provides-Extra: resourcegroupstaggingapi
  162. Provides-Extra: route53
  163. Provides-Extra: route53resolver
  164. Requires-Dist: sshpubkeys (>=3.1.0) ; extra == 'route53resolver'
  165. Provides-Extra: s3
  166. Requires-Dist: PyYAML (>=5.1) ; extra == 's3'
  167. Provides-Extra: s3control
  168. Provides-Extra: sagemaker
  169. Provides-Extra: sdb
  170. Provides-Extra: secretsmanager
  171. Provides-Extra: server
  172. Requires-Dist: PyYAML (>=5.1) ; extra == 'server'
  173. Requires-Dist: python-jose[cryptography] (<4.0.0,>=3.1.0) ; extra == 'server'
  174. Requires-Dist: ecdsa (!=0.15) ; extra == 'server'
  175. Requires-Dist: docker (>=2.5.1) ; extra == 'server'
  176. Requires-Dist: graphql-core ; extra == 'server'
  177. Requires-Dist: jsondiff (>=1.1.2) ; extra == 'server'
  178. Requires-Dist: aws-xray-sdk (!=0.96,>=0.93) ; extra == 'server'
  179. Requires-Dist: idna (<4,>=2.5) ; extra == 'server'
  180. Requires-Dist: cfn-lint (>=0.4.0) ; extra == 'server'
  181. Requires-Dist: sshpubkeys (>=3.1.0) ; extra == 'server'
  182. Requires-Dist: pyparsing (>=3.0.7) ; extra == 'server'
  183. Requires-Dist: openapi-spec-validator (>=0.2.8) ; extra == 'server'
  184. Requires-Dist: setuptools ; extra == 'server'
  185. Requires-Dist: flask ; extra == 'server'
  186. Requires-Dist: flask-cors ; extra == 'server'
  187. Provides-Extra: servicediscovery
  188. Provides-Extra: ses
  189. Provides-Extra: sns
  190. Provides-Extra: sqs
  191. Provides-Extra: ssm
  192. Requires-Dist: PyYAML (>=5.1) ; extra == 'ssm'
  193. Requires-Dist: dataclasses ; (python_version < "3.7") and extra == 'ssm'
  194. Provides-Extra: ssoadmin
  195. Provides-Extra: stepfunctions
  196. Provides-Extra: sts
  197. Provides-Extra: support
  198. Provides-Extra: swf
  199. Provides-Extra: textract
  200. Provides-Extra: timestreamwrite
  201. Provides-Extra: transcribe
  202. Provides-Extra: wafv2
  203. Provides-Extra: xray
  204. Requires-Dist: aws-xray-sdk (!=0.96,>=0.93) ; extra == 'xray'
  205. Requires-Dist: setuptools ; extra == 'xray'
  206. Provides-Extra: xray_client
  207. # Moto - Mock AWS Services
  208. [![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)
  209. [![Build Status](https://github.com/spulec/moto/workflows/TestNDeploy/badge.svg)](https://github.com/spulec/moto/actions)
  210. [![Coverage Status](https://codecov.io/gh/spulec/moto/branch/master/graph/badge.svg)](https://codecov.io/gh/spulec/moto)
  211. [![Docs](https://readthedocs.org/projects/pip/badge/?version=stable)](http://docs.getmoto.org)
  212. [![PyPI](https://img.shields.io/pypi/v/moto.svg)](https://pypi.org/project/moto/)
  213. [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/moto.svg)](#)
  214. [![PyPI - Downloads](https://img.shields.io/pypi/dw/moto.svg)](https://pypistats.org/packages/moto)
  215. [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
  216. ## Install
  217. ```console
  218. $ pip install 'moto[ec2,s3,all]'
  219. ```
  220. ## In a nutshell
  221. Moto is a library that allows your tests to easily mock out AWS Services.
  222. Imagine you have the following python code that you want to test:
  223. ```python
  224. import boto3
  225. class MyModel(object):
  226. def __init__(self, name, value):
  227. self.name = name
  228. self.value = value
  229. def save(self):
  230. s3 = boto3.client('s3', region_name='us-east-1')
  231. s3.put_object(Bucket='mybucket', Key=self.name, Body=self.value)
  232. ```
  233. Take a minute to think how you would have tested that in the past.
  234. Now see how you could test it with Moto:
  235. ```python
  236. import boto3
  237. from moto import mock_s3
  238. from mymodule import MyModel
  239. @mock_s3
  240. def test_my_model_save():
  241. conn = boto3.resource('s3', region_name='us-east-1')
  242. # We need to create the bucket since this is all in Moto's 'virtual' AWS account
  243. conn.create_bucket(Bucket='mybucket')
  244. model_instance = MyModel('steve', 'is awesome')
  245. model_instance.save()
  246. body = conn.Object('mybucket', 'steve').get()['Body'].read().decode("utf-8")
  247. assert body == 'is awesome'
  248. ```
  249. 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.
  250. 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).
  251. ### Documentation
  252. The full documentation can be found here:
  253. [http://docs.getmoto.org/en/latest/](http://docs.getmoto.org/en/latest/)