Metadata-Version: 1.1
Name: aliyun-fc2
Version: 2.0.1
Summary: Aliyun FunctionCompute SDK2
Home-page: https://www.aliyun.com/product/fc
Author: UNKNOWN
Author-email: UNKNOWN
License: UNKNOWN
Description: Aliyun FunctionCompute Python SDK
        =================================
        
        .. image:: https://badge.fury.io/py/aliyun-fc.svg
            :target: https://badge.fury.io/py/aliyun-fc
        .. image:: https://travis-ci.org/aliyun/fc-python-sdk.svg?branch=master
            :target: https://travis-ci.org/aliyun/fc-python-sdk
        .. image:: https://coveralls.io/repos/github/aliyun/fc-python-sdk/badge.svg?branch=master
            :target: https://coveralls.io/github/aliyun/fc-python-sdk?branch=master
        
        Overview
        --------
        
        The SDK of this version is dependent on the third-party HTTP library `requests <https://github.com/kennethreitz/requests>`_.
        
        
        Running environment
        -------------------
        
        Python 2.7, Python 3.6
        
        Installation
        -------------------
        
        Install the official release version through PIP (taking Linux as an example):
        
        .. code-block:: bash
        
            $ pip install aliyun-fc
        
        You can also install the unzipped installer package directly:
        
        .. code-block:: bash
        
            $ sudo python setup.py install
        
        Notice
        -------------------
        We suggest using fc2, which corresponds to the fc2-master branch，The main difference between fc and fc2 is:
        
        1, The invoke fuction user can add custom headers
        
        .. code-block:: python
        
            def invoke_function(self, serviceName, functionName, payload=None, 
                    customHeaders = {'x-fc-invocation-type': 'Sync', 'x-fc-log-type' : 'None'}):                                           
                """
                Invoke the function synchronously.
                :param serviceName: (required, string) the name of the service.
                :param functionName: (required, string) the name of the function.
                :param payload: (optional, bytes or seekable file-like object): the input of the function.
                Invoke the function synchronously or asynchronously.
                :param logType: (optional, string) 'None' or 'Tail'. When invoke a function synchronously,
                you can set the log type to 'Tail' to get the last 4KB base64-encoded function log.
                :param traceId: (optional, string) a uuid to do the request tracing.
                :param customHeaders: (required, dict) user-defined request header. 
                                    'x-fc-invocation-type' : require, 'Sync'/'Async' ,only two choice
                                    'x-fc-trace-id' : require, default is 'None'
                                    'x-fc-trace-id' : option
                                    # other can add user define header
                :return: function output InvokeFunctionResponse object.
        
                """
                return self._invoke_function(
                    serviceName, functionName, payload=payload, customHeaders=customHeaders)
        
        
        2, The reponse returned by the user is the following object, where data represents the "reponse" corresponding to fc.
        
        .. code-block:: python
        
            class InvokeFunctionResponse(object):
                def __init__(self, headers, data):
                    self._headers = headers
                    self._data = data
        
                @property
                def headers(self):
                    return self._headers
        
                # user function return value
                @property
                def data(self):
                    return self._data
        
        Install the official fc2 release version through PIP (taking Linux as an example):
        
        .. code-block:: bash
        
            $ pip install aliyun-fc2
        
        Getting started
        -------------------
        
        .. code-block:: python
        
            # -*- coding: utf-8 -*-
        
            import fc
        
            # To know the endpoint and access key id/secret info, please refer to:
            # https://help.aliyun.com/document_detail/52984.html
            client = fc.Client(
                endpoint='<Your Endpoint>',
                accessKeyID='<Your AccessKeyID>',
                accessKeySecret='<Your AccessKeySecret>')
        
            # Create service.
            client.create_service('service_name')
        
            # Create function.
            # the current directory has a main.zip file (main.py which has a function of myhandler)
            client.create_function('service_name', 'function_name', 'main.my_handler', codeZipFile = 'main.zip')
        
            # Invoke function synchronously.
            client.invoke_function('service_name', 'function_name')
        
            # Invoke a function with a input parameter.
            client.invoke_function('service_name', 'function_name', payload=bytes('hello_world'))
        
            # Read a image and invoke a function with the file data as input parameter.
            src = open('src_image_file_path', 'rb') # Note: please open it as binary.
            r = client.invoke_function('service_name', 'function_name', payload=src)
            # save the result as the output image.
            dst = open('dst_image_file_path', 'wb')
            dst.write(r) # if fc2, dst.write(r.data)
            src.close()
            dst.close()
        
            # Invoke function asynchronously.
            client.async_invoke_function('service_name', 'function_name')
        
            # List services.
            client.list_services()
        
            # List functions with prefix and limit.
            client.list_functions('service_name', prefix='the_prefix', limit=10)
        
            # Delete service.
            client.delete_service('service_name')
        
            # Delete function.
            client.delete_function('service_name', 'function_name')
        
        
        Testing
        -------
        
        To run the tests, please set the access key id/secret, endpoint as environment variables.
        Take the Linux system for example:
        
        .. code-block:: bash
        
            $ export ENDPOINT=<endpoint>
            $ export ACCESS_KEY_ID=<AccessKeyId>
            $ export ACCESS_KEY_SECRET=<AccessKeySecret>
            $ export STS_TOKEN=<roleARN>
        
        Run the test in the following method:
        
        .. code-block:: bash
        
            $ nosetests                          # First install nose
        
        More resources
        --------------
        - `Aliyun FunctionCompute docs <https://help.aliyun.com/product/50980.html>`_
        
        Contacting us
        -------------
        - `Links <https://help.aliyun.com/document_detail/53087.html>`_
        
        License
        -------
        - `MIT <https://github.com/aliyun/fc-python-sdk/blob/master/LICENSE>`_
        
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.6
