updates
This commit is contained in:
Generated
+3
@@ -0,0 +1,3 @@
|
||||
|
||||
# Default ignored files
|
||||
/workspace.xml
|
||||
Generated
+13
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="PYTHON_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<excludeFolder url="file://$MODULE_DIR$/venv" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
<component name="TestRunnerService">
|
||||
<option name="PROJECT_TEST_RUNNER" value="Unittests" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -0,0 +1,6 @@
|
||||
<component name="InspectionProjectProfileManager">
|
||||
<settings>
|
||||
<option name="USE_PROJECT_PROFILE" value="false" />
|
||||
<version value="1.0" />
|
||||
</settings>
|
||||
</component>
|
||||
Generated
+7
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="JavaScriptSettings">
|
||||
<option name="languageLevel" value="ES6" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.7 (Database)" project-jdk-type="Python SDK" />
|
||||
</project>
|
||||
Generated
+8
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/Database.iml" filepath="$PROJECT_DIR$/.idea/Database.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
Generated
+6
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
@@ -0,0 +1,20 @@
|
||||
import boto3
|
||||
rds = boto3.client('rds', region_name="eu-west-2")
|
||||
|
||||
# try:
|
||||
# dbs = rds.describe_db_instances()
|
||||
# for db in dbs['DBInstances']:
|
||||
# print("{}@{}:{} {}".format(db['MasterUsername'], db['Endpoint']['Address'], db['Endpoint']['Port'], db['DBInstanceStatus']))
|
||||
# except Exception as e:
|
||||
# raise e
|
||||
|
||||
# print("\n\r Create Database Instance")
|
||||
|
||||
response = rds.create_db_instance(
|
||||
DBInstanceIdentifier="newdb",
|
||||
MasterUsername="youtube",
|
||||
MasterUserPassword="abcdef1234",
|
||||
DBInstanceClass="db.t2.micro",
|
||||
Engine="mysql",
|
||||
AllocatedStorage=5
|
||||
)
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -28,7 +28,7 @@ deactivate () {
|
||||
fi
|
||||
|
||||
unset VIRTUAL_ENV
|
||||
if [ ! "$1" = "nondestructive" ] ; then
|
||||
if [ ! "${1:-}" = "nondestructive" ] ; then
|
||||
# Self destruct!
|
||||
unset -f deactivate
|
||||
fi
|
||||
@@ -37,7 +37,7 @@ deactivate () {
|
||||
# unset irrelevant variables
|
||||
deactivate nondestructive
|
||||
|
||||
VIRTUAL_ENV="/Users/marcpartensky/Downloads/Programs/Python/Python-2019/Tkinter/venv"
|
||||
VIRTUAL_ENV="/Users/marcpartensky/Programs/Python/Repository-2019/Database/venv"
|
||||
export VIRTUAL_ENV
|
||||
|
||||
_OLD_VIRTUAL_PATH="$PATH"
|
||||
@@ -8,7 +8,7 @@ alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PA
|
||||
# Unset irrelevant variables.
|
||||
deactivate nondestructive
|
||||
|
||||
setenv VIRTUAL_ENV "/Users/marcpartensky/Downloads/Programs/Python/Python-2019/Tkinter/venv"
|
||||
setenv VIRTUAL_ENV "/Users/marcpartensky/Programs/Python/Repository-2019/Database/venv"
|
||||
|
||||
set _OLD_VIRTUAL_PATH="$PATH"
|
||||
setenv PATH "$VIRTUAL_ENV/bin:$PATH"
|
||||
@@ -29,7 +29,7 @@ end
|
||||
# unset irrelevant variables
|
||||
deactivate nondestructive
|
||||
|
||||
set -gx VIRTUAL_ENV "/Users/marcpartensky/Downloads/Programs/Python/Python-2019/Tkinter/venv"
|
||||
set -gx VIRTUAL_ENV "/Users/marcpartensky/Programs/Python/Repository-2019/Database/venv"
|
||||
|
||||
set -gx _OLD_VIRTUAL_PATH $PATH
|
||||
set -gx PATH "$VIRTUAL_ENV/bin" $PATH
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/Users/marcpartensky/Downloads/Programs/Python/Python-2019/Tkinter/venv/bin/python
|
||||
#!/Users/marcpartensky/Programs/Python/Repository-2019/Database/venv/bin/python
|
||||
# EASY-INSTALL-ENTRY-SCRIPT: 'setuptools==40.8.0','console_scripts','easy_install'
|
||||
__requires__ = 'setuptools==40.8.0'
|
||||
import re
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
#!/Users/marcpartensky/Downloads/Programs/Python/Python-2019/Tkinter/venv/bin/python
|
||||
#!/Users/marcpartensky/Programs/Python/Repository-2019/Database/venv/bin/python
|
||||
# EASY-INSTALL-ENTRY-SCRIPT: 'setuptools==40.8.0','console_scripts','easy_install-3.7'
|
||||
__requires__ = 'setuptools==40.8.0'
|
||||
import re
|
||||
Executable
+54
@@ -0,0 +1,54 @@
|
||||
#!/Users/marcpartensky/Programs/Python/Repository-2019/Database/venv/bin/python
|
||||
|
||||
import sys
|
||||
import json
|
||||
import argparse
|
||||
from pprint import pformat
|
||||
|
||||
import jmespath
|
||||
from jmespath import exceptions
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('expression')
|
||||
parser.add_argument('-f', '--filename',
|
||||
help=('The filename containing the input data. '
|
||||
'If a filename is not given then data is '
|
||||
'read from stdin.'))
|
||||
parser.add_argument('--ast', action='store_true',
|
||||
help=('Pretty print the AST, do not search the data.'))
|
||||
args = parser.parse_args()
|
||||
expression = args.expression
|
||||
if args.ast:
|
||||
# Only print the AST
|
||||
expression = jmespath.compile(args.expression)
|
||||
sys.stdout.write(pformat(expression.parsed))
|
||||
sys.stdout.write('\n')
|
||||
return 0
|
||||
if args.filename:
|
||||
with open(args.filename, 'r') as f:
|
||||
data = json.load(f)
|
||||
else:
|
||||
data = sys.stdin.read()
|
||||
data = json.loads(data)
|
||||
try:
|
||||
sys.stdout.write(json.dumps(
|
||||
jmespath.search(expression, data), indent=4))
|
||||
sys.stdout.write('\n')
|
||||
except exceptions.ArityError as e:
|
||||
sys.stderr.write("invalid-arity: %s\n" % e)
|
||||
return 1
|
||||
except exceptions.JMESPathTypeError as e:
|
||||
sys.stderr.write("invalid-type: %s\n" % e)
|
||||
return 1
|
||||
except exceptions.UnknownFunctionError as e:
|
||||
sys.stderr.write("unknown-function: %s\n" % e)
|
||||
return 1
|
||||
except exceptions.ParseError as e:
|
||||
sys.stderr.write("syntax-error: %s\n" % e)
|
||||
return 1
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main())
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/Users/marcpartensky/Downloads/Programs/Python/Python-2019/Tkinter/venv/bin/python
|
||||
#!/Users/marcpartensky/Programs/Python/Repository-2019/Database/venv/bin/python
|
||||
# EASY-INSTALL-ENTRY-SCRIPT: 'pip==19.0.3','console_scripts','pip'
|
||||
__requires__ = 'pip==19.0.3'
|
||||
import re
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/Users/marcpartensky/Downloads/Programs/Python/Python-2019/Tkinter/venv/bin/python
|
||||
#!/Users/marcpartensky/Programs/Python/Repository-2019/Database/venv/bin/python
|
||||
# EASY-INSTALL-ENTRY-SCRIPT: 'pip==19.0.3','console_scripts','pip3'
|
||||
__requires__ = 'pip==19.0.3'
|
||||
import re
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/Users/marcpartensky/Downloads/Programs/Python/Python-2019/Tkinter/venv/bin/python
|
||||
#!/Users/marcpartensky/Programs/Python/Repository-2019/Database/venv/bin/python
|
||||
# EASY-INSTALL-ENTRY-SCRIPT: 'pip==19.0.3','console_scripts','pip3.7'
|
||||
__requires__ = 'pip==19.0.3'
|
||||
import re
|
||||
Executable
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
Executable
+23
@@ -0,0 +1,23 @@
|
||||
#!/Users/marcpartensky/Programs/Python/Repository-2019/Database/venv/bin/python
|
||||
|
||||
# $Id: rst2html.py 4564 2006-05-21 20:44:42Z wiemann $
|
||||
# Author: David Goodger <goodger@python.org>
|
||||
# Copyright: This module has been placed in the public domain.
|
||||
|
||||
"""
|
||||
A minimal front end to the Docutils Publisher, producing HTML.
|
||||
"""
|
||||
|
||||
try:
|
||||
import locale
|
||||
locale.setlocale(locale.LC_ALL, '')
|
||||
except:
|
||||
pass
|
||||
|
||||
from docutils.core import publish_cmdline, default_description
|
||||
|
||||
|
||||
description = ('Generates (X)HTML documents from standalone reStructuredText '
|
||||
'sources. ' + default_description)
|
||||
|
||||
publish_cmdline(writer_name='html', description=description)
|
||||
Executable
+26
@@ -0,0 +1,26 @@
|
||||
#!/Users/marcpartensky/Programs/Python/Repository-2019/Database/venv/bin/python
|
||||
|
||||
# $Id: rst2html4.py 7994 2016-12-10 17:41:45Z milde $
|
||||
# Author: David Goodger <goodger@python.org>
|
||||
# Copyright: This module has been placed in the public domain.
|
||||
|
||||
"""
|
||||
A minimal front end to the Docutils Publisher, producing (X)HTML.
|
||||
|
||||
The output conforms to XHTML 1.0 transitional
|
||||
and almost to HTML 4.01 transitional (except for closing empty tags).
|
||||
"""
|
||||
|
||||
try:
|
||||
import locale
|
||||
locale.setlocale(locale.LC_ALL, '')
|
||||
except:
|
||||
pass
|
||||
|
||||
from docutils.core import publish_cmdline, default_description
|
||||
|
||||
|
||||
description = ('Generates (X)HTML documents from standalone reStructuredText '
|
||||
'sources. ' + default_description)
|
||||
|
||||
publish_cmdline(writer_name='html4', description=description)
|
||||
Executable
+35
@@ -0,0 +1,35 @@
|
||||
#!/Users/marcpartensky/Programs/Python/Repository-2019/Database/venv/bin/python
|
||||
# -*- coding: utf8 -*-
|
||||
# :Copyright: © 2015 Günter Milde.
|
||||
# :License: Released under the terms of the `2-Clause BSD license`_, in short:
|
||||
#
|
||||
# Copying and distribution of this file, with or without modification,
|
||||
# are permitted in any medium without royalty provided the copyright
|
||||
# notice and this notice are preserved.
|
||||
# This file is offered as-is, without any warranty.
|
||||
#
|
||||
# .. _2-Clause BSD license: http://www.spdx.org/licenses/BSD-2-Clause
|
||||
#
|
||||
# Revision: $Revision: 7847 $
|
||||
# Date: $Date: 2015-03-17 18:30:47 +0100 (Di, 17. Mär 2015) $
|
||||
|
||||
"""
|
||||
A minimal front end to the Docutils Publisher, producing HTML 5 documents.
|
||||
|
||||
The output also conforms to XHTML 1.0 transitional
|
||||
(except for the doctype declaration).
|
||||
"""
|
||||
|
||||
try:
|
||||
import locale # module missing in Jython
|
||||
locale.setlocale(locale.LC_ALL, '')
|
||||
except locale.Error:
|
||||
pass
|
||||
|
||||
from docutils.core import publish_cmdline, default_description
|
||||
|
||||
description = (u'Generates HTML 5 documents from standalone '
|
||||
u'reStructuredText sources '
|
||||
+ default_description)
|
||||
|
||||
publish_cmdline(writer_name='html5', description=description)
|
||||
Executable
+26
@@ -0,0 +1,26 @@
|
||||
#!/Users/marcpartensky/Programs/Python/Repository-2019/Database/venv/bin/python
|
||||
|
||||
# $Id: rst2latex.py 5905 2009-04-16 12:04:49Z milde $
|
||||
# Author: David Goodger <goodger@python.org>
|
||||
# Copyright: This module has been placed in the public domain.
|
||||
|
||||
"""
|
||||
A minimal front end to the Docutils Publisher, producing LaTeX.
|
||||
"""
|
||||
|
||||
try:
|
||||
import locale
|
||||
locale.setlocale(locale.LC_ALL, '')
|
||||
except:
|
||||
pass
|
||||
|
||||
from docutils.core import publish_cmdline
|
||||
|
||||
description = ('Generates LaTeX documents from standalone reStructuredText '
|
||||
'sources. '
|
||||
'Reads from <source> (default is stdin) and writes to '
|
||||
'<destination> (default is stdout). See '
|
||||
'<http://docutils.sourceforge.net/docs/user/latex.html> for '
|
||||
'the full reference.')
|
||||
|
||||
publish_cmdline(writer_name='latex', description=description)
|
||||
Executable
+26
@@ -0,0 +1,26 @@
|
||||
#!/Users/marcpartensky/Programs/Python/Repository-2019/Database/venv/bin/python
|
||||
|
||||
# Author:
|
||||
# Contact: grubert@users.sf.net
|
||||
# Copyright: This module has been placed in the public domain.
|
||||
|
||||
"""
|
||||
man.py
|
||||
======
|
||||
|
||||
This module provides a simple command line interface that uses the
|
||||
man page writer to output from ReStructuredText source.
|
||||
"""
|
||||
|
||||
import locale
|
||||
try:
|
||||
locale.setlocale(locale.LC_ALL, '')
|
||||
except:
|
||||
pass
|
||||
|
||||
from docutils.core import publish_cmdline, default_description
|
||||
from docutils.writers import manpage
|
||||
|
||||
description = ("Generates plain unix manual documents. " + default_description)
|
||||
|
||||
publish_cmdline(writer=manpage.Writer(), description=description)
|
||||
Executable
+30
@@ -0,0 +1,30 @@
|
||||
#!/Users/marcpartensky/Programs/Python/Repository-2019/Database/venv/bin/python
|
||||
|
||||
# $Id: rst2odt.py 5839 2009-01-07 19:09:28Z dkuhlman $
|
||||
# Author: Dave Kuhlman <dkuhlman@rexx.com>
|
||||
# Copyright: This module has been placed in the public domain.
|
||||
|
||||
"""
|
||||
A front end to the Docutils Publisher, producing OpenOffice documents.
|
||||
"""
|
||||
|
||||
import sys
|
||||
try:
|
||||
import locale
|
||||
locale.setlocale(locale.LC_ALL, '')
|
||||
except:
|
||||
pass
|
||||
|
||||
from docutils.core import publish_cmdline_to_binary, default_description
|
||||
from docutils.writers.odf_odt import Writer, Reader
|
||||
|
||||
|
||||
description = ('Generates OpenDocument/OpenOffice/ODF documents from '
|
||||
'standalone reStructuredText sources. ' + default_description)
|
||||
|
||||
|
||||
writer = Writer()
|
||||
reader = Reader()
|
||||
output = publish_cmdline_to_binary(reader=reader, writer=writer,
|
||||
description=description)
|
||||
|
||||
Executable
+67
@@ -0,0 +1,67 @@
|
||||
#!/Users/marcpartensky/Programs/Python/Repository-2019/Database/venv/bin/python
|
||||
|
||||
# $Id: rst2odt_prepstyles.py 5839 2009-01-07 19:09:28Z dkuhlman $
|
||||
# Author: Dave Kuhlman <dkuhlman@rexx.com>
|
||||
# Copyright: This module has been placed in the public domain.
|
||||
|
||||
"""
|
||||
Fix a word-processor-generated styles.odt for odtwriter use: Drop page size
|
||||
specifications from styles.xml in STYLE_FILE.odt.
|
||||
"""
|
||||
|
||||
#
|
||||
# Author: Michael Schutte <michi@uiae.at>
|
||||
|
||||
from lxml import etree
|
||||
import sys
|
||||
import zipfile
|
||||
from tempfile import mkstemp
|
||||
import shutil
|
||||
import os
|
||||
|
||||
NAMESPACES = {
|
||||
"style": "urn:oasis:names:tc:opendocument:xmlns:style:1.0",
|
||||
"fo": "urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
|
||||
}
|
||||
|
||||
def prepstyle(filename):
|
||||
|
||||
zin = zipfile.ZipFile(filename)
|
||||
styles = zin.read("styles.xml")
|
||||
|
||||
root = etree.fromstring(styles)
|
||||
for el in root.xpath("//style:page-layout-properties",
|
||||
namespaces=NAMESPACES):
|
||||
for attr in el.attrib:
|
||||
if attr.startswith("{%s}" % NAMESPACES["fo"]):
|
||||
del el.attrib[attr]
|
||||
|
||||
tempname = mkstemp()
|
||||
zout = zipfile.ZipFile(os.fdopen(tempname[0], "w"), "w",
|
||||
zipfile.ZIP_DEFLATED)
|
||||
|
||||
for item in zin.infolist():
|
||||
if item.filename == "styles.xml":
|
||||
zout.writestr(item, etree.tostring(root))
|
||||
else:
|
||||
zout.writestr(item, zin.read(item.filename))
|
||||
|
||||
zout.close()
|
||||
zin.close()
|
||||
shutil.move(tempname[1], filename)
|
||||
|
||||
|
||||
def main():
|
||||
args = sys.argv[1:]
|
||||
if len(args) != 1:
|
||||
print >> sys.stderr, __doc__
|
||||
print >> sys.stderr, "Usage: %s STYLE_FILE.odt\n" % sys.argv[0]
|
||||
sys.exit(1)
|
||||
filename = args[0]
|
||||
prepstyle(filename)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
|
||||
# vim:tw=78:sw=4:sts=4:et:
|
||||
Executable
+23
@@ -0,0 +1,23 @@
|
||||
#!/Users/marcpartensky/Programs/Python/Repository-2019/Database/venv/bin/python
|
||||
|
||||
# $Id: rst2pseudoxml.py 4564 2006-05-21 20:44:42Z wiemann $
|
||||
# Author: David Goodger <goodger@python.org>
|
||||
# Copyright: This module has been placed in the public domain.
|
||||
|
||||
"""
|
||||
A minimal front end to the Docutils Publisher, producing pseudo-XML.
|
||||
"""
|
||||
|
||||
try:
|
||||
import locale
|
||||
locale.setlocale(locale.LC_ALL, '')
|
||||
except:
|
||||
pass
|
||||
|
||||
from docutils.core import publish_cmdline, default_description
|
||||
|
||||
|
||||
description = ('Generates pseudo-XML from standalone reStructuredText '
|
||||
'sources (for testing purposes). ' + default_description)
|
||||
|
||||
publish_cmdline(description=description)
|
||||
Executable
+24
@@ -0,0 +1,24 @@
|
||||
#!/Users/marcpartensky/Programs/Python/Repository-2019/Database/venv/bin/python
|
||||
|
||||
# $Id: rst2s5.py 4564 2006-05-21 20:44:42Z wiemann $
|
||||
# Author: Chris Liechti <cliechti@gmx.net>
|
||||
# Copyright: This module has been placed in the public domain.
|
||||
|
||||
"""
|
||||
A minimal front end to the Docutils Publisher, producing HTML slides using
|
||||
the S5 template system.
|
||||
"""
|
||||
|
||||
try:
|
||||
import locale
|
||||
locale.setlocale(locale.LC_ALL, '')
|
||||
except:
|
||||
pass
|
||||
|
||||
from docutils.core import publish_cmdline, default_description
|
||||
|
||||
|
||||
description = ('Generates S5 (X)HTML slideshow documents from standalone '
|
||||
'reStructuredText sources. ' + default_description)
|
||||
|
||||
publish_cmdline(writer_name='s5', description=description)
|
||||
Executable
+27
@@ -0,0 +1,27 @@
|
||||
#!/Users/marcpartensky/Programs/Python/Repository-2019/Database/venv/bin/python
|
||||
|
||||
# $Id: rst2xetex.py 7847 2015-03-17 17:30:47Z milde $
|
||||
# Author: Guenter Milde
|
||||
# Copyright: This module has been placed in the public domain.
|
||||
|
||||
"""
|
||||
A minimal front end to the Docutils Publisher, producing Lua/XeLaTeX code.
|
||||
"""
|
||||
|
||||
try:
|
||||
import locale
|
||||
locale.setlocale(locale.LC_ALL, '')
|
||||
except:
|
||||
pass
|
||||
|
||||
from docutils.core import publish_cmdline
|
||||
|
||||
description = ('Generates LaTeX documents from standalone reStructuredText '
|
||||
'sources for compilation with the Unicode-aware TeX variants '
|
||||
'XeLaTeX or LuaLaTeX. '
|
||||
'Reads from <source> (default is stdin) and writes to '
|
||||
'<destination> (default is stdout). See '
|
||||
'<http://docutils.sourceforge.net/docs/user/latex.html> for '
|
||||
'the full reference.')
|
||||
|
||||
publish_cmdline(writer_name='xetex', description=description)
|
||||
Executable
+23
@@ -0,0 +1,23 @@
|
||||
#!/Users/marcpartensky/Programs/Python/Repository-2019/Database/venv/bin/python
|
||||
|
||||
# $Id: rst2xml.py 4564 2006-05-21 20:44:42Z wiemann $
|
||||
# Author: David Goodger <goodger@python.org>
|
||||
# Copyright: This module has been placed in the public domain.
|
||||
|
||||
"""
|
||||
A minimal front end to the Docutils Publisher, producing Docutils XML.
|
||||
"""
|
||||
|
||||
try:
|
||||
import locale
|
||||
locale.setlocale(locale.LC_ALL, '')
|
||||
except:
|
||||
pass
|
||||
|
||||
from docutils.core import publish_cmdline, default_description
|
||||
|
||||
|
||||
description = ('Generates Docutils-native XML from standalone '
|
||||
'reStructuredText sources. ' + default_description)
|
||||
|
||||
publish_cmdline(writer_name='xml', description=description)
|
||||
Executable
+25
@@ -0,0 +1,25 @@
|
||||
#!/Users/marcpartensky/Programs/Python/Repository-2019/Database/venv/bin/python
|
||||
|
||||
# $Id: rstpep2html.py 4564 2006-05-21 20:44:42Z wiemann $
|
||||
# Author: David Goodger <goodger@python.org>
|
||||
# Copyright: This module has been placed in the public domain.
|
||||
|
||||
"""
|
||||
A minimal front end to the Docutils Publisher, producing HTML from PEP
|
||||
(Python Enhancement Proposal) documents.
|
||||
"""
|
||||
|
||||
try:
|
||||
import locale
|
||||
locale.setlocale(locale.LC_ALL, '')
|
||||
except:
|
||||
pass
|
||||
|
||||
from docutils.core import publish_cmdline, default_description
|
||||
|
||||
|
||||
description = ('Generates (X)HTML from reStructuredText-format PEP files. '
|
||||
+ default_description)
|
||||
|
||||
publish_cmdline(reader_name='pep', writer_name='pep_html',
|
||||
description=description)
|
||||
Binary file not shown.
@@ -0,0 +1,127 @@
|
||||
===============================
|
||||
Boto 3 - The AWS SDK for Python
|
||||
===============================
|
||||
|
||||
|Build Status| |Version| |Gitter|
|
||||
|
||||
Boto3 is the Amazon Web Services (AWS) Software Development Kit (SDK) for
|
||||
Python, which allows Python developers to write software that makes use
|
||||
of services like Amazon S3 and Amazon EC2. You can find the latest, most
|
||||
up to date, documentation at our `doc site`_, including a list of
|
||||
services that are supported.
|
||||
|
||||
|
||||
.. _boto: https://docs.pythonboto.org/
|
||||
.. _`doc site`: https://boto3.amazonaws.com/v1/documentation/api/latest/index.html
|
||||
.. |Build Status| image:: http://img.shields.io/travis/boto/boto3/develop.svg?style=flat
|
||||
:target: https://travis-ci.org/boto/boto3
|
||||
:alt: Build Status
|
||||
.. |Gitter| image:: https://badges.gitter.im/boto/boto3.svg
|
||||
:target: https://gitter.im/boto/boto3
|
||||
:alt: Gitter
|
||||
.. |Downloads| image:: http://img.shields.io/pypi/dm/boto3.svg?style=flat
|
||||
:target: https://pypi.python.org/pypi/boto3/
|
||||
:alt: Downloads
|
||||
.. |Version| image:: http://img.shields.io/pypi/v/boto3.svg?style=flat
|
||||
:target: https://pypi.python.org/pypi/boto3/
|
||||
:alt: Version
|
||||
.. |License| image:: http://img.shields.io/pypi/l/boto3.svg?style=flat
|
||||
:target: https://github.com/boto/boto3/blob/develop/LICENSE
|
||||
:alt: License
|
||||
|
||||
Quick Start
|
||||
-----------
|
||||
First, install the library and set a default region:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
$ pip install boto3
|
||||
|
||||
Next, set up credentials (in e.g. ``~/.aws/credentials``):
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[default]
|
||||
aws_access_key_id = YOUR_KEY
|
||||
aws_secret_access_key = YOUR_SECRET
|
||||
|
||||
Then, set up a default region (in e.g. ``~/.aws/config``):
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[default]
|
||||
region=us-east-1
|
||||
|
||||
Then, from a Python interpreter:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
>>> import boto3
|
||||
>>> s3 = boto3.resource('s3')
|
||||
>>> for bucket in s3.buckets.all():
|
||||
print(bucket.name)
|
||||
|
||||
Development
|
||||
-----------
|
||||
|
||||
Getting Started
|
||||
~~~~~~~~~~~~~~~
|
||||
Assuming that you have Python and ``virtualenv`` installed, set up your
|
||||
environment and install the required dependencies like this instead of
|
||||
the ``pip install boto3`` defined above:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
$ git clone https://github.com/boto/boto3.git
|
||||
$ cd boto3
|
||||
$ virtualenv venv
|
||||
...
|
||||
$ . venv/bin/activate
|
||||
$ pip install -r requirements.txt
|
||||
$ pip install -e .
|
||||
|
||||
Running Tests
|
||||
~~~~~~~~~~~~~
|
||||
You can run tests in all supported Python versions using ``tox``. By default,
|
||||
it will run all of the unit and functional tests, but you can also specify your own
|
||||
``nosetests`` options. Note that this requires that you have all supported
|
||||
versions of Python installed, otherwise you must pass ``-e`` or run the
|
||||
``nosetests`` command directly:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
$ tox
|
||||
$ tox -- unit/test_session.py
|
||||
$ tox -e py26,py33 -- integration/
|
||||
|
||||
You can also run individual tests with your default Python version:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
$ nosetests tests/unit
|
||||
|
||||
Generating Documentation
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Sphinx is used for documentation. You can generate HTML locally with the
|
||||
following:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
$ pip install -r requirements-docs.txt
|
||||
$ cd docs
|
||||
$ make html
|
||||
|
||||
|
||||
Getting Help
|
||||
------------
|
||||
|
||||
We use GitHub issues for tracking bugs and feature requests and have limited
|
||||
bandwidth to address them. Please use these community resources for getting
|
||||
help:
|
||||
|
||||
* Ask a question on `Stack Overflow <https://stackoverflow.com/>`__ and tag it with `boto3 <https://stackoverflow.com/questions/tagged/boto3>`__
|
||||
* Come join the AWS Python community chat on `gitter <https://gitter.im/boto/boto3>`__
|
||||
* Open a support ticket with `AWS Support <https://console.aws.amazon.com/support/home#/>`__
|
||||
* If it turns out that you may have found a bug, please `open an issue <https://github.com/boto/boto3/issues/new>`__
|
||||
|
||||
|
||||
@@ -0,0 +1,153 @@
|
||||
Metadata-Version: 2.0
|
||||
Name: boto3
|
||||
Version: 1.10.45
|
||||
Summary: The AWS SDK for Python
|
||||
Home-page: https://github.com/boto/boto3
|
||||
Author: Amazon Web Services
|
||||
Author-email: UNKNOWN
|
||||
License: Apache License 2.0
|
||||
Platform: UNKNOWN
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: Natural Language :: English
|
||||
Classifier: License :: OSI Approved :: Apache Software License
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 2.6
|
||||
Classifier: Programming Language :: Python :: 2.7
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3.3
|
||||
Classifier: Programming Language :: Python :: 3.4
|
||||
Classifier: Programming Language :: Python :: 3.5
|
||||
Classifier: Programming Language :: Python :: 3.6
|
||||
Classifier: Programming Language :: Python :: 3.7
|
||||
Requires-Dist: botocore>=1.13.45,<1.14.0
|
||||
Requires-Dist: jmespath>=0.7.1,<1.0.0
|
||||
Requires-Dist: s3transfer>=0.2.0,<0.3.0
|
||||
|
||||
===============================
|
||||
Boto 3 - The AWS SDK for Python
|
||||
===============================
|
||||
|
||||
|Build Status| |Version| |Gitter|
|
||||
|
||||
Boto3 is the Amazon Web Services (AWS) Software Development Kit (SDK) for
|
||||
Python, which allows Python developers to write software that makes use
|
||||
of services like Amazon S3 and Amazon EC2. You can find the latest, most
|
||||
up to date, documentation at our `doc site`_, including a list of
|
||||
services that are supported.
|
||||
|
||||
|
||||
.. _boto: https://docs.pythonboto.org/
|
||||
.. _`doc site`: https://boto3.amazonaws.com/v1/documentation/api/latest/index.html
|
||||
.. |Build Status| image:: http://img.shields.io/travis/boto/boto3/develop.svg?style=flat
|
||||
:target: https://travis-ci.org/boto/boto3
|
||||
:alt: Build Status
|
||||
.. |Gitter| image:: https://badges.gitter.im/boto/boto3.svg
|
||||
:target: https://gitter.im/boto/boto3
|
||||
:alt: Gitter
|
||||
.. |Downloads| image:: http://img.shields.io/pypi/dm/boto3.svg?style=flat
|
||||
:target: https://pypi.python.org/pypi/boto3/
|
||||
:alt: Downloads
|
||||
.. |Version| image:: http://img.shields.io/pypi/v/boto3.svg?style=flat
|
||||
:target: https://pypi.python.org/pypi/boto3/
|
||||
:alt: Version
|
||||
.. |License| image:: http://img.shields.io/pypi/l/boto3.svg?style=flat
|
||||
:target: https://github.com/boto/boto3/blob/develop/LICENSE
|
||||
:alt: License
|
||||
|
||||
Quick Start
|
||||
-----------
|
||||
First, install the library and set a default region:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
$ pip install boto3
|
||||
|
||||
Next, set up credentials (in e.g. ``~/.aws/credentials``):
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[default]
|
||||
aws_access_key_id = YOUR_KEY
|
||||
aws_secret_access_key = YOUR_SECRET
|
||||
|
||||
Then, set up a default region (in e.g. ``~/.aws/config``):
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[default]
|
||||
region=us-east-1
|
||||
|
||||
Then, from a Python interpreter:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
>>> import boto3
|
||||
>>> s3 = boto3.resource('s3')
|
||||
>>> for bucket in s3.buckets.all():
|
||||
print(bucket.name)
|
||||
|
||||
Development
|
||||
-----------
|
||||
|
||||
Getting Started
|
||||
~~~~~~~~~~~~~~~
|
||||
Assuming that you have Python and ``virtualenv`` installed, set up your
|
||||
environment and install the required dependencies like this instead of
|
||||
the ``pip install boto3`` defined above:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
$ git clone https://github.com/boto/boto3.git
|
||||
$ cd boto3
|
||||
$ virtualenv venv
|
||||
...
|
||||
$ . venv/bin/activate
|
||||
$ pip install -r requirements.txt
|
||||
$ pip install -e .
|
||||
|
||||
Running Tests
|
||||
~~~~~~~~~~~~~
|
||||
You can run tests in all supported Python versions using ``tox``. By default,
|
||||
it will run all of the unit and functional tests, but you can also specify your own
|
||||
``nosetests`` options. Note that this requires that you have all supported
|
||||
versions of Python installed, otherwise you must pass ``-e`` or run the
|
||||
``nosetests`` command directly:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
$ tox
|
||||
$ tox -- unit/test_session.py
|
||||
$ tox -e py26,py33 -- integration/
|
||||
|
||||
You can also run individual tests with your default Python version:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
$ nosetests tests/unit
|
||||
|
||||
Generating Documentation
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Sphinx is used for documentation. You can generate HTML locally with the
|
||||
following:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
$ pip install -r requirements-docs.txt
|
||||
$ cd docs
|
||||
$ make html
|
||||
|
||||
|
||||
Getting Help
|
||||
------------
|
||||
|
||||
We use GitHub issues for tracking bugs and feature requests and have limited
|
||||
bandwidth to address them. Please use these community resources for getting
|
||||
help:
|
||||
|
||||
* Ask a question on `Stack Overflow <https://stackoverflow.com/>`__ and tag it with `boto3 <https://stackoverflow.com/questions/tagged/boto3>`__
|
||||
* Come join the AWS Python community chat on `gitter <https://gitter.im/boto/boto3>`__
|
||||
* Open a support ticket with `AWS Support <https://console.aws.amazon.com/support/home#/>`__
|
||||
* If it turns out that you may have found a bug, please `open an issue <https://github.com/boto/boto3/issues/new>`__
|
||||
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
boto3-1.10.45.dist-info/DESCRIPTION.rst,sha256=vypeZhRdBo6qYNG3TJCxtVypwHE3msh1eI-onAWEvrI,3771
|
||||
boto3-1.10.45.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
boto3-1.10.45.dist-info/METADATA,sha256=fsvCgiULv7ZbOtuhsA0BFMnpwAR3h4YBH88z6i8yg2o,4755
|
||||
boto3-1.10.45.dist-info/RECORD,,
|
||||
boto3-1.10.45.dist-info/WHEEL,sha256=AvR0WeTpDaxT645bl5FQxUK6NPsTls2ttpcGJg3j1Xg,110
|
||||
boto3-1.10.45.dist-info/metadata.json,sha256=1EKeWK8AVT87GntoNngkwRPl_HVRyAeAGPCmuzF9vX4,1062
|
||||
boto3-1.10.45.dist-info/top_level.txt,sha256=MP6_SI1GcPseXodd3Ykt5F_mCBsrUksiziLxjEZKGUU,6
|
||||
boto3/__init__.py,sha256=0XBzvT2nGGBqGV4hFmunvelSzm26kNAz4USK9q4JhUg,3340
|
||||
boto3/__pycache__/__init__.cpython-37.pyc,,
|
||||
boto3/__pycache__/compat.cpython-37.pyc,,
|
||||
boto3/__pycache__/exceptions.cpython-37.pyc,,
|
||||
boto3/__pycache__/session.cpython-37.pyc,,
|
||||
boto3/__pycache__/utils.cpython-37.pyc,,
|
||||
boto3/compat.py,sha256=F83Twa5yWeGNo3ADZhgn5Px6GkYRu2miQ9t1ZJ3-USg,1597
|
||||
boto3/data/cloudformation/2010-05-15/resources-1.json,sha256=5mFVKJVtbVoHyPdHSyNfZ5mpkgCAws5PhnveSu4qzdI,5110
|
||||
boto3/data/cloudwatch/2010-08-01/resources-1.json,sha256=q4AgE8F4pbscd-2U3NYSGAzK55zpMyOQGr83JUxbZXI,11690
|
||||
boto3/data/dynamodb/2012-08-10/resources-1.json,sha256=hBLa1Jt7bdT557U9A7UcSi8SCpONKzdbtDRTzjM1-Y0,3849
|
||||
boto3/data/ec2/2014-10-01/resources-1.json,sha256=tMG1AMYP2ksnPWY6-3l8DB-EhKsSNtAO9YHhvHqBKu0,68469
|
||||
boto3/data/ec2/2015-03-01/resources-1.json,sha256=tMG1AMYP2ksnPWY6-3l8DB-EhKsSNtAO9YHhvHqBKu0,68469
|
||||
boto3/data/ec2/2015-04-15/resources-1.json,sha256=tMG1AMYP2ksnPWY6-3l8DB-EhKsSNtAO9YHhvHqBKu0,68469
|
||||
boto3/data/ec2/2015-10-01/resources-1.json,sha256=SOfYX2c1KgvnxMO2FCdJpV42rJWNMwVhlFAXhvUPTzA,76564
|
||||
boto3/data/ec2/2016-04-01/resources-1.json,sha256=SOfYX2c1KgvnxMO2FCdJpV42rJWNMwVhlFAXhvUPTzA,76564
|
||||
boto3/data/ec2/2016-09-15/resources-1.json,sha256=SOfYX2c1KgvnxMO2FCdJpV42rJWNMwVhlFAXhvUPTzA,76564
|
||||
boto3/data/ec2/2016-11-15/resources-1.json,sha256=vx7YiL-sUvBFeo4SZ81G7Qa2Hy-y6xY4z2YlSx7_wEw,76922
|
||||
boto3/data/glacier/2012-06-01/resources-1.json,sha256=GT5qWQLGeXtrHgTDNG23Mrpyweg6O0Udgd139BuNTVs,19940
|
||||
boto3/data/iam/2010-05-08/resources-1.json,sha256=PsOT9yBqSJtluBFHCVRsg6k6Ly2VkSYODnYxSl0DVOc,50357
|
||||
boto3/data/opsworks/2013-02-18/resources-1.json,sha256=Y6ygEyegsbYA1gGZn-Ad2yuDd3jUCOt2UKrW_b2YBeM,4136
|
||||
boto3/data/s3/2006-03-01/resources-1.json,sha256=VeKALhMRqv7fyDHMLOM5_RzXUEuDdg_n6OIRi3sdB-o,37204
|
||||
boto3/data/sns/2010-03-31/resources-1.json,sha256=7zmKQhafgsRDu4U1yiw3NXHz-zJhHKrOmtuoYlxQP-s,9091
|
||||
boto3/data/sqs/2012-11-05/resources-1.json,sha256=LRIIr5BId3UDeuBfLn-vRiWsSZCM9_ynqdxF8uzHgy8,6545
|
||||
boto3/docs/__init__.py,sha256=z5WyRX2qgsLBS0k6dXTGUJdBi3ne1SrK5fUnQtuFX3c,1529
|
||||
boto3/docs/__pycache__/__init__.cpython-37.pyc,,
|
||||
boto3/docs/__pycache__/action.cpython-37.pyc,,
|
||||
boto3/docs/__pycache__/attr.cpython-37.pyc,,
|
||||
boto3/docs/__pycache__/base.cpython-37.pyc,,
|
||||
boto3/docs/__pycache__/client.cpython-37.pyc,,
|
||||
boto3/docs/__pycache__/collection.cpython-37.pyc,,
|
||||
boto3/docs/__pycache__/docstring.cpython-37.pyc,,
|
||||
boto3/docs/__pycache__/method.cpython-37.pyc,,
|
||||
boto3/docs/__pycache__/resource.cpython-37.pyc,,
|
||||
boto3/docs/__pycache__/service.cpython-37.pyc,,
|
||||
boto3/docs/__pycache__/subresource.cpython-37.pyc,,
|
||||
boto3/docs/__pycache__/utils.cpython-37.pyc,,
|
||||
boto3/docs/__pycache__/waiter.cpython-37.pyc,,
|
||||
boto3/docs/action.py,sha256=PQw4_g-V4HyU-oCV0U6DUwfDO4WTpq6gzjZdmraRVWY,6170
|
||||
boto3/docs/attr.py,sha256=nB4ok-1gw-aAK-9WvFwpTjtnMOHK_xhTabElepcn-iA,2217
|
||||
boto3/docs/base.py,sha256=A5U1w8nTEIoOSxlp-69GxZE4z5Gx30ZzKGhjiTxhpjs,1330
|
||||
boto3/docs/client.py,sha256=4IdVNMzUXyNrKEhBUzzpcHVbZ6gFpPiRI4_zv2hQVdM,1064
|
||||
boto3/docs/collection.py,sha256=PTeJAXmnRP0pVh818fUHXK6u5xZ6afmMR76DtO_yj9E,9721
|
||||
boto3/docs/docstring.py,sha256=j5NEvslBV2FImB2hYox3bzI30AGlOw5nezCCOGxCi1c,2625
|
||||
boto3/docs/method.py,sha256=mbkxc-8O1rCIEepg0-8ykmKWx1kszzNVmGMtY_ZW3EE,2768
|
||||
boto3/docs/resource.py,sha256=stg856hz8SjYCJQSI627Rcqex3Kj9CfpyxXnGpb4Ys0,10988
|
||||
boto3/docs/service.py,sha256=cmBCQ1P4CrJdFoBbHt8RFhbM1rEQ5SVqz2lSDBBvPB4,5479
|
||||
boto3/docs/subresource.py,sha256=g9tnSouUIV1OrG363MifU1vfA4GFX4-VyYXC2LDlHow,4620
|
||||
boto3/docs/utils.py,sha256=49t2YBFujtm4guzbL1s7OeeLVkhvA0nojBfl49pBvU4,5710
|
||||
boto3/docs/waiter.py,sha256=FEBV9uHTonsb1VjtkutI1DuZ0MUEKnrbGzrPUi7IjVk,4046
|
||||
boto3/dynamodb/__init__.py,sha256=PdoVyC_cgVtayx5XDOzBw2cnYL1oYvnd7gJN9AE7I5g,561
|
||||
boto3/dynamodb/__pycache__/__init__.cpython-37.pyc,,
|
||||
boto3/dynamodb/__pycache__/conditions.cpython-37.pyc,,
|
||||
boto3/dynamodb/__pycache__/table.cpython-37.pyc,,
|
||||
boto3/dynamodb/__pycache__/transform.cpython-37.pyc,,
|
||||
boto3/dynamodb/__pycache__/types.cpython-37.pyc,,
|
||||
boto3/dynamodb/conditions.py,sha256=E8E7bJa5bS4UQ0zdsXDfPqKQGUQaiecjB8bloWS8Tjc,14875
|
||||
boto3/dynamodb/table.py,sha256=1B-WgvMpLoMliVVc4lgcWSoMDqP5vjP0CR0oeWveuk0,6293
|
||||
boto3/dynamodb/transform.py,sha256=frEjGCQl9cxRbTfpJht3ulMoGrhwROLyndRW_cKA7Yg,12372
|
||||
boto3/dynamodb/types.py,sha256=YVvXhUVBNRriNC59w62aYUWh6cYM9IFe_TryWIn3E7s,9677
|
||||
boto3/ec2/__init__.py,sha256=PdoVyC_cgVtayx5XDOzBw2cnYL1oYvnd7gJN9AE7I5g,561
|
||||
boto3/ec2/__pycache__/__init__.cpython-37.pyc,,
|
||||
boto3/ec2/__pycache__/createtags.cpython-37.pyc,,
|
||||
boto3/ec2/__pycache__/deletetags.cpython-37.pyc,,
|
||||
boto3/ec2/createtags.py,sha256=95UdoeJ2tVN6boBTZjy67P6_FVym_0jUODLpvsCgQLY,1576
|
||||
boto3/ec2/deletetags.py,sha256=mLHUD0RbYLqCfD4DO_lg0PTxvktpPDVykDaRnVyksz0,1163
|
||||
boto3/examples/cloudfront.rst,sha256=Qy3W9oI-pSy1k-P3DtAlxfL2zP297MQxswwlggvhdng,1389
|
||||
boto3/examples/s3.rst,sha256=-ql1FdEitUStrm-4KxOxC2MGFK8bVwXWqZ8TNlt9ksM,4548
|
||||
boto3/exceptions.py,sha256=jLEQQKg6E7a7ZMcB5eGlGsD3wNZfmRUBEz-xAtt7G_w,3993
|
||||
boto3/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
boto3/resources/__pycache__/__init__.cpython-37.pyc,,
|
||||
boto3/resources/__pycache__/action.cpython-37.pyc,,
|
||||
boto3/resources/__pycache__/base.cpython-37.pyc,,
|
||||
boto3/resources/__pycache__/collection.cpython-37.pyc,,
|
||||
boto3/resources/__pycache__/factory.cpython-37.pyc,,
|
||||
boto3/resources/__pycache__/model.cpython-37.pyc,,
|
||||
boto3/resources/__pycache__/params.cpython-37.pyc,,
|
||||
boto3/resources/__pycache__/response.cpython-37.pyc,,
|
||||
boto3/resources/action.py,sha256=NrCEcYOqeTGkuL1_xqPcioCvaBpbWpVSr4XCKwnXZUc,9500
|
||||
boto3/resources/base.py,sha256=mzaGCFA1xfxtacZ6iaOThu1pz3E1VBuJ8YftbcUdZWY,5054
|
||||
boto3/resources/collection.py,sha256=UkCdWTnFnuwnrlrYbicKAUF1E5p5FMuKHaULAoHPra8,19049
|
||||
boto3/resources/factory.py,sha256=FbT_q4bp1_gyEaMKDirICtMzkcDpG4v3u5yWLKEZKnE,22401
|
||||
boto3/resources/model.py,sha256=OhBJ9LLAzvinlUcyg33HteHU1GAbYHNSLv6Lrk7nmrU,20675
|
||||
boto3/resources/params.py,sha256=EdVlP0Y3x6VAfATySp3LVQuk8ieFWE9DiqQvct0u_gM,6132
|
||||
boto3/resources/response.py,sha256=1QjHOiEsecZ2Ah5v809JFus4YgURibHyiq3CcKSvPYo,11569
|
||||
boto3/s3/__init__.py,sha256=PdoVyC_cgVtayx5XDOzBw2cnYL1oYvnd7gJN9AE7I5g,561
|
||||
boto3/s3/__pycache__/__init__.cpython-37.pyc,,
|
||||
boto3/s3/__pycache__/inject.cpython-37.pyc,,
|
||||
boto3/s3/__pycache__/transfer.cpython-37.pyc,,
|
||||
boto3/s3/inject.py,sha256=NsTUDg1LS8kClcL1dHPddGOagySdz7wlnuZ7_F88Usg,26176
|
||||
boto3/s3/transfer.py,sha256=Ri8nWJ_49h73xnUvCepGUKDcjkr1aF16V49zc3NdYmE,12812
|
||||
boto3/session.py,sha256=hMp381e48grdIpS0_QTq51hrN0Oc4zOpxaoolaml-S0,19614
|
||||
boto3/utils.py,sha256=vQzgyzJ1ZuZ8zSjfwOwIHY94LrlzolNTnb9wQabOdPg,3095
|
||||
@@ -0,0 +1,6 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: bdist_wheel (0.24.0)
|
||||
Root-Is-Purelib: true
|
||||
Tag: py2-none-any
|
||||
Tag: py3-none-any
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
{"license": "Apache License 2.0", "name": "boto3", "metadata_version": "2.0", "generator": "bdist_wheel (0.24.0)", "summary": "The AWS SDK for Python", "run_requires": [{"requires": ["botocore>=1.13.45,<1.14.0", "jmespath>=0.7.1,<1.0.0", "s3transfer>=0.2.0,<0.3.0"]}], "version": "1.10.45", "extensions": {"python.details": {"project_urls": {"Home": "https://github.com/boto/boto3"}, "document_names": {"description": "DESCRIPTION.rst"}, "contacts": [{"role": "author", "name": "Amazon Web Services"}]}}, "classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Natural Language :: English", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7"], "extras": []}
|
||||
@@ -0,0 +1 @@
|
||||
boto3
|
||||
@@ -0,0 +1,110 @@
|
||||
# Copyright 2014 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
||||
# may not use this file except in compliance with the License. A copy of
|
||||
# the License is located at
|
||||
#
|
||||
# http://aws.amazon.com/apache2.0/
|
||||
#
|
||||
# or in the "license" file accompanying this file. This file is
|
||||
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
||||
# ANY KIND, either express or implied. See the License for the specific
|
||||
# language governing permissions and limitations under the License.
|
||||
|
||||
import logging
|
||||
|
||||
from boto3.session import Session
|
||||
|
||||
|
||||
__author__ = 'Amazon Web Services'
|
||||
__version__ = '1.10.45'
|
||||
|
||||
|
||||
# The default Boto3 session; autoloaded when needed.
|
||||
DEFAULT_SESSION = None
|
||||
|
||||
|
||||
def setup_default_session(**kwargs):
|
||||
"""
|
||||
Set up a default session, passing through any parameters to the session
|
||||
constructor. There is no need to call this unless you wish to pass custom
|
||||
parameters, because a default session will be created for you.
|
||||
"""
|
||||
global DEFAULT_SESSION
|
||||
DEFAULT_SESSION = Session(**kwargs)
|
||||
|
||||
|
||||
def set_stream_logger(name='boto3', level=logging.DEBUG, format_string=None):
|
||||
"""
|
||||
Add a stream handler for the given name and level to the logging module.
|
||||
By default, this logs all boto3 messages to ``stdout``.
|
||||
|
||||
>>> import boto3
|
||||
>>> boto3.set_stream_logger('boto3.resources', logging.INFO)
|
||||
|
||||
For debugging purposes a good choice is to set the stream logger to ``''``
|
||||
which is equivalent to saying "log everything".
|
||||
|
||||
.. WARNING::
|
||||
Be aware that when logging anything from ``'botocore'`` the full wire
|
||||
trace will appear in your logs. If your payloads contain sensitive data
|
||||
this should not be used in production.
|
||||
|
||||
:type name: string
|
||||
:param name: Log name
|
||||
:type level: int
|
||||
:param level: Logging level, e.g. ``logging.INFO``
|
||||
:type format_string: str
|
||||
:param format_string: Log message format
|
||||
"""
|
||||
if format_string is None:
|
||||
format_string = "%(asctime)s %(name)s [%(levelname)s] %(message)s"
|
||||
|
||||
logger = logging.getLogger(name)
|
||||
logger.setLevel(level)
|
||||
handler = logging.StreamHandler()
|
||||
handler.setLevel(level)
|
||||
formatter = logging.Formatter(format_string)
|
||||
handler.setFormatter(formatter)
|
||||
logger.addHandler(handler)
|
||||
|
||||
|
||||
def _get_default_session():
|
||||
"""
|
||||
Get the default session, creating one if needed.
|
||||
|
||||
:rtype: :py:class:`~boto3.session.Session`
|
||||
:return: The default session
|
||||
"""
|
||||
if DEFAULT_SESSION is None:
|
||||
setup_default_session()
|
||||
|
||||
return DEFAULT_SESSION
|
||||
|
||||
|
||||
def client(*args, **kwargs):
|
||||
"""
|
||||
Create a low-level service client by name using the default session.
|
||||
|
||||
See :py:meth:`boto3.session.Session.client`.
|
||||
"""
|
||||
return _get_default_session().client(*args, **kwargs)
|
||||
|
||||
|
||||
def resource(*args, **kwargs):
|
||||
"""
|
||||
Create a resource service client by name using the default session.
|
||||
|
||||
See :py:meth:`boto3.session.Session.resource`.
|
||||
"""
|
||||
return _get_default_session().resource(*args, **kwargs)
|
||||
|
||||
|
||||
# Set up logging to ``/dev/null`` like a library is supposed to.
|
||||
# http://docs.python.org/3.3/howto/logging.html#configuring-logging-for-a-library
|
||||
class NullHandler(logging.Handler):
|
||||
def emit(self, record):
|
||||
pass
|
||||
|
||||
|
||||
logging.getLogger('boto3').addHandler(NullHandler())
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,48 @@
|
||||
# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
||||
# may not use this file except in compliance with the License. A copy of
|
||||
# the License is located at
|
||||
#
|
||||
# http://aws.amazon.com/apache2.0/
|
||||
#
|
||||
# or in the "license" file accompanying this file. This file is
|
||||
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
||||
# ANY KIND, either express or implied. See the License for the specific
|
||||
# language governing permissions and limitations under the License.
|
||||
import sys
|
||||
import os
|
||||
import errno
|
||||
import socket
|
||||
|
||||
from botocore.vendored import six
|
||||
|
||||
if six.PY3:
|
||||
# In python3, socket.error is OSError, which is too general
|
||||
# for what we want (i.e FileNotFoundError is a subclass of OSError).
|
||||
# In py3 all the socket related errors are in a newly created
|
||||
# ConnectionError
|
||||
SOCKET_ERROR = ConnectionError
|
||||
else:
|
||||
SOCKET_ERROR = socket.error
|
||||
|
||||
if six.PY3:
|
||||
import collections.abc as collections_abc
|
||||
else:
|
||||
import collections as collections_abc
|
||||
|
||||
|
||||
if sys.platform.startswith('win'):
|
||||
def rename_file(current_filename, new_filename):
|
||||
try:
|
||||
os.remove(new_filename)
|
||||
except OSError as e:
|
||||
if not e.errno == errno.ENOENT:
|
||||
# We only want to a ignore trying to remove
|
||||
# a file that does not exist. If it fails
|
||||
# for any other reason we should be propagating
|
||||
# that exception.
|
||||
raise
|
||||
os.rename(current_filename, new_filename)
|
||||
else:
|
||||
rename_file = os.rename
|
||||
+195
@@ -0,0 +1,195 @@
|
||||
{
|
||||
"service": {
|
||||
"actions": {
|
||||
"CreateStack": {
|
||||
"request": { "operation": "CreateStack" },
|
||||
"resource": {
|
||||
"type": "Stack",
|
||||
"identifiers": [
|
||||
{ "target": "Name", "source": "requestParameter", "path": "StackName" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"has": {
|
||||
"Event": {
|
||||
"resource": {
|
||||
"type": "Event",
|
||||
"identifiers": [
|
||||
{ "target": "Id", "source": "input" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"Stack": {
|
||||
"resource": {
|
||||
"type": "Stack",
|
||||
"identifiers": [
|
||||
{ "target": "Name", "source": "input" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"hasMany": {
|
||||
"Stacks": {
|
||||
"request": { "operation": "DescribeStacks" },
|
||||
"resource": {
|
||||
"type": "Stack",
|
||||
"identifiers": [
|
||||
{ "target": "Name", "source": "response", "path": "Stacks[].StackName" }
|
||||
],
|
||||
"path": "Stacks[]"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"resources": {
|
||||
"Event": {
|
||||
"identifiers": [
|
||||
{
|
||||
"name": "Id",
|
||||
"memberName": "EventId"
|
||||
}
|
||||
],
|
||||
"shape": "StackEvent"
|
||||
},
|
||||
"Stack": {
|
||||
"identifiers": [
|
||||
{
|
||||
"name": "Name",
|
||||
"memberName": "StackName"
|
||||
}
|
||||
],
|
||||
"shape": "Stack",
|
||||
"load": {
|
||||
"request": {
|
||||
"operation": "DescribeStacks",
|
||||
"params": [
|
||||
{ "target": "StackName", "source": "identifier", "name": "Name" }
|
||||
]
|
||||
},
|
||||
"path": "Stacks[0]"
|
||||
},
|
||||
"actions": {
|
||||
"CancelUpdate": {
|
||||
"request": {
|
||||
"operation": "CancelUpdateStack",
|
||||
"params": [
|
||||
{ "target": "StackName", "source": "identifier", "name": "Name" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"Delete": {
|
||||
"request": {
|
||||
"operation": "DeleteStack",
|
||||
"params": [
|
||||
{ "target": "StackName", "source": "identifier", "name": "Name" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"Update": {
|
||||
"request": {
|
||||
"operation": "UpdateStack",
|
||||
"params": [
|
||||
{ "target": "StackName", "source": "identifier", "name": "Name" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"has": {
|
||||
"Resource": {
|
||||
"resource": {
|
||||
"type": "StackResource",
|
||||
"identifiers": [
|
||||
{ "target": "StackName", "source": "identifier", "name": "Name" },
|
||||
{ "target": "LogicalId", "source": "input" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"hasMany": {
|
||||
"Events": {
|
||||
"request": {
|
||||
"operation": "DescribeStackEvents",
|
||||
"params": [
|
||||
{ "target": "StackName", "source": "identifier", "name": "Name" }
|
||||
]
|
||||
},
|
||||
"resource": {
|
||||
"type": "Event",
|
||||
"identifiers": [
|
||||
{ "target": "Id", "source": "response", "path": "StackEvents[].EventId" }
|
||||
],
|
||||
"path": "StackEvents[]"
|
||||
}
|
||||
},
|
||||
"ResourceSummaries": {
|
||||
"request": {
|
||||
"operation": "ListStackResources",
|
||||
"params": [
|
||||
{ "target": "StackName", "source": "identifier", "name": "Name" }
|
||||
]
|
||||
},
|
||||
"resource": {
|
||||
"type": "StackResourceSummary",
|
||||
"identifiers": [
|
||||
{ "target": "LogicalId", "source": "response", "path": "StackResourceSummaries[].LogicalResourceId" },
|
||||
{ "target": "StackName", "source": "requestParameter", "path": "StackName" }
|
||||
],
|
||||
"path": "StackResourceSummaries[]"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"StackResource": {
|
||||
"identifiers": [
|
||||
{ "name": "StackName" },
|
||||
{
|
||||
"name": "LogicalId",
|
||||
"memberName": "LogicalResourceId"
|
||||
}
|
||||
],
|
||||
"shape": "StackResourceDetail",
|
||||
"load": {
|
||||
"request": {
|
||||
"operation": "DescribeStackResource",
|
||||
"params": [
|
||||
{ "target": "LogicalResourceId", "source": "identifier", "name": "LogicalId" },
|
||||
{ "target": "StackName", "source": "identifier", "name": "StackName" }
|
||||
]
|
||||
},
|
||||
"path": "StackResourceDetail"
|
||||
},
|
||||
"has": {
|
||||
"Stack": {
|
||||
"resource": {
|
||||
"type": "Stack",
|
||||
"identifiers": [
|
||||
{ "target": "Name", "source": "identifier", "name": "StackName" }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"StackResourceSummary": {
|
||||
"identifiers": [
|
||||
{ "name": "StackName" },
|
||||
{
|
||||
"name": "LogicalId",
|
||||
"memberName": "LogicalResourceId"
|
||||
}
|
||||
],
|
||||
"shape": "StackResourceSummary",
|
||||
"has": {
|
||||
"Resource": {
|
||||
"resource": {
|
||||
"type": "StackResource",
|
||||
"identifiers": [
|
||||
{ "target": "LogicalId", "source": "identifier", "name": "LogicalId" },
|
||||
{ "target": "StackName", "source": "identifier", "name": "StackName" }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+334
@@ -0,0 +1,334 @@
|
||||
{
|
||||
"service": {
|
||||
"has": {
|
||||
"Alarm": {
|
||||
"resource": {
|
||||
"type": "Alarm",
|
||||
"identifiers": [
|
||||
{
|
||||
"target": "Name",
|
||||
"source": "input"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"Metric": {
|
||||
"resource": {
|
||||
"type": "Metric",
|
||||
"identifiers": [
|
||||
{
|
||||
"target": "Namespace",
|
||||
"source": "input"
|
||||
},
|
||||
{
|
||||
"target": "Name",
|
||||
"source": "input"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"hasMany": {
|
||||
"Alarms": {
|
||||
"request": { "operation": "DescribeAlarms" },
|
||||
"resource": {
|
||||
"type": "Alarm",
|
||||
"identifiers": [
|
||||
{
|
||||
"target": "Name",
|
||||
"source": "response",
|
||||
"path": "MetricAlarms[].AlarmName"
|
||||
}
|
||||
],
|
||||
"path": "MetricAlarms[]"
|
||||
}
|
||||
},
|
||||
"Metrics": {
|
||||
"request": { "operation": "ListMetrics" },
|
||||
"resource": {
|
||||
"type": "Metric",
|
||||
"identifiers": [
|
||||
{
|
||||
"target": "Namespace",
|
||||
"source": "response",
|
||||
"path": "Metrics[].Namespace"
|
||||
},
|
||||
{
|
||||
"target": "Name",
|
||||
"source": "response",
|
||||
"path": "Metrics[].MetricName"
|
||||
}
|
||||
],
|
||||
"path": "Metrics[]"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"resources": {
|
||||
"Alarm": {
|
||||
"identifiers": [
|
||||
{
|
||||
"name": "Name",
|
||||
"memberName": "AlarmName"
|
||||
}
|
||||
],
|
||||
"shape": "MetricAlarm",
|
||||
"load": {
|
||||
"request": {
|
||||
"operation": "DescribeAlarms",
|
||||
"params": [
|
||||
{
|
||||
"target": "AlarmNames[0]",
|
||||
"source": "identifier",
|
||||
"name": "Name"
|
||||
}
|
||||
]
|
||||
},
|
||||
"path": "MetricAlarms[0]"
|
||||
},
|
||||
"actions": {
|
||||
"Delete": {
|
||||
"request": {
|
||||
"operation": "DeleteAlarms",
|
||||
"params": [
|
||||
{
|
||||
"target": "AlarmNames[0]",
|
||||
"source": "identifier",
|
||||
"name": "Name"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"DescribeHistory": {
|
||||
"request": {
|
||||
"operation": "DescribeAlarmHistory",
|
||||
"params": [
|
||||
{
|
||||
"target": "AlarmName",
|
||||
"source": "identifier",
|
||||
"name": "Name"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"DisableActions": {
|
||||
"request": {
|
||||
"operation": "DisableAlarmActions",
|
||||
"params": [
|
||||
{
|
||||
"target": "AlarmNames[0]",
|
||||
"source": "identifier",
|
||||
"name": "Name"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"EnableActions": {
|
||||
"request": {
|
||||
"operation": "EnableAlarmActions",
|
||||
"params": [
|
||||
{
|
||||
"target": "AlarmNames[0]",
|
||||
"source": "identifier",
|
||||
"name": "Name"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"SetState": {
|
||||
"request": {
|
||||
"operation": "SetAlarmState",
|
||||
"params": [
|
||||
{
|
||||
"target": "AlarmName",
|
||||
"source": "identifier",
|
||||
"name": "Name"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"batchActions": {
|
||||
"Delete": {
|
||||
"request": {
|
||||
"operation": "DeleteAlarms",
|
||||
"params": [
|
||||
{
|
||||
"target": "AlarmNames[]",
|
||||
"source": "identifier",
|
||||
"name": "Name"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"DisableActions": {
|
||||
"request": {
|
||||
"operation": "DisableAlarmActions",
|
||||
"params": [
|
||||
{
|
||||
"target": "AlarmNames[]",
|
||||
"source": "identifier",
|
||||
"name": "Name"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"EnableActions": {
|
||||
"request": {
|
||||
"operation": "EnableAlarmActions",
|
||||
"params": [
|
||||
{
|
||||
"target": "AlarmNames[]",
|
||||
"source": "identifier",
|
||||
"name": "Name"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"has": {
|
||||
"Metric": {
|
||||
"resource": {
|
||||
"type": "Metric",
|
||||
"identifiers": [
|
||||
{
|
||||
"target": "Namespace",
|
||||
"source": "data",
|
||||
"path": "Namespace"
|
||||
},
|
||||
{
|
||||
"target": "Name",
|
||||
"source": "data",
|
||||
"path": "MetricName"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Metric": {
|
||||
"identifiers": [
|
||||
{
|
||||
"name": "Namespace",
|
||||
"memberName": "Namespace"
|
||||
},
|
||||
{
|
||||
"name": "Name",
|
||||
"memberName": "MetricName"
|
||||
}
|
||||
],
|
||||
"shape": "Metric",
|
||||
"load": {
|
||||
"request": {
|
||||
"operation": "ListMetrics",
|
||||
"params": [
|
||||
{
|
||||
"target": "MetricName",
|
||||
"source": "identifier",
|
||||
"name": "Name"
|
||||
},
|
||||
{
|
||||
"target": "Namespace",
|
||||
"source": "identifier",
|
||||
"name": "Namespace"
|
||||
}
|
||||
]
|
||||
},
|
||||
"path": "Metrics[0]"
|
||||
},
|
||||
"actions": {
|
||||
"GetStatistics": {
|
||||
"request": {
|
||||
"operation": "GetMetricStatistics",
|
||||
"params": [
|
||||
{
|
||||
"target": "Namespace",
|
||||
"source": "identifier",
|
||||
"name": "Namespace"
|
||||
},
|
||||
{
|
||||
"target": "MetricName",
|
||||
"source": "identifier",
|
||||
"name": "Name"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"PutAlarm": {
|
||||
"request": {
|
||||
"operation": "PutMetricAlarm",
|
||||
"params": [
|
||||
{
|
||||
"target": "Namespace",
|
||||
"source": "identifier",
|
||||
"name": "Namespace"
|
||||
},
|
||||
{
|
||||
"target": "MetricName",
|
||||
"source": "identifier",
|
||||
"name": "Name"
|
||||
}
|
||||
]
|
||||
},
|
||||
"resource": {
|
||||
"type": "Alarm",
|
||||
"identifiers": [
|
||||
{
|
||||
"target": "Name",
|
||||
"source": "requestParameter",
|
||||
"path": "AlarmName"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"PutData": {
|
||||
"request": {
|
||||
"operation": "PutMetricData",
|
||||
"params": [
|
||||
{
|
||||
"target": "Namespace",
|
||||
"source": "identifier",
|
||||
"name": "Namespace"
|
||||
},
|
||||
{
|
||||
"target": "MetricData[].MetricName",
|
||||
"source": "identifier",
|
||||
"name": "Name"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"hasMany": {
|
||||
"Alarms": {
|
||||
"request": {
|
||||
"operation": "DescribeAlarmsForMetric",
|
||||
"params": [
|
||||
{
|
||||
"target": "Namespace",
|
||||
"source": "identifier",
|
||||
"name": "Namespace"
|
||||
},
|
||||
{
|
||||
"target": "MetricName",
|
||||
"source": "identifier",
|
||||
"name": "Name"
|
||||
}
|
||||
]
|
||||
},
|
||||
"resource": {
|
||||
"type": "Alarm",
|
||||
"identifiers": [
|
||||
{
|
||||
"target": "Name",
|
||||
"source": "response",
|
||||
"path": "MetricAlarms[].AlarmName"
|
||||
}
|
||||
],
|
||||
"path": "MetricAlarms[]"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+150
@@ -0,0 +1,150 @@
|
||||
{
|
||||
"service": {
|
||||
"actions": {
|
||||
"BatchGetItem": {
|
||||
"request": { "operation": "BatchGetItem" }
|
||||
},
|
||||
"BatchWriteItem": {
|
||||
"request": { "operation": "BatchWriteItem" }
|
||||
},
|
||||
"CreateTable": {
|
||||
"request": { "operation": "CreateTable" },
|
||||
"resource": {
|
||||
"type": "Table",
|
||||
"identifiers": [
|
||||
{ "target": "Name", "source": "response", "path": "TableDescription.TableName" }
|
||||
],
|
||||
"path": "TableDescription"
|
||||
}
|
||||
}
|
||||
},
|
||||
"has": {
|
||||
"Table": {
|
||||
"resource": {
|
||||
"type": "Table",
|
||||
"identifiers": [
|
||||
{ "target": "Name", "source": "input" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"hasMany": {
|
||||
"Tables": {
|
||||
"request": { "operation": "ListTables" },
|
||||
"resource": {
|
||||
"type": "Table",
|
||||
"identifiers": [
|
||||
{ "target": "Name", "source": "response", "path": "TableNames[]" }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"resources": {
|
||||
"Table": {
|
||||
"identifiers": [
|
||||
{
|
||||
"name": "Name",
|
||||
"memberName": "TableName"
|
||||
}
|
||||
],
|
||||
"shape": "TableDescription",
|
||||
"load": {
|
||||
"request": {
|
||||
"operation": "DescribeTable",
|
||||
"params": [
|
||||
{ "target": "TableName", "source": "identifier", "name": "Name" }
|
||||
]
|
||||
},
|
||||
"path": "Table"
|
||||
},
|
||||
"actions": {
|
||||
"Delete": {
|
||||
"request": {
|
||||
"operation": "DeleteTable",
|
||||
"params": [
|
||||
{ "target": "TableName", "source": "identifier", "name": "Name" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"DeleteItem": {
|
||||
"request": {
|
||||
"operation": "DeleteItem",
|
||||
"params": [
|
||||
{ "target": "TableName", "source": "identifier", "name": "Name" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"GetItem": {
|
||||
"request": {
|
||||
"operation": "GetItem",
|
||||
"params": [
|
||||
{ "target": "TableName", "source": "identifier", "name": "Name" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"PutItem": {
|
||||
"request": {
|
||||
"operation": "PutItem",
|
||||
"params": [
|
||||
{ "target": "TableName", "source": "identifier", "name": "Name" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"Query": {
|
||||
"request": {
|
||||
"operation": "Query",
|
||||
"params": [
|
||||
{ "target": "TableName", "source": "identifier", "name": "Name" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"Scan": {
|
||||
"request": {
|
||||
"operation": "Scan",
|
||||
"params": [
|
||||
{ "target": "TableName", "source": "identifier", "name": "Name" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"Update": {
|
||||
"request": {
|
||||
"operation": "UpdateTable",
|
||||
"params": [
|
||||
{ "target": "TableName", "source": "identifier", "name": "Name" }
|
||||
]
|
||||
},
|
||||
"resource": {
|
||||
"type": "Table",
|
||||
"identifiers": [
|
||||
{ "target": "Name", "source": "identifier", "name": "Name" }
|
||||
],
|
||||
"path": "TableDescription"
|
||||
}
|
||||
},
|
||||
"UpdateItem": {
|
||||
"request": {
|
||||
"operation": "UpdateItem",
|
||||
"params": [
|
||||
{ "target": "TableName", "source": "identifier", "name": "Name" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"waiters":{
|
||||
"Exists": {
|
||||
"waiterName": "TableExists",
|
||||
"params": [
|
||||
{ "target": "TableName", "source": "identifier", "name": "Name" }
|
||||
]
|
||||
},
|
||||
"NotExists": {
|
||||
"waiterName": "TableNotExists",
|
||||
"params": [
|
||||
{ "target": "TableName", "source": "identifier", "name": "Name" }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+2289
File diff suppressed because it is too large
Load Diff
+2289
File diff suppressed because it is too large
Load Diff
+2289
File diff suppressed because it is too large
Load Diff
+2567
File diff suppressed because it is too large
Load Diff
+2567
File diff suppressed because it is too large
Load Diff
+2567
File diff suppressed because it is too large
Load Diff
+2582
File diff suppressed because it is too large
Load Diff
+581
@@ -0,0 +1,581 @@
|
||||
{
|
||||
"service": {
|
||||
"actions": {
|
||||
"CreateVault": {
|
||||
"request": {
|
||||
"operation": "CreateVault",
|
||||
"params": [
|
||||
{ "target": "accountId", "source": "string", "value": "-" }
|
||||
]
|
||||
},
|
||||
"resource": {
|
||||
"type": "Vault",
|
||||
"identifiers": [
|
||||
{ "target": "AccountId", "source": "requestParameter", "path": "accountId" },
|
||||
{ "target": "Name", "source": "requestParameter", "path": "vaultName" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"has": {
|
||||
"Account": {
|
||||
"resource": {
|
||||
"type": "Account",
|
||||
"identifiers": [
|
||||
{ "target": "Id", "source": "input" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"hasMany": {
|
||||
"Vaults": {
|
||||
"request": {
|
||||
"operation": "ListVaults",
|
||||
"params": [
|
||||
{ "target": "accountId", "source": "string", "value": "-" }
|
||||
]
|
||||
},
|
||||
"resource": {
|
||||
"type": "Vault",
|
||||
"identifiers": [
|
||||
{ "target": "AccountId", "source": "requestParameter", "path": "accountId" },
|
||||
{ "target": "Name", "source": "response", "path": "VaultList[].VaultName" }
|
||||
],
|
||||
"path": "VaultList[]"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"resources": {
|
||||
"Account": {
|
||||
"identifiers": [
|
||||
{ "name": "Id" }
|
||||
],
|
||||
"actions": {
|
||||
"CreateVault": {
|
||||
"request": {
|
||||
"operation": "CreateVault",
|
||||
"params": [
|
||||
{ "target": "accountId", "source": "identifier", "name": "Id" }
|
||||
]
|
||||
},
|
||||
"resource": {
|
||||
"type": "Vault",
|
||||
"identifiers": [
|
||||
{ "target": "AccountId", "source": "identifier", "name": "Id" },
|
||||
{ "target": "Name", "source": "requestParameter", "path": "vaultName" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"has": {
|
||||
"Vault": {
|
||||
"resource": {
|
||||
"type": "Vault",
|
||||
"identifiers": [
|
||||
{ "target": "AccountId", "source": "identifier", "name": "Id" },
|
||||
{ "target": "Name", "source": "input" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"hasMany": {
|
||||
"Vaults": {
|
||||
"request": {
|
||||
"operation": "ListVaults",
|
||||
"params": [
|
||||
{ "target": "accountId", "source": "identifier", "name": "Id" }
|
||||
]
|
||||
},
|
||||
"resource": {
|
||||
"type": "Vault",
|
||||
"identifiers": [
|
||||
{ "target": "AccountId", "source": "identifier", "name": "Id" },
|
||||
{ "target": "Name", "source": "response", "path": "VaultList[].VaultName" }
|
||||
],
|
||||
"path": "VaultList[]"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Archive": {
|
||||
"identifiers": [
|
||||
{ "name": "AccountId" },
|
||||
{ "name": "VaultName" },
|
||||
{ "name": "Id" }
|
||||
],
|
||||
"actions": {
|
||||
"Delete": {
|
||||
"request": {
|
||||
"operation": "DeleteArchive",
|
||||
"params": [
|
||||
{ "target": "accountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "vaultName", "source": "identifier", "name": "VaultName" },
|
||||
{ "target": "archiveId", "source": "identifier", "name": "Id" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"InitiateArchiveRetrieval": {
|
||||
"request": {
|
||||
"operation": "InitiateJob",
|
||||
"params": [
|
||||
{ "target": "vaultName", "source": "identifier", "name": "VaultName" },
|
||||
{ "target": "accountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "jobParameters.Type", "source": "string", "value": "archive-retrieval" },
|
||||
{ "target": "jobParameters.ArchiveId", "source": "identifier", "name": "Id" }
|
||||
]
|
||||
},
|
||||
"resource": {
|
||||
"type": "Job",
|
||||
"identifiers": [
|
||||
{ "target": "Id", "source": "response", "path": "jobId" },
|
||||
{ "target": "AccountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "VaultName", "source": "identifier", "name": "VaultName" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"has": {
|
||||
"Vault": {
|
||||
"resource": {
|
||||
"type": "Vault",
|
||||
"identifiers": [
|
||||
{ "target": "AccountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "Name", "source": "identifier", "name": "VaultName" }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Job": {
|
||||
"identifiers": [
|
||||
{ "name": "AccountId" },
|
||||
{ "name": "VaultName" },
|
||||
{
|
||||
"name": "Id",
|
||||
"memberName": "JobId"
|
||||
}
|
||||
],
|
||||
"shape": "GlacierJobDescription",
|
||||
"load": {
|
||||
"request": {
|
||||
"operation": "DescribeJob",
|
||||
"params": [
|
||||
{ "target": "accountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "vaultName", "source": "identifier", "name": "VaultName" },
|
||||
{ "target": "jobId", "source": "identifier", "name": "Id" }
|
||||
]
|
||||
},
|
||||
"path": "@"
|
||||
},
|
||||
"actions": {
|
||||
"GetOutput": {
|
||||
"request": {
|
||||
"operation": "GetJobOutput",
|
||||
"params": [
|
||||
{ "target": "accountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "vaultName", "source": "identifier", "name": "VaultName" },
|
||||
{ "target": "jobId", "source": "identifier", "name": "Id" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"has": {
|
||||
"Vault": {
|
||||
"resource": {
|
||||
"type": "Vault",
|
||||
"identifiers": [
|
||||
{ "target": "AccountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "Name", "source": "identifier", "name": "VaultName" }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"MultipartUpload": {
|
||||
"identifiers": [
|
||||
{ "name": "AccountId" },
|
||||
{ "name": "VaultName" },
|
||||
{
|
||||
"name": "Id",
|
||||
"memberName": "MultipartUploadId"
|
||||
}
|
||||
],
|
||||
"shape": "UploadListElement",
|
||||
"actions": {
|
||||
"Abort": {
|
||||
"request": {
|
||||
"operation": "AbortMultipartUpload",
|
||||
"params": [
|
||||
{ "target": "accountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "vaultName", "source": "identifier", "name": "VaultName" },
|
||||
{ "target": "uploadId", "source": "identifier", "name": "Id" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"Complete": {
|
||||
"request": {
|
||||
"operation": "CompleteMultipartUpload",
|
||||
"params": [
|
||||
{ "target": "accountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "vaultName", "source": "identifier", "name": "VaultName" },
|
||||
{ "target": "uploadId", "source": "identifier", "name": "Id" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"Parts": {
|
||||
"request": {
|
||||
"operation": "ListParts",
|
||||
"params": [
|
||||
{ "target": "accountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "vaultName", "source": "identifier", "name": "VaultName" },
|
||||
{ "target": "uploadId", "source": "identifier", "name": "Id" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"UploadPart": {
|
||||
"request": {
|
||||
"operation": "UploadMultipartPart",
|
||||
"params": [
|
||||
{ "target": "accountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "vaultName", "source": "identifier", "name": "VaultName" },
|
||||
{ "target": "uploadId", "source": "identifier", "name": "Id" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"has": {
|
||||
"Vault": {
|
||||
"resource": {
|
||||
"type": "Vault",
|
||||
"identifiers": [
|
||||
{ "target": "AccountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "Name", "source": "identifier", "name": "VaultName" }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Notification": {
|
||||
"identifiers": [
|
||||
{ "name": "AccountId" },
|
||||
{ "name": "VaultName" }
|
||||
],
|
||||
"shape": "VaultNotificationConfig",
|
||||
"load": {
|
||||
"request": {
|
||||
"operation": "GetVaultNotifications",
|
||||
"params": [
|
||||
{ "target": "accountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "vaultName", "source": "identifier", "name": "VaultName" }
|
||||
]
|
||||
},
|
||||
"path": "vaultNotificationConfig"
|
||||
},
|
||||
"actions": {
|
||||
"Delete": {
|
||||
"request": {
|
||||
"operation": "DeleteVaultNotifications",
|
||||
"params": [
|
||||
{ "target": "accountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "vaultName", "source": "identifier", "name": "VaultName" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"Set": {
|
||||
"request": {
|
||||
"operation": "SetVaultNotifications",
|
||||
"params": [
|
||||
{ "target": "accountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "vaultName", "source": "identifier", "name": "VaultName" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"has": {
|
||||
"Vault": {
|
||||
"resource": {
|
||||
"type": "Vault",
|
||||
"identifiers": [
|
||||
{ "target": "AccountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "Name", "source": "identifier", "name": "VaultName" }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Vault": {
|
||||
"identifiers": [
|
||||
{ "name": "AccountId" },
|
||||
{
|
||||
"name": "Name",
|
||||
"memberName": "VaultName"
|
||||
}
|
||||
],
|
||||
"shape": "DescribeVaultOutput",
|
||||
"load": {
|
||||
"request": {
|
||||
"operation": "DescribeVault",
|
||||
"params": [
|
||||
{ "target": "vaultName", "source": "identifier", "name": "Name" },
|
||||
{ "target": "accountId", "source": "identifier", "name": "AccountId" }
|
||||
]
|
||||
},
|
||||
"path": "@"
|
||||
},
|
||||
"actions": {
|
||||
"Create": {
|
||||
"request": {
|
||||
"operation": "CreateVault",
|
||||
"params": [
|
||||
{ "target": "vaultName", "source": "identifier", "name": "Name" },
|
||||
{ "target": "accountId", "source": "identifier", "name": "AccountId" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"Delete": {
|
||||
"request": {
|
||||
"operation": "DeleteVault",
|
||||
"params": [
|
||||
{ "target": "vaultName", "source": "identifier", "name": "Name" },
|
||||
{ "target": "accountId", "source": "identifier", "name": "AccountId" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"InitiateInventoryRetrieval": {
|
||||
"request": {
|
||||
"operation": "InitiateJob",
|
||||
"params": [
|
||||
{ "target": "vaultName", "source": "identifier", "name": "Name" },
|
||||
{ "target": "accountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "jobParameters.Type", "source": "string", "value": "inventory-retrieval" }
|
||||
]
|
||||
},
|
||||
"resource": {
|
||||
"type": "Job",
|
||||
"identifiers": [
|
||||
{ "target": "Id", "source": "response", "path": "jobId" },
|
||||
{ "target": "AccountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "VaultName", "source": "identifier", "name": "Name" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"InitiateMultipartUpload": {
|
||||
"request": {
|
||||
"operation": "InitiateMultipartUpload",
|
||||
"params": [
|
||||
{ "target": "vaultName", "source": "identifier", "name": "Name" },
|
||||
{ "target": "accountId", "source": "identifier", "name": "AccountId" }
|
||||
]
|
||||
},
|
||||
"resource": {
|
||||
"type": "MultipartUpload",
|
||||
"identifiers": [
|
||||
{ "target": "Id", "source": "response", "path": "uploadId" },
|
||||
{ "target": "AccountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "VaultName", "source": "identifier", "name": "Name" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"UploadArchive": {
|
||||
"request": {
|
||||
"operation": "UploadArchive",
|
||||
"params": [
|
||||
{ "target": "vaultName", "source": "identifier", "name": "Name" },
|
||||
{ "target": "accountId", "source": "identifier", "name": "AccountId" }
|
||||
]
|
||||
},
|
||||
"resource": {
|
||||
"type": "Archive",
|
||||
"identifiers": [
|
||||
{ "target": "Id", "source": "response", "path": "archiveId" },
|
||||
{ "target": "AccountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "VaultName", "source": "identifier", "name": "Name" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"has": {
|
||||
"Account": {
|
||||
"resource": {
|
||||
"type": "Account",
|
||||
"identifiers": [
|
||||
{ "target": "Id", "source": "identifier", "name": "AccountId" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"Archive": {
|
||||
"resource": {
|
||||
"type": "Archive",
|
||||
"identifiers": [
|
||||
{ "target": "AccountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "VaultName", "source": "identifier", "name": "Name" },
|
||||
{ "target": "Id", "source": "input" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"Job": {
|
||||
"resource": {
|
||||
"type": "Job",
|
||||
"identifiers": [
|
||||
{ "target": "AccountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "VaultName", "source": "identifier", "name": "Name" },
|
||||
{ "target": "Id", "source": "input" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"MultipartUpload": {
|
||||
"resource": {
|
||||
"type": "MultipartUpload",
|
||||
"identifiers": [
|
||||
{ "target": "AccountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "VaultName", "source": "identifier", "name": "Name" },
|
||||
{ "target": "Id", "source": "input" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"Notification": {
|
||||
"resource": {
|
||||
"type": "Notification",
|
||||
"identifiers": [
|
||||
{ "target": "AccountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "VaultName", "source": "identifier", "name": "Name" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"hasMany": {
|
||||
"CompletedJobs": {
|
||||
"request": {
|
||||
"operation": "ListJobs",
|
||||
"params": [
|
||||
{ "target": "accountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "vaultName", "source": "identifier", "name": "Name" },
|
||||
{ "target": "completed", "source": "string", "value": "true" }
|
||||
]
|
||||
},
|
||||
"resource": {
|
||||
"type": "Job",
|
||||
"identifiers": [
|
||||
{ "target": "AccountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "VaultName", "source": "identifier", "name": "Name" },
|
||||
{ "target": "Id", "source": "response", "path": "JobList[].JobId" }
|
||||
],
|
||||
"path": "JobList[]"
|
||||
}
|
||||
},
|
||||
"FailedJobs": {
|
||||
"request": {
|
||||
"operation": "ListJobs",
|
||||
"params": [
|
||||
{ "target": "accountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "vaultName", "source": "identifier", "name": "Name" },
|
||||
{ "target": "statuscode", "source": "string", "value": "Failed" }
|
||||
]
|
||||
},
|
||||
"resource": {
|
||||
"type": "Job",
|
||||
"identifiers": [
|
||||
{ "target": "AccountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "VaultName", "source": "identifier", "name": "Name" },
|
||||
{ "target": "Id", "source": "response", "path": "JobList[].JobId" }
|
||||
],
|
||||
"path": "JobList[]"
|
||||
}
|
||||
},
|
||||
"Jobs": {
|
||||
"request": {
|
||||
"operation": "ListJobs",
|
||||
"params": [
|
||||
{ "target": "accountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "vaultName", "source": "identifier", "name": "Name" }
|
||||
]
|
||||
},
|
||||
"resource": {
|
||||
"type": "Job",
|
||||
"identifiers": [
|
||||
{ "target": "AccountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "VaultName", "source": "identifier", "name": "Name" },
|
||||
{ "target": "Id", "source": "response", "path": "JobList[].JobId" }
|
||||
],
|
||||
"path": "JobList[]"
|
||||
}
|
||||
},
|
||||
"JobsInProgress": {
|
||||
"request": {
|
||||
"operation": "ListJobs",
|
||||
"params": [
|
||||
{ "target": "accountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "vaultName", "source": "identifier", "name": "Name" },
|
||||
{ "target": "statuscode", "source": "string", "value": "InProgress" }
|
||||
]
|
||||
},
|
||||
"resource": {
|
||||
"type": "Job",
|
||||
"identifiers": [
|
||||
{ "target": "AccountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "VaultName", "source": "identifier", "name": "Name" },
|
||||
{ "target": "Id", "source": "response", "path": "JobList[].JobId" }
|
||||
],
|
||||
"path": "JobList[]"
|
||||
}
|
||||
},
|
||||
"MultipartUplaods": {
|
||||
"request": {
|
||||
"operation": "ListMultipartUploads",
|
||||
"params": [
|
||||
{ "target": "vaultName", "source": "identifier", "name": "Name" },
|
||||
{ "target": "accountId", "source": "identifier", "name": "AccountId" }
|
||||
]
|
||||
},
|
||||
"resource": {
|
||||
"type": "MultipartUpload",
|
||||
"identifiers": [
|
||||
{ "target": "AccountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "VaultName", "source": "identifier", "name": "Name" },
|
||||
{ "target": "Id", "source": "response", "path": "UploadsList[].MultipartUploadId" }
|
||||
],
|
||||
"path": "UploadsList[]"
|
||||
}
|
||||
},
|
||||
"MultipartUploads": {
|
||||
"request": {
|
||||
"operation": "ListMultipartUploads",
|
||||
"params": [
|
||||
{ "target": "vaultName", "source": "identifier", "name": "Name" },
|
||||
{ "target": "accountId", "source": "identifier", "name": "AccountId" }
|
||||
]
|
||||
},
|
||||
"resource": {
|
||||
"type": "MultipartUpload",
|
||||
"identifiers": [
|
||||
{ "target": "AccountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "VaultName", "source": "identifier", "name": "Name" },
|
||||
{ "target": "Id", "source": "response", "path": "UploadsList[].MultipartUploadId" }
|
||||
],
|
||||
"path": "UploadsList[]"
|
||||
}
|
||||
},
|
||||
"SucceededJobs": {
|
||||
"request": {
|
||||
"operation": "ListJobs",
|
||||
"params": [
|
||||
{ "target": "accountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "vaultName", "source": "identifier", "name": "Name" },
|
||||
{ "target": "statuscode", "source": "string", "value": "Succeeded" }
|
||||
]
|
||||
},
|
||||
"resource": {
|
||||
"type": "Job",
|
||||
"identifiers": [
|
||||
{ "target": "AccountId", "source": "identifier", "name": "AccountId" },
|
||||
{ "target": "VaultName", "source": "identifier", "name": "Name" },
|
||||
{ "target": "Id", "source": "response", "path": "JobList[].JobId" }
|
||||
],
|
||||
"path": "JobList[]"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+1721
File diff suppressed because it is too large
Load Diff
+173
@@ -0,0 +1,173 @@
|
||||
{
|
||||
"service": {
|
||||
"actions": {
|
||||
"CreateStack": {
|
||||
"request": { "operation": "CreateStack" },
|
||||
"resource": {
|
||||
"type": "Stack",
|
||||
"identifiers": [
|
||||
{ "target": "Id", "source": "response", "path": "StackId" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"has": {
|
||||
"Layer": {
|
||||
"resource": {
|
||||
"type": "Layer",
|
||||
"identifiers": [
|
||||
{ "target": "Id", "source": "input" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"Stack": {
|
||||
"resource": {
|
||||
"type": "Stack",
|
||||
"identifiers": [
|
||||
{ "target": "Id", "source": "input" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"hasMany": {
|
||||
"Stacks": {
|
||||
"request": { "operation": "DescribeStacks" },
|
||||
"resource": {
|
||||
"type": "Stack",
|
||||
"identifiers": [
|
||||
{ "target": "Id", "source": "response", "path": "Stacks[].StackId" }
|
||||
],
|
||||
"path": "Stacks[]"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"resources": {
|
||||
"Layer": {
|
||||
"identifiers": [
|
||||
{ "name": "Id" }
|
||||
],
|
||||
"shape": "Layer",
|
||||
"load": {
|
||||
"request": {
|
||||
"operation": "DescribeLayers",
|
||||
"params": [
|
||||
{ "target": "LayerIds[]", "source": "identifier", "name": "Id" }
|
||||
]
|
||||
},
|
||||
"path": "Layers[0]"
|
||||
},
|
||||
"actions": {
|
||||
"Delete": {
|
||||
"request": {
|
||||
"operation": "DeleteLayer",
|
||||
"params": [
|
||||
{ "target": "LayerId", "source": "identifier", "name": "Id" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"has": {
|
||||
"Stack": {
|
||||
"resource": {
|
||||
"type": "Stack",
|
||||
"identifiers": [
|
||||
{ "target": "Id", "source": "data", "path": "StackId" }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Stack": {
|
||||
"identifiers": [
|
||||
{ "name": "Id" }
|
||||
],
|
||||
"shape": "Stack",
|
||||
"load": {
|
||||
"request": {
|
||||
"operation": "DescribeStacks",
|
||||
"params": [
|
||||
{ "target": "StackIds[]", "source": "identifier", "name": "Id" }
|
||||
]
|
||||
},
|
||||
"path": "Stacks[0]"
|
||||
},
|
||||
"actions": {
|
||||
"CreateLayer": {
|
||||
"request": {
|
||||
"operation": "CreateLayer",
|
||||
"params": [
|
||||
{ "target": "StackId", "source": "identifier", "name": "Id" }
|
||||
]
|
||||
},
|
||||
"resource": {
|
||||
"type": "Layer",
|
||||
"identifiers": [
|
||||
{ "target": "Id", "source": "response", "path": "LayerId" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"Delete": {
|
||||
"request": {
|
||||
"operation": "DeleteStack",
|
||||
"params": [
|
||||
{ "target": "StackId", "source": "identifier", "name": "Id" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"has": {
|
||||
"Summary": {
|
||||
"resource": {
|
||||
"type": "StackSummary",
|
||||
"identifiers": [
|
||||
{ "target": "StackId", "source": "identifier", "name": "Id" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"hasMany": {
|
||||
"Layers": {
|
||||
"request": {
|
||||
"operation": "DescribeLayers",
|
||||
"params": [
|
||||
{ "target": "StackId", "source": "identifier", "name": "Id" }
|
||||
]
|
||||
},
|
||||
"resource": {
|
||||
"type": "Layer",
|
||||
"identifiers": [
|
||||
{ "target": "Id", "source": "response", "path": "Layers[].LayerId" }
|
||||
],
|
||||
"path": "Layers[]"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"StackSummary": {
|
||||
"identifiers": [
|
||||
{ "name": "StackId" }
|
||||
],
|
||||
"shape": "StackSummary",
|
||||
"load": {
|
||||
"request": {
|
||||
"operation": "DescribeStackSummary",
|
||||
"params": [
|
||||
{ "target": "StackId", "source": "identifier", "name": "StackId" }
|
||||
]
|
||||
},
|
||||
"path": "StackSummary"
|
||||
},
|
||||
"has": {
|
||||
"Stack": {
|
||||
"resource": {
|
||||
"type": "Stack",
|
||||
"identifiers": [
|
||||
{ "target": "Id", "source": "identifier", "name": "StackId" }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,327 @@
|
||||
{
|
||||
"service": {
|
||||
"actions": {
|
||||
"CreatePlatformApplication": {
|
||||
"request": { "operation": "CreatePlatformApplication" },
|
||||
"resource": {
|
||||
"type": "PlatformApplication",
|
||||
"identifiers": [
|
||||
{ "target": "Arn", "source": "response", "path": "PlatformApplicationArn" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"CreateTopic": {
|
||||
"request": { "operation": "CreateTopic" },
|
||||
"resource": {
|
||||
"type": "Topic",
|
||||
"identifiers": [
|
||||
{ "target": "Arn", "source": "response", "path": "TopicArn" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"has": {
|
||||
"PlatformApplication": {
|
||||
"resource": {
|
||||
"type": "PlatformApplication",
|
||||
"identifiers": [
|
||||
{ "target": "Arn", "source": "input" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"PlatformEndpoint": {
|
||||
"resource": {
|
||||
"type": "PlatformEndpoint",
|
||||
"identifiers": [
|
||||
{ "target": "Arn", "source": "input" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"Subscription": {
|
||||
"resource": {
|
||||
"type": "Subscription",
|
||||
"identifiers": [
|
||||
{ "target": "Arn", "source": "input" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"Topic": {
|
||||
"resource": {
|
||||
"type": "Topic",
|
||||
"identifiers": [
|
||||
{ "target": "Arn", "source": "input" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"hasMany": {
|
||||
"PlatformApplications": {
|
||||
"request": { "operation": "ListPlatformApplications" },
|
||||
"resource": {
|
||||
"type": "PlatformApplication",
|
||||
"identifiers": [
|
||||
{ "target": "Arn", "source": "response", "path": "PlatformApplications[].PlatformApplicationArn" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"Subscriptions": {
|
||||
"request": { "operation": "ListSubscriptions" },
|
||||
"resource": {
|
||||
"type": "Subscription",
|
||||
"identifiers": [
|
||||
{ "target": "Arn", "source": "response", "path": "Subscriptions[].SubscriptionArn" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"Topics": {
|
||||
"request": { "operation": "ListTopics" },
|
||||
"resource": {
|
||||
"type": "Topic",
|
||||
"identifiers": [
|
||||
{ "target": "Arn", "source": "response", "path": "Topics[].TopicArn" }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"resources": {
|
||||
"PlatformApplication": {
|
||||
"identifiers": [
|
||||
{ "name": "Arn" }
|
||||
],
|
||||
"shape": "GetPlatformApplicationAttributesResponse",
|
||||
"load": {
|
||||
"request": {
|
||||
"operation": "GetPlatformApplicationAttributes",
|
||||
"params": [
|
||||
{ "target": "PlatformApplicationArn", "source": "identifier", "name": "Arn" }
|
||||
]
|
||||
},
|
||||
"path": "@"
|
||||
},
|
||||
"actions": {
|
||||
"CreatePlatformEndpoint": {
|
||||
"request": {
|
||||
"operation": "CreatePlatformEndpoint",
|
||||
"params": [
|
||||
{ "target": "PlatformApplicationArn", "source": "identifier", "name": "Arn" }
|
||||
]
|
||||
},
|
||||
"resource": {
|
||||
"type": "PlatformEndpoint",
|
||||
"identifiers": [
|
||||
{ "target": "Arn", "source": "response", "path": "EndpointArn" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"Delete": {
|
||||
"request": {
|
||||
"operation": "DeletePlatformApplication",
|
||||
"params": [
|
||||
{ "target": "PlatformApplicationArn", "source": "identifier", "name": "Arn" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"SetAttributes": {
|
||||
"request": {
|
||||
"operation": "SetPlatformApplicationAttributes",
|
||||
"params": [
|
||||
{ "target": "PlatformApplicationArn", "source": "identifier", "name": "Arn" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"hasMany": {
|
||||
"Endpoints": {
|
||||
"request": {
|
||||
"operation": "ListEndpointsByPlatformApplication",
|
||||
"params": [
|
||||
{ "target": "PlatformApplicationArn", "source": "identifier", "name": "Arn" }
|
||||
]
|
||||
},
|
||||
"resource": {
|
||||
"type": "PlatformEndpoint",
|
||||
"identifiers": [
|
||||
{ "target": "Arn", "source": "response", "path": "Endpoints[].EndpointArn" }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"PlatformEndpoint": {
|
||||
"identifiers": [
|
||||
{ "name": "Arn" }
|
||||
],
|
||||
"shape": "GetEndpointAttributesResponse",
|
||||
"load": {
|
||||
"request": {
|
||||
"operation": "GetEndpointAttributes",
|
||||
"params": [
|
||||
{ "target": "EndpointArn", "source": "identifier", "name": "Arn" }
|
||||
]
|
||||
},
|
||||
"path": "@"
|
||||
},
|
||||
"actions": {
|
||||
"Delete": {
|
||||
"request": {
|
||||
"operation": "DeleteEndpoint",
|
||||
"params": [
|
||||
{ "target": "EndpointArn", "source": "identifier", "name": "Arn" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"Publish": {
|
||||
"request": {
|
||||
"operation": "Publish",
|
||||
"params": [
|
||||
{ "target": "TargetArn", "source": "identifier", "name": "Arn" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"SetAttributes": {
|
||||
"request": {
|
||||
"operation": "SetEndpointAttributes",
|
||||
"params": [
|
||||
{ "target": "EndpointArn", "source": "identifier", "name": "Arn" }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Subscription": {
|
||||
"identifiers": [
|
||||
{ "name": "Arn" }
|
||||
],
|
||||
"shape": "GetSubscriptionAttributesResponse",
|
||||
"load": {
|
||||
"request": {
|
||||
"operation": "GetSubscriptionAttributes",
|
||||
"params": [
|
||||
{ "target": "SubscriptionArn", "source": "identifier", "name": "Arn" }
|
||||
]
|
||||
},
|
||||
"path": "@"
|
||||
},
|
||||
"actions": {
|
||||
"Delete": {
|
||||
"request": {
|
||||
"operation": "Unsubscribe",
|
||||
"params": [
|
||||
{ "target": "SubscriptionArn", "source": "identifier", "name": "Arn" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"SetAttributes": {
|
||||
"request": {
|
||||
"operation": "SetSubscriptionAttributes",
|
||||
"params": [
|
||||
{ "target": "SubscriptionArn", "source": "identifier", "name": "Arn" }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Topic": {
|
||||
"identifiers": [
|
||||
{ "name": "Arn" }
|
||||
],
|
||||
"shape": "GetTopicAttributesResponse",
|
||||
"load": {
|
||||
"request": {
|
||||
"operation": "GetTopicAttributes",
|
||||
"params": [
|
||||
{ "target": "TopicArn", "source": "identifier", "name": "Arn" }
|
||||
]
|
||||
},
|
||||
"path": "@"
|
||||
},
|
||||
"actions": {
|
||||
"AddPermission": {
|
||||
"request": {
|
||||
"operation": "AddPermission",
|
||||
"params": [
|
||||
{ "target": "TopicArn", "source": "identifier", "name": "Arn" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"ConfirmSubscription": {
|
||||
"request": {
|
||||
"operation": "ConfirmSubscription",
|
||||
"params": [
|
||||
{ "target": "TopicArn", "source": "identifier", "name": "Arn" }
|
||||
]
|
||||
},
|
||||
"resource": {
|
||||
"type": "Subscription",
|
||||
"identifiers": [
|
||||
{ "target": "Arn", "source": "response", "path": "SubscriptionArn" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"Delete": {
|
||||
"request": {
|
||||
"operation": "DeleteTopic",
|
||||
"params": [
|
||||
{ "target": "TopicArn", "source": "identifier", "name": "Arn" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"Publish": {
|
||||
"request": {
|
||||
"operation": "Publish",
|
||||
"params": [
|
||||
{ "target": "TopicArn", "source": "identifier", "name": "Arn" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"RemovePermission": {
|
||||
"request": {
|
||||
"operation": "RemovePermission",
|
||||
"params": [
|
||||
{ "target": "TopicArn", "source": "identifier", "name": "Arn" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"SetAttributes": {
|
||||
"request": {
|
||||
"operation": "SetTopicAttributes",
|
||||
"params": [
|
||||
{ "target": "TopicArn", "source": "identifier", "name": "Arn" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"Subscribe": {
|
||||
"request": {
|
||||
"operation": "Subscribe",
|
||||
"params": [
|
||||
{ "target": "TopicArn", "source": "identifier", "name": "Arn" }
|
||||
]
|
||||
},
|
||||
"resource": {
|
||||
"type": "Subscription",
|
||||
"identifiers": [
|
||||
{ "target": "Arn", "source": "response", "path": "SubscriptionArn" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"hasMany": {
|
||||
"Subscriptions": {
|
||||
"request": {
|
||||
"operation": "ListSubscriptionsByTopic",
|
||||
"params": [
|
||||
{ "target": "TopicArn", "source": "identifier", "name": "Arn" }
|
||||
]
|
||||
},
|
||||
"resource": {
|
||||
"type": "Subscription",
|
||||
"identifiers": [
|
||||
{ "target": "Arn", "source": "response", "path": "Subscriptions[].SubscriptionArn" }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,232 @@
|
||||
{
|
||||
"service": {
|
||||
"actions": {
|
||||
"CreateQueue": {
|
||||
"request": { "operation": "CreateQueue" },
|
||||
"resource": {
|
||||
"type": "Queue",
|
||||
"identifiers": [
|
||||
{ "target": "Url", "source": "response", "path": "QueueUrl" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"GetQueueByName": {
|
||||
"request": { "operation": "GetQueueUrl" },
|
||||
"resource": {
|
||||
"type": "Queue",
|
||||
"identifiers": [
|
||||
{ "target": "Url", "source": "response", "path": "QueueUrl" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"has": {
|
||||
"Queue": {
|
||||
"resource": {
|
||||
"type": "Queue",
|
||||
"identifiers": [
|
||||
{ "target": "Url", "source": "input" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"hasMany": {
|
||||
"Queues": {
|
||||
"request": { "operation": "ListQueues" },
|
||||
"resource": {
|
||||
"type": "Queue",
|
||||
"identifiers": [
|
||||
{ "target": "Url", "source": "response", "path": "QueueUrls[]" }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"resources": {
|
||||
"Message": {
|
||||
"identifiers": [
|
||||
{ "name": "QueueUrl" },
|
||||
{
|
||||
"name": "ReceiptHandle",
|
||||
"memberName": "ReceiptHandle"
|
||||
}
|
||||
],
|
||||
"shape": "Message",
|
||||
"actions": {
|
||||
"ChangeVisibility": {
|
||||
"request": {
|
||||
"operation": "ChangeMessageVisibility",
|
||||
"params": [
|
||||
{ "target": "QueueUrl", "source": "identifier", "name": "QueueUrl" },
|
||||
{ "target": "ReceiptHandle", "source": "identifier", "name": "ReceiptHandle" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"Delete": {
|
||||
"request": {
|
||||
"operation": "DeleteMessage",
|
||||
"params": [
|
||||
{ "target": "QueueUrl", "source": "identifier", "name": "QueueUrl" },
|
||||
{ "target": "ReceiptHandle", "source": "identifier", "name": "ReceiptHandle" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"batchActions": {
|
||||
"Delete": {
|
||||
"request": {
|
||||
"operation": "DeleteMessageBatch",
|
||||
"params": [
|
||||
{ "target": "QueueUrl", "source": "identifier", "name": "QueueUrl" },
|
||||
{ "target": "Entries[*].Id", "source": "data", "path": "MessageId" },
|
||||
{ "target": "Entries[*].ReceiptHandle", "source": "identifier", "name": "ReceiptHandle" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"has": {
|
||||
"Queue": {
|
||||
"resource": {
|
||||
"type": "Queue",
|
||||
"identifiers": [
|
||||
{ "target": "Url", "source": "identifier", "name": "QueueUrl" }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Queue": {
|
||||
"identifiers": [
|
||||
{ "name": "Url" }
|
||||
],
|
||||
"shape": "GetQueueAttributesResult",
|
||||
"load": {
|
||||
"request": {
|
||||
"operation": "GetQueueAttributes",
|
||||
"params": [
|
||||
{ "target": "QueueUrl", "source": "identifier", "name": "Url" },
|
||||
{ "target": "AttributeNames[]", "source": "string", "value": "All" }
|
||||
]
|
||||
},
|
||||
"path": "@"
|
||||
},
|
||||
"actions": {
|
||||
"AddPermission": {
|
||||
"request": {
|
||||
"operation": "AddPermission",
|
||||
"params": [
|
||||
{ "target": "QueueUrl", "source": "identifier", "name": "Url" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"ChangeMessageVisibilityBatch": {
|
||||
"request": {
|
||||
"operation": "ChangeMessageVisibilityBatch",
|
||||
"params": [
|
||||
{ "target": "QueueUrl", "source": "identifier", "name": "Url" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"Delete": {
|
||||
"request": {
|
||||
"operation": "DeleteQueue",
|
||||
"params": [
|
||||
{ "target": "QueueUrl", "source": "identifier", "name": "Url" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"DeleteMessages": {
|
||||
"request": {
|
||||
"operation": "DeleteMessageBatch",
|
||||
"params": [
|
||||
{ "target": "QueueUrl", "source": "identifier", "name": "Url" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"Purge": {
|
||||
"request": {
|
||||
"operation": "PurgeQueue",
|
||||
"params": [
|
||||
{ "target": "QueueUrl", "source": "identifier", "name": "Url" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"ReceiveMessages": {
|
||||
"request": {
|
||||
"operation": "ReceiveMessage",
|
||||
"params": [
|
||||
{ "target": "QueueUrl", "source": "identifier", "name": "Url" }
|
||||
]
|
||||
},
|
||||
"resource": {
|
||||
"type": "Message",
|
||||
"identifiers": [
|
||||
{ "target": "QueueUrl", "source": "identifier", "name": "Url" },
|
||||
{ "target": "ReceiptHandle", "source": "response", "path": "Messages[].ReceiptHandle" }
|
||||
],
|
||||
"path": "Messages[]"
|
||||
}
|
||||
},
|
||||
"RemovePermission": {
|
||||
"request": {
|
||||
"operation": "RemovePermission",
|
||||
"params": [
|
||||
{ "target": "QueueUrl", "source": "identifier", "name": "Url" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"SendMessage": {
|
||||
"request": {
|
||||
"operation": "SendMessage",
|
||||
"params": [
|
||||
{ "target": "QueueUrl", "source": "identifier", "name": "Url" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"SendMessages": {
|
||||
"request": {
|
||||
"operation": "SendMessageBatch",
|
||||
"params": [
|
||||
{ "target": "QueueUrl", "source": "identifier", "name": "Url" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"SetAttributes": {
|
||||
"request": {
|
||||
"operation": "SetQueueAttributes",
|
||||
"params": [
|
||||
{ "target": "QueueUrl", "source": "identifier", "name": "Url" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"has": {
|
||||
"Message": {
|
||||
"resource": {
|
||||
"type": "Message",
|
||||
"identifiers": [
|
||||
{ "target": "QueueUrl", "source": "identifier", "name": "Url" },
|
||||
{ "target": "ReceiptHandle", "source": "input" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"hasMany": {
|
||||
"DeadLetterSourceQueues": {
|
||||
"request": {
|
||||
"operation": "ListDeadLetterSourceQueues",
|
||||
"params": [
|
||||
{ "target": "QueueUrl", "source": "identifier", "name": "Url" }
|
||||
]
|
||||
},
|
||||
"resource": {
|
||||
"type": "Queue",
|
||||
"identifiers": [
|
||||
{ "target": "Url", "source": "response", "path": "queueUrls[]" }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
||||
# may not use this file except in compliance with the License. A copy of
|
||||
# the License is located at
|
||||
#
|
||||
# http://aws.amazon.com/apache2.0/
|
||||
#
|
||||
# or in the "license" file accompanying this file. This file is
|
||||
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
||||
# ANY KIND, either express or implied. See the License for the specific
|
||||
# language governing permissions and limitations under the License.
|
||||
import os
|
||||
|
||||
from boto3.docs.service import ServiceDocumenter
|
||||
|
||||
|
||||
def generate_docs(root_dir, session):
|
||||
"""Generates the reference documentation for botocore
|
||||
|
||||
This will go through every available AWS service and output ReSTructured
|
||||
text files documenting each service.
|
||||
|
||||
:param root_dir: The directory to write the reference files to. Each
|
||||
service's reference documentation is loacated at
|
||||
root_dir/reference/services/service-name.rst
|
||||
|
||||
:param session: The boto3 session
|
||||
"""
|
||||
services_doc_path = os.path.join(root_dir, 'reference', 'services')
|
||||
if not os.path.exists(services_doc_path):
|
||||
os.makedirs(services_doc_path)
|
||||
|
||||
for service_name in session.get_available_services():
|
||||
docs = ServiceDocumenter(service_name, session).document_service()
|
||||
service_doc_path = os.path.join(
|
||||
services_doc_path, service_name + '.rst')
|
||||
with open(service_doc_path, 'wb') as f:
|
||||
f.write(docs)
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
@@ -0,0 +1,148 @@
|
||||
# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
||||
# may not use this file except in compliance with the License. A copy of
|
||||
# the License is located at
|
||||
#
|
||||
# http://aws.amazon.com/apache2.0/
|
||||
#
|
||||
# or in the "license" file accompanying this file. This file is
|
||||
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
||||
# ANY KIND, either express or implied. See the License for the specific
|
||||
# language governing permissions and limitations under the License.
|
||||
from botocore import xform_name
|
||||
from botocore.model import OperationModel
|
||||
from botocore.utils import get_service_module_name
|
||||
from botocore.docs.method import document_model_driven_method
|
||||
from botocore.docs.method import document_custom_method
|
||||
|
||||
from boto3.docs.base import BaseDocumenter
|
||||
from boto3.docs.method import document_model_driven_resource_method
|
||||
from boto3.docs.utils import get_resource_ignore_params
|
||||
from boto3.docs.utils import get_resource_public_actions
|
||||
from boto3.docs.utils import add_resource_type_overview
|
||||
|
||||
|
||||
class ActionDocumenter(BaseDocumenter):
|
||||
def document_actions(self, section):
|
||||
modeled_actions_list = self._resource_model.actions
|
||||
modeled_actions = {}
|
||||
for modeled_action in modeled_actions_list:
|
||||
modeled_actions[modeled_action.name] = modeled_action
|
||||
resource_actions = get_resource_public_actions(
|
||||
self._resource.__class__)
|
||||
self.member_map['actions'] = sorted(resource_actions)
|
||||
add_resource_type_overview(
|
||||
section=section,
|
||||
resource_type='Actions',
|
||||
description=(
|
||||
'Actions call operations on resources. They may '
|
||||
'automatically handle the passing in of arguments set '
|
||||
'from identifiers and some attributes.'),
|
||||
intro_link='actions_intro')
|
||||
|
||||
for action_name in sorted(resource_actions):
|
||||
action_section = section.add_new_section(action_name)
|
||||
if action_name in ['load', 'reload'] and self._resource_model.load:
|
||||
document_load_reload_action(
|
||||
section=action_section,
|
||||
action_name=action_name,
|
||||
resource_name=self._resource_name,
|
||||
event_emitter=self._resource.meta.client.meta.events,
|
||||
load_model=self._resource_model.load,
|
||||
service_model=self._service_model
|
||||
)
|
||||
elif action_name in modeled_actions:
|
||||
document_action(
|
||||
section=action_section,
|
||||
resource_name=self._resource_name,
|
||||
event_emitter=self._resource.meta.client.meta.events,
|
||||
action_model=modeled_actions[action_name],
|
||||
service_model=self._service_model,
|
||||
)
|
||||
else:
|
||||
document_custom_method(
|
||||
action_section, action_name, resource_actions[action_name])
|
||||
|
||||
|
||||
def document_action(section, resource_name, event_emitter, action_model,
|
||||
service_model, include_signature=True):
|
||||
"""Documents a resource action
|
||||
|
||||
:param section: The section to write to
|
||||
|
||||
:param resource_name: The name of the resource
|
||||
|
||||
:param event_emitter: The event emitter to use to emit events
|
||||
|
||||
:param action_model: The model of the action
|
||||
|
||||
:param service_model: The model of the service
|
||||
|
||||
:param include_signature: Whether or not to include the signature.
|
||||
It is useful for generating docstrings.
|
||||
"""
|
||||
operation_model = service_model.operation_model(
|
||||
action_model.request.operation)
|
||||
ignore_params = get_resource_ignore_params(action_model.request.params)
|
||||
|
||||
example_return_value = 'response'
|
||||
if action_model.resource:
|
||||
example_return_value = xform_name(action_model.resource.type)
|
||||
example_resource_name = xform_name(resource_name)
|
||||
if service_model.service_name == resource_name:
|
||||
example_resource_name = resource_name
|
||||
example_prefix = '%s = %s.%s' % (
|
||||
example_return_value, example_resource_name, action_model.name)
|
||||
document_model_driven_resource_method(
|
||||
section=section, method_name=action_model.name,
|
||||
operation_model=operation_model,
|
||||
event_emitter=event_emitter,
|
||||
method_description=operation_model.documentation,
|
||||
example_prefix=example_prefix,
|
||||
exclude_input=ignore_params,
|
||||
resource_action_model=action_model,
|
||||
include_signature=include_signature
|
||||
)
|
||||
|
||||
|
||||
def document_load_reload_action(section, action_name, resource_name,
|
||||
event_emitter, load_model, service_model,
|
||||
include_signature=True):
|
||||
"""Documents the resource load action
|
||||
|
||||
:param section: The section to write to
|
||||
|
||||
:param action_name: The name of the loading action should be load or reload
|
||||
|
||||
:param resource_name: The name of the resource
|
||||
|
||||
:param event_emitter: The event emitter to use to emit events
|
||||
|
||||
:param load_model: The model of the load action
|
||||
|
||||
:param service_model: The model of the service
|
||||
|
||||
:param include_signature: Whether or not to include the signature.
|
||||
It is useful for generating docstrings.
|
||||
"""
|
||||
description = (
|
||||
'Calls :py:meth:`%s.Client.%s` to update the attributes of the'
|
||||
' %s resource. Note that the load and reload methods are '
|
||||
'the same method and can be used interchangeably.' % (
|
||||
get_service_module_name(service_model),
|
||||
xform_name(load_model.request.operation),
|
||||
resource_name)
|
||||
)
|
||||
example_resource_name = xform_name(resource_name)
|
||||
if service_model.service_name == resource_name:
|
||||
example_resource_name = resource_name
|
||||
example_prefix = '%s.%s' % (example_resource_name, action_name)
|
||||
document_model_driven_method(
|
||||
section=section, method_name=action_name,
|
||||
operation_model=OperationModel({}, service_model),
|
||||
event_emitter=event_emitter,
|
||||
method_description=description,
|
||||
example_prefix=example_prefix,
|
||||
include_signature=include_signature
|
||||
)
|
||||
@@ -0,0 +1,54 @@
|
||||
# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
||||
# may not use this file except in compliance with the License. A copy of
|
||||
# the License is located at
|
||||
#
|
||||
# http://aws.amazon.com/apache2.0/
|
||||
#
|
||||
# or in the "license" file accompanying this file. This file is
|
||||
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
||||
# ANY KIND, either express or implied. See the License for the specific
|
||||
# language governing permissions and limitations under the License.
|
||||
from botocore.docs.params import ResponseParamsDocumenter
|
||||
|
||||
from boto3.docs.utils import get_identifier_description
|
||||
|
||||
|
||||
class ResourceShapeDocumenter(ResponseParamsDocumenter):
|
||||
EVENT_NAME = 'resource-shape'
|
||||
|
||||
|
||||
def document_attribute(section, service_name, resource_name, attr_name,
|
||||
event_emitter, attr_model, include_signature=True):
|
||||
if include_signature:
|
||||
section.style.start_sphinx_py_attr(attr_name)
|
||||
# Note that an attribute may have one, may have many, or may have no
|
||||
# operations that back the resource's shape. So we just set the
|
||||
# operation_name to the resource name if we ever to hook in and modify
|
||||
# a particular attribute.
|
||||
ResourceShapeDocumenter(
|
||||
service_name=service_name, operation_name=resource_name,
|
||||
event_emitter=event_emitter).document_params(
|
||||
section=section,
|
||||
shape=attr_model)
|
||||
|
||||
|
||||
def document_identifier(section, resource_name, identifier_model,
|
||||
include_signature=True):
|
||||
if include_signature:
|
||||
section.style.start_sphinx_py_attr(identifier_model.name)
|
||||
description = get_identifier_description(
|
||||
resource_name, identifier_model.name)
|
||||
description = '*(string)* ' + description
|
||||
section.write(description)
|
||||
|
||||
|
||||
def document_reference(section, reference_model, include_signature=True):
|
||||
if include_signature:
|
||||
section.style.start_sphinx_py_attr(reference_model.name)
|
||||
reference_type = '(:py:class:`%s`) ' % reference_model.resource.type
|
||||
section.write(reference_type)
|
||||
section.include_doc_string(
|
||||
'The related %s if set, otherwise ``None``.' % reference_model.name
|
||||
)
|
||||
@@ -0,0 +1,31 @@
|
||||
# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
||||
# may not use this file except in compliance with the License. A copy of
|
||||
# the License is located at
|
||||
#
|
||||
# http://aws.amazon.com/apache2.0/
|
||||
#
|
||||
# or in the "license" file accompanying this file. This file is
|
||||
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
||||
# ANY KIND, either express or implied. See the License for the specific
|
||||
# language governing permissions and limitations under the License.
|
||||
from botocore.compat import OrderedDict
|
||||
|
||||
|
||||
class BaseDocumenter(object):
|
||||
def __init__(self, resource):
|
||||
self._resource = resource
|
||||
self._client = self._resource.meta.client
|
||||
self._resource_model = self._resource.meta.resource_model
|
||||
self._service_model = self._client.meta.service_model
|
||||
self._resource_name = self._resource.meta.resource_model.name
|
||||
self._service_name = self._service_model.service_name
|
||||
self._service_docs_name = self._client.__class__.__name__
|
||||
self.member_map = OrderedDict()
|
||||
self.represents_service_resource = (
|
||||
self._service_name == self._resource_name)
|
||||
|
||||
@property
|
||||
def class_name(self):
|
||||
return '%s.%s' % (self._service_docs_name, self._resource_name)
|
||||
@@ -0,0 +1,27 @@
|
||||
# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
||||
# may not use this file except in compliance with the License. A copy of
|
||||
# the License is located at
|
||||
#
|
||||
# http://aws.amazon.com/apache2.0/
|
||||
#
|
||||
# or in the "license" file accompanying this file. This file is
|
||||
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
||||
# ANY KIND, either express or implied. See the License for the specific
|
||||
# language governing permissions and limitations under the License.
|
||||
from botocore.docs.client import ClientDocumenter
|
||||
|
||||
|
||||
class Boto3ClientDocumenter(ClientDocumenter):
|
||||
def _add_client_creation_example(self, section):
|
||||
section.style.start_codeblock()
|
||||
section.style.new_line()
|
||||
section.write('import boto3')
|
||||
section.style.new_line()
|
||||
section.style.new_line()
|
||||
section.write(
|
||||
'client = boto3.client(\'{service}\')'.format(
|
||||
service=self._service_name)
|
||||
)
|
||||
section.style.end_codeblock()
|
||||
@@ -0,0 +1,234 @@
|
||||
# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
||||
# may not use this file except in compliance with the License. A copy of
|
||||
# the License is located at
|
||||
#
|
||||
# http://aws.amazon.com/apache2.0/
|
||||
#
|
||||
# or in the "license" file accompanying this file. This file is
|
||||
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
||||
# ANY KIND, either express or implied. See the License for the specific
|
||||
# language governing permissions and limitations under the License.
|
||||
from botocore import xform_name
|
||||
from botocore.docs.method import get_instance_public_methods
|
||||
from botocore.docs.utils import DocumentedShape
|
||||
|
||||
from boto3.docs.base import BaseDocumenter
|
||||
from boto3.docs.utils import get_resource_ignore_params
|
||||
from boto3.docs.method import document_model_driven_resource_method
|
||||
from boto3.docs.utils import add_resource_type_overview
|
||||
|
||||
|
||||
class CollectionDocumenter(BaseDocumenter):
|
||||
def document_collections(self, section):
|
||||
collections = self._resource.meta.resource_model.collections
|
||||
collections_list = []
|
||||
add_resource_type_overview(
|
||||
section=section,
|
||||
resource_type='Collections',
|
||||
description=(
|
||||
'Collections provide an interface to iterate over and '
|
||||
'manipulate groups of resources. '),
|
||||
intro_link='guide_collections')
|
||||
self.member_map['collections'] = collections_list
|
||||
for collection in collections:
|
||||
collection_section = section.add_new_section(collection.name)
|
||||
collections_list.append(collection.name)
|
||||
self._document_collection(collection_section, collection)
|
||||
|
||||
def _document_collection(self, section, collection):
|
||||
methods = get_instance_public_methods(
|
||||
getattr(self._resource, collection.name))
|
||||
document_collection_object(section, collection)
|
||||
batch_actions = {}
|
||||
for batch_action in collection.batch_actions:
|
||||
batch_actions[batch_action.name] = batch_action
|
||||
|
||||
for method in sorted(methods):
|
||||
method_section = section.add_new_section(method)
|
||||
if method in batch_actions:
|
||||
document_batch_action(
|
||||
section=method_section,
|
||||
resource_name=self._resource_name,
|
||||
event_emitter=self._resource.meta.client.meta.events,
|
||||
batch_action_model=batch_actions[method],
|
||||
collection_model=collection,
|
||||
service_model=self._resource.meta.client.meta.service_model
|
||||
)
|
||||
else:
|
||||
document_collection_method(
|
||||
section=method_section,
|
||||
resource_name=self._resource_name,
|
||||
action_name=method,
|
||||
event_emitter=self._resource.meta.client.meta.events,
|
||||
collection_model=collection,
|
||||
service_model=self._resource.meta.client.meta.service_model
|
||||
)
|
||||
|
||||
|
||||
def document_collection_object(section, collection_model,
|
||||
include_signature=True):
|
||||
"""Documents a collection resource object
|
||||
|
||||
:param section: The section to write to
|
||||
|
||||
:param collection_model: The model of the collection
|
||||
|
||||
:param include_signature: Whether or not to include the signature.
|
||||
It is useful for generating docstrings.
|
||||
"""
|
||||
if include_signature:
|
||||
section.style.start_sphinx_py_attr(collection_model.name)
|
||||
section.include_doc_string(
|
||||
'A collection of %s resources' % collection_model.resource.type)
|
||||
|
||||
|
||||
def document_batch_action(section, resource_name, event_emitter,
|
||||
batch_action_model, service_model, collection_model,
|
||||
include_signature=True):
|
||||
"""Documents a collection's batch action
|
||||
|
||||
:param section: The section to write to
|
||||
|
||||
:param resource_name: The name of the resource
|
||||
|
||||
:param action_name: The name of collection action. Currently only
|
||||
can be all, filter, limit, or page_size
|
||||
|
||||
:param event_emitter: The event emitter to use to emit events
|
||||
|
||||
:param batch_action_model: The model of the batch action
|
||||
|
||||
:param collection_model: The model of the collection
|
||||
|
||||
:param service_model: The model of the service
|
||||
|
||||
:param include_signature: Whether or not to include the signature.
|
||||
It is useful for generating docstrings.
|
||||
"""
|
||||
operation_model = service_model.operation_model(
|
||||
batch_action_model.request.operation)
|
||||
ignore_params = get_resource_ignore_params(
|
||||
batch_action_model.request.params)
|
||||
|
||||
example_return_value = 'response'
|
||||
if batch_action_model.resource:
|
||||
example_return_value = xform_name(batch_action_model.resource.type)
|
||||
|
||||
example_resource_name = xform_name(resource_name)
|
||||
if service_model.service_name == resource_name:
|
||||
example_resource_name = resource_name
|
||||
example_prefix = '%s = %s.%s.%s' % (
|
||||
example_return_value, example_resource_name,
|
||||
collection_model.name, batch_action_model.name
|
||||
)
|
||||
document_model_driven_resource_method(
|
||||
section=section, method_name=batch_action_model.name,
|
||||
operation_model=operation_model,
|
||||
event_emitter=event_emitter,
|
||||
method_description=operation_model.documentation,
|
||||
example_prefix=example_prefix,
|
||||
exclude_input=ignore_params,
|
||||
resource_action_model=batch_action_model,
|
||||
include_signature=include_signature
|
||||
)
|
||||
|
||||
|
||||
def document_collection_method(section, resource_name, action_name,
|
||||
event_emitter, collection_model, service_model,
|
||||
include_signature=True):
|
||||
"""Documents a collection method
|
||||
|
||||
:param section: The section to write to
|
||||
|
||||
:param resource_name: The name of the resource
|
||||
|
||||
:param action_name: The name of collection action. Currently only
|
||||
can be all, filter, limit, or page_size
|
||||
|
||||
:param event_emitter: The event emitter to use to emit events
|
||||
|
||||
:param collection_model: The model of the collection
|
||||
|
||||
:param service_model: The model of the service
|
||||
|
||||
:param include_signature: Whether or not to include the signature.
|
||||
It is useful for generating docstrings.
|
||||
"""
|
||||
operation_model = service_model.operation_model(
|
||||
collection_model.request.operation)
|
||||
|
||||
underlying_operation_members = []
|
||||
if operation_model.input_shape:
|
||||
underlying_operation_members = operation_model.input_shape.members
|
||||
|
||||
example_resource_name = xform_name(resource_name)
|
||||
if service_model.service_name == resource_name:
|
||||
example_resource_name = resource_name
|
||||
|
||||
custom_action_info_dict = {
|
||||
'all': {
|
||||
'method_description': (
|
||||
'Creates an iterable of all %s resources '
|
||||
'in the collection.' % collection_model.resource.type),
|
||||
'example_prefix': '%s_iterator = %s.%s.all' % (
|
||||
xform_name(collection_model.resource.type),
|
||||
example_resource_name, collection_model.name),
|
||||
'exclude_input': underlying_operation_members
|
||||
},
|
||||
'filter': {
|
||||
'method_description': (
|
||||
'Creates an iterable of all %s resources '
|
||||
'in the collection filtered by kwargs passed to '
|
||||
'method.' % collection_model.resource.type),
|
||||
'example_prefix': '%s_iterator = %s.%s.filter' % (
|
||||
xform_name(collection_model.resource.type),
|
||||
example_resource_name, collection_model.name),
|
||||
'exclude_input': get_resource_ignore_params(
|
||||
collection_model.request.params)
|
||||
},
|
||||
'limit': {
|
||||
'method_description': (
|
||||
'Creates an iterable up to a specified amount of '
|
||||
'%s resources in the collection.' %
|
||||
collection_model.resource.type),
|
||||
'example_prefix': '%s_iterator = %s.%s.limit' % (
|
||||
xform_name(collection_model.resource.type),
|
||||
example_resource_name, collection_model.name),
|
||||
'include_input': [
|
||||
DocumentedShape(
|
||||
name='count', type_name='integer',
|
||||
documentation=(
|
||||
'The limit to the number of resources '
|
||||
'in the iterable.'))],
|
||||
'exclude_input': underlying_operation_members
|
||||
},
|
||||
'page_size': {
|
||||
'method_description': (
|
||||
'Creates an iterable of all %s resources '
|
||||
'in the collection, but limits the number of '
|
||||
'items returned by each service call by the specified '
|
||||
'amount.' % collection_model.resource.type),
|
||||
'example_prefix': '%s_iterator = %s.%s.page_size' % (
|
||||
xform_name(collection_model.resource.type),
|
||||
example_resource_name, collection_model.name),
|
||||
'include_input': [
|
||||
DocumentedShape(
|
||||
name='count', type_name='integer',
|
||||
documentation=(
|
||||
'The number of items returned by each '
|
||||
'service call'))],
|
||||
'exclude_input': underlying_operation_members
|
||||
}
|
||||
}
|
||||
if action_name in custom_action_info_dict:
|
||||
action_info = custom_action_info_dict[action_name]
|
||||
document_model_driven_resource_method(
|
||||
section=section, method_name=action_name,
|
||||
operation_model=operation_model,
|
||||
event_emitter=event_emitter,
|
||||
resource_action_model=collection_model,
|
||||
include_signature=include_signature,
|
||||
**action_info
|
||||
)
|
||||
@@ -0,0 +1,74 @@
|
||||
# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
||||
# may not use this file except in compliance with the License. A copy of
|
||||
# the License is located at
|
||||
#
|
||||
# http://aws.amazon.com/apache2.0/
|
||||
#
|
||||
# or in the "license" file accompanying this file. This file is
|
||||
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
||||
# ANY KIND, either express or implied. See the License for the specific
|
||||
# language governing permissions and limitations under the License.
|
||||
from botocore.docs.docstring import LazyLoadedDocstring
|
||||
|
||||
from boto3.docs.action import document_action
|
||||
from boto3.docs.action import document_load_reload_action
|
||||
from boto3.docs.subresource import document_sub_resource
|
||||
from boto3.docs.attr import document_attribute
|
||||
from boto3.docs.attr import document_identifier
|
||||
from boto3.docs.attr import document_reference
|
||||
from boto3.docs.collection import document_collection_object
|
||||
from boto3.docs.collection import document_collection_method
|
||||
from boto3.docs.collection import document_batch_action
|
||||
from boto3.docs.waiter import document_resource_waiter
|
||||
|
||||
|
||||
class ActionDocstring(LazyLoadedDocstring):
|
||||
def _write_docstring(self, *args, **kwargs):
|
||||
document_action(*args, **kwargs)
|
||||
|
||||
|
||||
class LoadReloadDocstring(LazyLoadedDocstring):
|
||||
def _write_docstring(self, *args, **kwargs):
|
||||
document_load_reload_action(*args, **kwargs)
|
||||
|
||||
|
||||
class SubResourceDocstring(LazyLoadedDocstring):
|
||||
def _write_docstring(self, *args, **kwargs):
|
||||
document_sub_resource(*args, **kwargs)
|
||||
|
||||
|
||||
class AttributeDocstring(LazyLoadedDocstring):
|
||||
def _write_docstring(self, *args, **kwargs):
|
||||
document_attribute(*args, **kwargs)
|
||||
|
||||
|
||||
class IdentifierDocstring(LazyLoadedDocstring):
|
||||
def _write_docstring(self, *args, **kwargs):
|
||||
document_identifier(*args, **kwargs)
|
||||
|
||||
|
||||
class ReferenceDocstring(LazyLoadedDocstring):
|
||||
def _write_docstring(self, *args, **kwargs):
|
||||
document_reference(*args, **kwargs)
|
||||
|
||||
|
||||
class CollectionDocstring(LazyLoadedDocstring):
|
||||
def _write_docstring(self, *args, **kwargs):
|
||||
document_collection_object(*args, **kwargs)
|
||||
|
||||
|
||||
class CollectionMethodDocstring(LazyLoadedDocstring):
|
||||
def _write_docstring(self, *args, **kwargs):
|
||||
document_collection_method(*args, **kwargs)
|
||||
|
||||
|
||||
class BatchActionDocstring(LazyLoadedDocstring):
|
||||
def _write_docstring(self, *args, **kwargs):
|
||||
document_batch_action(*args, **kwargs)
|
||||
|
||||
|
||||
class ResourceWaiterDocstring(LazyLoadedDocstring):
|
||||
def _write_docstring(self, *args, **kwargs):
|
||||
document_resource_waiter(*args, **kwargs)
|
||||
@@ -0,0 +1,71 @@
|
||||
# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
||||
# may not use this file except in compliance with the License. A copy of
|
||||
# the License is located at
|
||||
#
|
||||
# http://aws.amazon.com/apache2.0/
|
||||
#
|
||||
# or in the "license" file accompanying this file. This file is
|
||||
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
||||
# ANY KIND, either express or implied. See the License for the specific
|
||||
# language governing permissions and limitations under the License.
|
||||
from botocore.docs.method import document_model_driven_method
|
||||
|
||||
|
||||
def document_model_driven_resource_method(
|
||||
section, method_name, operation_model, event_emitter,
|
||||
method_description=None, example_prefix=None, include_input=None,
|
||||
include_output=None, exclude_input=None, exclude_output=None,
|
||||
document_output=True, resource_action_model=None,
|
||||
include_signature=True):
|
||||
|
||||
document_model_driven_method(
|
||||
section=section, method_name=method_name,
|
||||
operation_model=operation_model,
|
||||
event_emitter=event_emitter,
|
||||
method_description=method_description,
|
||||
example_prefix=example_prefix,
|
||||
include_input=include_input,
|
||||
include_output=include_output,
|
||||
exclude_input=exclude_input,
|
||||
exclude_output=exclude_output,
|
||||
document_output=document_output,
|
||||
include_signature=include_signature
|
||||
)
|
||||
|
||||
# If this action returns a resource modify the return example to
|
||||
# appropriately reflect that.
|
||||
if resource_action_model.resource:
|
||||
if 'return' in section.available_sections:
|
||||
section.delete_section('return')
|
||||
resource_type = resource_action_model.resource.type
|
||||
|
||||
new_return_section = section.add_new_section('return')
|
||||
return_resource_type = '%s.%s' % (
|
||||
operation_model.service_model.service_name,
|
||||
resource_type)
|
||||
|
||||
return_type = ':py:class:`%s`' % return_resource_type
|
||||
return_description = '%s resource' % (resource_type)
|
||||
|
||||
if _method_returns_resource_list(resource_action_model.resource):
|
||||
return_type = 'list(%s)' % return_type
|
||||
return_description = 'A list of %s resources' % (
|
||||
resource_type)
|
||||
|
||||
new_return_section.style.new_line()
|
||||
new_return_section.write(
|
||||
':rtype: %s' % return_type)
|
||||
new_return_section.style.new_line()
|
||||
new_return_section.write(
|
||||
':returns: %s' % return_description)
|
||||
new_return_section.style.new_line()
|
||||
|
||||
|
||||
def _method_returns_resource_list(resource):
|
||||
for identifier in resource.identifiers:
|
||||
if identifier.path and '[]' in identifier.path:
|
||||
return True
|
||||
|
||||
return False
|
||||
@@ -0,0 +1,259 @@
|
||||
# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
||||
# may not use this file except in compliance with the License. A copy of
|
||||
# the License is located at
|
||||
#
|
||||
# http://aws.amazon.com/apache2.0/
|
||||
#
|
||||
# or in the "license" file accompanying this file. This file is
|
||||
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
||||
# ANY KIND, either express or implied. See the License for the specific
|
||||
# language governing permissions and limitations under the License.
|
||||
from botocore import xform_name
|
||||
from botocore.docs.utils import get_official_service_name
|
||||
|
||||
from boto3.docs.base import BaseDocumenter
|
||||
from boto3.docs.action import ActionDocumenter
|
||||
from boto3.docs.waiter import WaiterResourceDocumenter
|
||||
from boto3.docs.collection import CollectionDocumenter
|
||||
from boto3.docs.subresource import SubResourceDocumenter
|
||||
from boto3.docs.attr import document_attribute
|
||||
from boto3.docs.attr import document_identifier
|
||||
from boto3.docs.attr import document_reference
|
||||
from boto3.docs.utils import get_identifier_args_for_signature
|
||||
from boto3.docs.utils import get_identifier_values_for_example
|
||||
from boto3.docs.utils import get_identifier_description
|
||||
from boto3.docs.utils import add_resource_type_overview
|
||||
|
||||
|
||||
class ResourceDocumenter(BaseDocumenter):
|
||||
def __init__(self, resource, botocore_session):
|
||||
super(ResourceDocumenter, self).__init__(resource)
|
||||
self._botocore_session = botocore_session
|
||||
|
||||
def document_resource(self, section):
|
||||
self._add_title(section)
|
||||
self._add_intro(section)
|
||||
overview_section = section.add_new_section('member-overview')
|
||||
self._add_identifiers(section)
|
||||
self._add_attributes(section)
|
||||
self._add_references(section)
|
||||
self._add_actions(section)
|
||||
self._add_sub_resources(section)
|
||||
self._add_collections(section)
|
||||
self._add_waiters(section)
|
||||
self._add_overview_of_members(overview_section)
|
||||
|
||||
def _add_title(self, section):
|
||||
section.style.h2(self._resource_name)
|
||||
|
||||
def _add_intro(self, section):
|
||||
identifier_names = []
|
||||
if self._resource_model.identifiers:
|
||||
for identifier in self._resource_model.identifiers:
|
||||
identifier_names.append(identifier.name)
|
||||
|
||||
# Write out the class signature.
|
||||
class_args = get_identifier_args_for_signature(identifier_names)
|
||||
section.style.start_sphinx_py_class(
|
||||
class_name='%s(%s)' % (self.class_name, class_args))
|
||||
|
||||
# Add as short description about the resource
|
||||
description_section = section.add_new_section('description')
|
||||
self._add_description(description_section)
|
||||
|
||||
# Add an example of how to instantiate the resource
|
||||
example_section = section.add_new_section('example')
|
||||
self._add_example(example_section, identifier_names)
|
||||
|
||||
# Add the description for the parameters to instantiate the
|
||||
# resource.
|
||||
param_section = section.add_new_section('params')
|
||||
self._add_params_description(param_section, identifier_names)
|
||||
|
||||
def _add_description(self, section):
|
||||
official_service_name = get_official_service_name(
|
||||
self._service_model)
|
||||
section.write(
|
||||
'A resource representing an %s %s' % (
|
||||
official_service_name, self._resource_name))
|
||||
|
||||
def _add_example(self, section, identifier_names):
|
||||
section.style.start_codeblock()
|
||||
section.style.new_line()
|
||||
section.write('import boto3')
|
||||
section.style.new_line()
|
||||
section.style.new_line()
|
||||
section.write(
|
||||
'%s = boto3.resource(\'%s\')' % (
|
||||
self._service_name, self._service_name)
|
||||
)
|
||||
section.style.new_line()
|
||||
example_values = get_identifier_values_for_example(identifier_names)
|
||||
section.write(
|
||||
'%s = %s.%s(%s)' % (
|
||||
xform_name(self._resource_name), self._service_name,
|
||||
self._resource_name, example_values))
|
||||
section.style.end_codeblock()
|
||||
|
||||
def _add_params_description(self, section, identifier_names):
|
||||
for identifier_name in identifier_names:
|
||||
description = get_identifier_description(
|
||||
self._resource_name, identifier_name)
|
||||
section.write(':type %s: string' % identifier_name)
|
||||
section.style.new_line()
|
||||
section.write(':param %s: %s' % (
|
||||
identifier_name, description))
|
||||
section.style.new_line()
|
||||
|
||||
def _add_overview_of_members(self, section):
|
||||
for resource_member_type in self.member_map:
|
||||
section.style.new_line()
|
||||
section.write('These are the resource\'s available %s:' % (
|
||||
resource_member_type))
|
||||
section.style.new_line()
|
||||
for member in self.member_map[resource_member_type]:
|
||||
if resource_member_type in ['identifiers', 'attributes',
|
||||
'references', 'collections']:
|
||||
section.style.li(':py:attr:`%s`' % member)
|
||||
else:
|
||||
section.style.li(':py:meth:`%s()`' % member)
|
||||
|
||||
def _add_identifiers(self, section):
|
||||
identifiers = self._resource.meta.resource_model.identifiers
|
||||
section = section.add_new_section('identifiers')
|
||||
member_list = []
|
||||
if identifiers:
|
||||
self.member_map['identifiers'] = member_list
|
||||
add_resource_type_overview(
|
||||
section=section,
|
||||
resource_type='Identifiers',
|
||||
description=(
|
||||
'Identifiers are properties of a resource that are '
|
||||
'set upon instantation of the resource.'),
|
||||
intro_link='identifiers_attributes_intro')
|
||||
for identifier in identifiers:
|
||||
identifier_section = section.add_new_section(identifier.name)
|
||||
member_list.append(identifier.name)
|
||||
document_identifier(
|
||||
section=identifier_section,
|
||||
resource_name=self._resource_name,
|
||||
identifier_model=identifier
|
||||
)
|
||||
|
||||
def _add_attributes(self, section):
|
||||
service_model = self._resource.meta.client.meta.service_model
|
||||
attributes = {}
|
||||
if self._resource.meta.resource_model.shape:
|
||||
shape = service_model.shape_for(
|
||||
self._resource.meta.resource_model.shape)
|
||||
attributes = self._resource.meta.resource_model.get_attributes(
|
||||
shape)
|
||||
section = section.add_new_section('attributes')
|
||||
attribute_list = []
|
||||
if attributes:
|
||||
add_resource_type_overview(
|
||||
section=section,
|
||||
resource_type='Attributes',
|
||||
description=(
|
||||
'Attributes provide access'
|
||||
' to the properties of a resource. Attributes are lazy-'
|
||||
'loaded the first time one is accessed via the'
|
||||
' :py:meth:`load` method.'),
|
||||
intro_link='identifiers_attributes_intro')
|
||||
self.member_map['attributes'] = attribute_list
|
||||
for attr_name in sorted(attributes):
|
||||
_, attr_shape = attributes[attr_name]
|
||||
attribute_section = section.add_new_section(attr_name)
|
||||
attribute_list.append(attr_name)
|
||||
document_attribute(
|
||||
section=attribute_section,
|
||||
service_name=self._service_name,
|
||||
resource_name=self._resource_name,
|
||||
attr_name=attr_name,
|
||||
event_emitter=self._resource.meta.client.meta.events,
|
||||
attr_model=attr_shape
|
||||
)
|
||||
|
||||
def _add_references(self, section):
|
||||
section = section.add_new_section('references')
|
||||
references = self._resource.meta.resource_model.references
|
||||
reference_list = []
|
||||
if references:
|
||||
add_resource_type_overview(
|
||||
section=section,
|
||||
resource_type='References',
|
||||
description=(
|
||||
'References are related resource instances that have '
|
||||
'a belongs-to relationship.'),
|
||||
intro_link='references_intro')
|
||||
self.member_map['references'] = reference_list
|
||||
for reference in references:
|
||||
reference_section = section.add_new_section(reference.name)
|
||||
reference_list.append(reference.name)
|
||||
document_reference(
|
||||
section=reference_section,
|
||||
reference_model=reference
|
||||
)
|
||||
|
||||
def _add_actions(self, section):
|
||||
section = section.add_new_section('actions')
|
||||
actions = self._resource.meta.resource_model.actions
|
||||
if actions:
|
||||
documenter = ActionDocumenter(self._resource)
|
||||
documenter.member_map = self.member_map
|
||||
documenter.document_actions(section)
|
||||
|
||||
def _add_sub_resources(self, section):
|
||||
section = section.add_new_section('sub-resources')
|
||||
sub_resources = self._resource.meta.resource_model.subresources
|
||||
if sub_resources:
|
||||
documenter = SubResourceDocumenter(self._resource)
|
||||
documenter.member_map = self.member_map
|
||||
documenter.document_sub_resources(section)
|
||||
|
||||
def _add_collections(self, section):
|
||||
section = section.add_new_section('collections')
|
||||
collections = self._resource.meta.resource_model.collections
|
||||
if collections:
|
||||
documenter = CollectionDocumenter(self._resource)
|
||||
documenter.member_map = self.member_map
|
||||
documenter.document_collections(section)
|
||||
|
||||
def _add_waiters(self, section):
|
||||
section = section.add_new_section('waiters')
|
||||
waiters = self._resource.meta.resource_model.waiters
|
||||
if waiters:
|
||||
service_waiter_model = self._botocore_session.get_waiter_model(
|
||||
self._service_name)
|
||||
documenter = WaiterResourceDocumenter(
|
||||
self._resource, service_waiter_model)
|
||||
documenter.member_map = self.member_map
|
||||
documenter.document_resource_waiters(section)
|
||||
|
||||
|
||||
class ServiceResourceDocumenter(ResourceDocumenter):
|
||||
@property
|
||||
def class_name(self):
|
||||
return '%s.ServiceResource' % self._service_docs_name
|
||||
|
||||
def _add_title(self, section):
|
||||
section.style.h2('Service Resource')
|
||||
|
||||
def _add_description(self, section):
|
||||
official_service_name = get_official_service_name(
|
||||
self._service_model)
|
||||
section.write(
|
||||
'A resource representing %s' % official_service_name)
|
||||
|
||||
def _add_example(self, section, identifier_names):
|
||||
section.style.start_codeblock()
|
||||
section.style.new_line()
|
||||
section.write('import boto3')
|
||||
section.style.new_line()
|
||||
section.style.new_line()
|
||||
section.write(
|
||||
'%s = boto3.resource(\'%s\')' % (
|
||||
self._service_name, self._service_name))
|
||||
section.style.end_codeblock()
|
||||
@@ -0,0 +1,131 @@
|
||||
# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
||||
# may not use this file except in compliance with the License. A copy of
|
||||
# the License is located at
|
||||
#
|
||||
# http://aws.amazon.com/apache2.0/
|
||||
#
|
||||
# or in the "license" file accompanying this file. This file is
|
||||
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
||||
# ANY KIND, either express or implied. See the License for the specific
|
||||
# language governing permissions and limitations under the License.
|
||||
import os
|
||||
|
||||
import boto3
|
||||
from botocore.exceptions import DataNotFoundError
|
||||
from botocore.docs.service import ServiceDocumenter as BaseServiceDocumenter
|
||||
from botocore.docs.bcdoc.restdoc import DocumentStructure
|
||||
|
||||
from boto3.utils import ServiceContext
|
||||
from boto3.docs.client import Boto3ClientDocumenter
|
||||
from boto3.docs.resource import ResourceDocumenter
|
||||
from boto3.docs.resource import ServiceResourceDocumenter
|
||||
|
||||
|
||||
class ServiceDocumenter(BaseServiceDocumenter):
|
||||
# The path used to find examples
|
||||
EXAMPLE_PATH = os.path.join(os.path.dirname(boto3.__file__), 'examples')
|
||||
|
||||
def __init__(self, service_name, session):
|
||||
super(ServiceDocumenter, self).__init__(
|
||||
service_name=service_name,
|
||||
# I know that this is an internal attribute, but the botocore session
|
||||
# is needed to load the paginator and waiter models.
|
||||
session=session._session,
|
||||
)
|
||||
self._boto3_session = session
|
||||
self._client = self._boto3_session.client(service_name)
|
||||
self._service_resource = None
|
||||
if self._service_name in self._boto3_session.get_available_resources():
|
||||
self._service_resource = self._boto3_session.resource(service_name)
|
||||
self.sections = [
|
||||
'title',
|
||||
'table-of-contents',
|
||||
'client',
|
||||
'paginators',
|
||||
'waiters',
|
||||
'service-resource',
|
||||
'resources',
|
||||
'examples'
|
||||
]
|
||||
|
||||
def document_service(self):
|
||||
"""Documents an entire service.
|
||||
|
||||
:returns: The reStructured text of the documented service.
|
||||
"""
|
||||
doc_structure = DocumentStructure(
|
||||
self._service_name, section_names=self.sections,
|
||||
target='html')
|
||||
self.title(doc_structure.get_section('title'))
|
||||
self.table_of_contents(doc_structure.get_section('table-of-contents'))
|
||||
|
||||
self.client_api(doc_structure.get_section('client'))
|
||||
self.paginator_api(doc_structure.get_section('paginators'))
|
||||
self.waiter_api(doc_structure.get_section('waiters'))
|
||||
if self._service_resource:
|
||||
self._document_service_resource(
|
||||
doc_structure.get_section('service-resource'))
|
||||
self._document_resources(doc_structure.get_section('resources'))
|
||||
self._document_examples(doc_structure.get_section('examples'))
|
||||
return doc_structure.flush_structure()
|
||||
|
||||
def client_api(self, section):
|
||||
examples = None
|
||||
try:
|
||||
examples = self.get_examples(self._service_name)
|
||||
except DataNotFoundError:
|
||||
pass
|
||||
|
||||
Boto3ClientDocumenter(self._client, examples).document_client(section)
|
||||
|
||||
def _document_service_resource(self, section):
|
||||
ServiceResourceDocumenter(
|
||||
self._service_resource, self._session).document_resource(
|
||||
section)
|
||||
|
||||
def _document_resources(self, section):
|
||||
temp_identifier_value = 'foo'
|
||||
loader = self._session.get_component('data_loader')
|
||||
json_resource_model = loader.load_service_model(
|
||||
self._service_name, 'resources-1')
|
||||
service_model = self._service_resource.meta.client.meta.service_model
|
||||
for resource_name in json_resource_model['resources']:
|
||||
resource_model = json_resource_model['resources'][resource_name]
|
||||
resource_cls = self._boto3_session.resource_factory.\
|
||||
load_from_definition(
|
||||
resource_name=resource_name,
|
||||
single_resource_json_definition=resource_model,
|
||||
service_context=ServiceContext(
|
||||
service_name=self._service_name,
|
||||
resource_json_definitions=json_resource_model[
|
||||
'resources'],
|
||||
service_model=service_model,
|
||||
service_waiter_model=None
|
||||
)
|
||||
)
|
||||
identifiers = resource_cls.meta.resource_model.identifiers
|
||||
args = []
|
||||
for _ in identifiers:
|
||||
args.append(temp_identifier_value)
|
||||
resource = resource_cls(*args, client=self._client)
|
||||
ResourceDocumenter(
|
||||
resource, self._session).document_resource(
|
||||
section.add_new_section(resource.meta.resource_model.name))
|
||||
|
||||
def _get_example_file(self):
|
||||
return os.path.realpath(
|
||||
os.path.join(self.EXAMPLE_PATH,
|
||||
self._service_name + '.rst'))
|
||||
|
||||
def _document_examples(self, section):
|
||||
examples_file = self._get_example_file()
|
||||
if os.path.isfile(examples_file):
|
||||
section.style.h2('Examples')
|
||||
section.style.new_line()
|
||||
section.write(".. contents::\n :local:\n :depth: 1")
|
||||
section.style.new_line()
|
||||
section.style.new_line()
|
||||
with open(examples_file, 'r') as f:
|
||||
section.write(f.read())
|
||||
@@ -0,0 +1,112 @@
|
||||
# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
||||
# may not use this file except in compliance with the License. A copy of
|
||||
# the License is located at
|
||||
#
|
||||
# http://aws.amazon.com/apache2.0/
|
||||
#
|
||||
# or in the "license" file accompanying this file. This file is
|
||||
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
||||
# ANY KIND, either express or implied. See the License for the specific
|
||||
# language governing permissions and limitations under the License.
|
||||
from botocore import xform_name
|
||||
from botocore.utils import get_service_module_name
|
||||
|
||||
from boto3.docs.base import BaseDocumenter
|
||||
from boto3.docs.utils import get_identifier_args_for_signature
|
||||
from boto3.docs.utils import get_identifier_values_for_example
|
||||
from boto3.docs.utils import get_identifier_description
|
||||
from boto3.docs.utils import add_resource_type_overview
|
||||
|
||||
|
||||
class SubResourceDocumenter(BaseDocumenter):
|
||||
def document_sub_resources(self, section):
|
||||
add_resource_type_overview(
|
||||
section=section,
|
||||
resource_type='Sub-resources',
|
||||
description=(
|
||||
'Sub-resources are methods that create a new instance of a'
|
||||
' child resource. This resource\'s identifiers get passed'
|
||||
' along to the child.'),
|
||||
intro_link='subresources_intro')
|
||||
sub_resources = sorted(
|
||||
self._resource.meta.resource_model.subresources,
|
||||
key=lambda sub_resource: sub_resource.name
|
||||
)
|
||||
sub_resources_list = []
|
||||
self.member_map['sub-resources'] = sub_resources_list
|
||||
for sub_resource in sub_resources:
|
||||
sub_resource_section = section.add_new_section(sub_resource.name)
|
||||
sub_resources_list.append(sub_resource.name)
|
||||
document_sub_resource(
|
||||
section=sub_resource_section,
|
||||
resource_name=self._resource_name,
|
||||
sub_resource_model=sub_resource,
|
||||
service_model=self._service_model
|
||||
)
|
||||
|
||||
|
||||
def document_sub_resource(section, resource_name, sub_resource_model,
|
||||
service_model, include_signature=True):
|
||||
"""Documents a resource action
|
||||
|
||||
:param section: The section to write to
|
||||
|
||||
:param resource_name: The name of the resource
|
||||
|
||||
:param sub_resource_model: The model of the subresource
|
||||
|
||||
:param service_model: The model of the service
|
||||
|
||||
:param include_signature: Whether or not to include the signature.
|
||||
It is useful for generating docstrings.
|
||||
"""
|
||||
identifiers_needed = []
|
||||
for identifier in sub_resource_model.resource.identifiers:
|
||||
if identifier.source == 'input':
|
||||
identifiers_needed.append(xform_name(identifier.target))
|
||||
|
||||
if include_signature:
|
||||
signature_args = get_identifier_args_for_signature(identifiers_needed)
|
||||
section.style.start_sphinx_py_method(
|
||||
sub_resource_model.name, signature_args)
|
||||
|
||||
method_intro_section = section.add_new_section(
|
||||
'method-intro')
|
||||
description = 'Creates a %s resource.' % sub_resource_model.resource.type
|
||||
method_intro_section.include_doc_string(description)
|
||||
example_section = section.add_new_section('example')
|
||||
example_values = get_identifier_values_for_example(identifiers_needed)
|
||||
example_resource_name = xform_name(resource_name)
|
||||
if service_model.service_name == resource_name:
|
||||
example_resource_name = resource_name
|
||||
example = '%s = %s.%s(%s)' % (
|
||||
xform_name(sub_resource_model.resource.type),
|
||||
example_resource_name,
|
||||
sub_resource_model.name, example_values
|
||||
)
|
||||
example_section.style.start_codeblock()
|
||||
example_section.write(example)
|
||||
example_section.style.end_codeblock()
|
||||
|
||||
param_section = section.add_new_section('params')
|
||||
for identifier in identifiers_needed:
|
||||
description = get_identifier_description(
|
||||
sub_resource_model.name, identifier)
|
||||
param_section.write(':type %s: string' % identifier)
|
||||
param_section.style.new_line()
|
||||
param_section.write(':param %s: %s' % (
|
||||
identifier, description))
|
||||
param_section.style.new_line()
|
||||
|
||||
return_section = section.add_new_section('return')
|
||||
return_section.style.new_line()
|
||||
return_section.write(
|
||||
':rtype: :py:class:`%s.%s`' % (
|
||||
get_service_module_name(service_model),
|
||||
sub_resource_model.resource.type))
|
||||
return_section.style.new_line()
|
||||
return_section.write(
|
||||
':returns: A %s resource' % sub_resource_model.resource.type)
|
||||
return_section.style.new_line()
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user