Evernote SDK for Python

Overview

Evernote SDK for Python

Evernote API version 1.28

This SDK is intended for use with Python 2.X

For Evernote's beta Python 3 SDK see https://github.com/evernote/evernote-sdk-python3

Overview

This SDK contains wrapper code used to call the Evernote Cloud API from Python.

The SDK also contains a sample script. The code demonstrates the basic use of the SDK for single-user scripts. Real web applications must use OAuth to authenticate to the Evernote service.

Prerequisites

In order to use the code in this SDK, you need to obtain an API key from http://dev.evernote.com/documentation/cloud. You'll also find full API documentation on that page.

In order to run the sample code, you need a user account on the sandbox service where you will do your development. Sign up for an account at https://sandbox.evernote.com/Registration.action

In order to run the client client sample code, you need a developer token. Get one at https://sandbox.evernote.com/api/DeveloperToken.action

Getting Started - Client

The code in sample/client/EDAMTest.py demonstrates the basics of using the Evernote API, using developer tokens to simplify the authentication process while you're learning.

  1. Open sample/client/EDAMTest.py

  2. Scroll down and fill in your Evernote developer token.

  3. On the command line, run the following command to execute the script:

    $ export PYTHONPATH=../../lib; python EDAMTest.py

Getting Started - Django with OAuth

Web applications must use OAuth to authenticate to the Evernote service. The code in sample/django contains a simple web apps that demonstrate the OAuth authentication process. The application use the Django framework. You don't need to use Django for your application, but you'll need it to run the sample code.

  1. Install django, oauth2 and evernote library. You can also use requirements.txt for pip.

  2. Open the file oauth/views.py

  3. Fill in your Evernote API consumer key and secret.

  4. On the command line, run the following command to start the sample app:

    $ python manage.py runserver
  5. Open the sample app in your browser: http://localhost:8000

Getting Started - Pyramid with OAuth

If you want to use Evernote API with Pyramid, the code in sample/pyramid will be good start.

  1. Install the sample project using pip on your command line like this.

    $ pip install -e .
  2. Open the file development.ini

  3. Fill in your Evernote API consumer key and secret.

  4. On the command line, run the following command to start the sample app:

    $ pserve development.ini
  5. Open the sample app in your browser: http://localhost:6543

Usage

OAuth

client = EvernoteClient(
    consumer_key='YOUR CONSUMER KEY',
    consumer_secret='YOUR CONSUMER SECRET',
    sandbox=True # Default: True
)
request_token = client.get_request_token('YOUR CALLBACK URL')
client.get_authorize_url(request_token)
 => https://sandbox.evernote.com/OAuth.action?oauth_token=OAUTH_TOKEN

To obtain the access token

access_token = client.get_access_token(
    request_token['oauth_token'],
    request_token['oauth_token_secret'],
    request.GET.get('oauth_verifier', '')
)

Now you can make other API calls

client = EvernoteClient(token=access_token)
note_store = client.get_note_store()
notebooks = note_store.listNotebooks()

UserStore

Once you acquire token, you can use UserStore. For example, if you want to call UserStore.getUser:

client = EvernoteClient(token=access_token)
user_store = client.get_user_store()
user_store.getUser()

You can omit authenticationToken in the arguments of UserStore functions.

NoteStore

If you want to call NoteStore.listNotebooks:

note_store = client.get_note_store()
note_store.listNotebooks()

NoteStore for linked notebooks

If you want to get tags for linked notebooks:

linked_notebook = note_store.listLinkedNotebooks()[0]
shared_note_store = client.getSharedNoteStore(linked_notebook)
shared_notebook = shared_note_store.getSharedNotebookByAuth()
shared_note_store.listTagsByNotebook(shared_notebook.notebookGuid)

NoteStore for Business

If you want to get the list of notebooks in your business account:

business_note_store = client.get_business_note_store()
business_note_store.listNotebooks()

References

Known Issues

Regular expressions

In general, the "re" regex module doesn't handle some of our regular expressions in Limits, but re2 does.

Comments
  • Test fails in ubuntu 12.04

    Test fails in ubuntu 12.04

    When i run test by export PYTHONPATH=../lib; python EDAMTest.py i saw: Traceback (most recent call last): File "EDAMTest.py", line 46, in <module> UserStoreConstants.EDAM_VERSION_MINOR) File "/usr/local/lib/python2.7/dist-packages/evernote/edam/userstore/UserStore.py", line 224, in checkVersion self.send_checkVersion(clientName, edamVersionMajor, edamVersionMinor) File "/usr/local/lib/python2.7/dist-packages/evernote/edam/userstore/UserStore.py", line 235, in send_checkVersion self._oprot.trans.flush() File "/usr/local/lib/python2.7/dist-packages/thrift/transport/THttpClient.py", line 93, in _f result = f(*args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/thrift/transport/THttpClient.py", line 114, in flush self.__http.endheaders() File "/usr/lib/python2.7/httplib.py", line 954, in endheaders self._send_output(message_body) File "/usr/lib/python2.7/httplib.py", line 814, in _send_output self.send(msg) File "/usr/lib/python2.7/httplib.py", line 776, in send self.connect() File "/usr/lib/python2.7/httplib.py", line 1161, in connect self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file) File "/usr/lib/python2.7/ssl.py", line 381, in wrap_socket ciphers=ciphers) File "/usr/lib/python2.7/ssl.py", line 143, in __init__ self.do_handshake() File "/usr/lib/python2.7/ssl.py", line 305, in do_handshake self._sslobj.do_handshake() ssl.SSLError: [Errno 8] _ssl.c:504: EOF occurred in violation of protocol

    opened by nvbn 16
  • Conflicts with python thrift library

    Conflicts with python thrift library

    doing pip install evernote and pip install thrift can cause:

    File "/usr/local/lib/python2.7/site-packages/notehandler-0.6_dev-py2.7.egg/notehandler.py", line 315, in cmd_userinfo
    userStore = client.get_user_store()
    File "/usr/local/lib/python2.7/site-packages/evernote-1.25.0-py2.7.egg/evernote/api/client.py", line 60, in get_user_store
    store = Store(self.token, UserStore.Client, user_store_uri)
    File "/usr/local/lib/python2.7/site-packages/evernote-1.25.0-py2.7.egg/evernote/api/client.py", line 122, in init
    self._client = self._get_thrift_client(client_class, store_url)
    File "/usr/local/lib/python2.7/site-packages/evernote-1.25.0-py2.7.egg/evernote/api/client.py", line 146, in _get_thrift_client
    http_client.addHeaders({
    AttributeError: THttpClient instance has no attribute 'addHeaders'
    

    Can you guys work with the thrift library to fix this? Or unbundle the thrift library? Or pull it all the way internal so you don't collide namespacewise so this won't happen?

    opened by pjz 9
  • run example error

    run example error

    from evernote.api.client import EvernoteClient
    s="*******"
    developer_token = s
    
    
    client = EvernoteClient(token=developer_token)
    note_store = client.get_note_store()
    print note_store 
    # Make API calls
    notebooks = note_store.listNotebooks()
    for notebook in notebooks:
        print "Notebook: ", notebook.name
    

    error

    Traceback (most recent call last):
      File "tests_evernote.py", line 17, in <module>
        note_store = client.get_note_store()
      File "/Volumes/MACEXT/GitHub/evernote-sdk-python/lib/evernote/api/client.py", line 68, in get_note_store
        note_store_uri = user_store.getNoteStoreUrl()
      File "/Volumes/MACEXT/GitHub/evernote-sdk-python/lib/evernote/api/client.py", line 138, in delegate_method
        )(**dict(zip(arg_names, args)))
      File "/Volumes/MACEXT/GitHub/evernote-sdk-python/lib/evernote/edam/userstore/UserStore.py", line 1156, in getNoteStoreUrl
        return self.recv_getNoteStoreUrl()
      File "/Volumes/MACEXT/GitHub/evernote-sdk-python/lib/evernote/edam/userstore/UserStore.py", line 1181, in recv_getNoteStoreUrl
        raise result.systemException
    evernote.edam.error.ttypes.EDAMSystemException: EDAMSystemException(errorCode=8, rateLimitDuration=None, _message='authenticationToken')
    
    opened by yishenggudou 7
  • sample-code throws error

    sample-code throws error

    Using OS X 10.7, Python 2.7

    I have a valid sandbox account with a fresh developer token created for this account and copied at line 27 of

    "sample/EDAMTest.py"

    authToken = "abc123" # here I copied my real developer token of course
    

    Following the instructions of the sample code everything works fine until it comes to line 57:

    noteStoreUrl = userStore.getNoteStoreUrl(authToken)
    

    where executing the example code with or without

    Hlidskialf:sample Ulf$ export PYTHONPATH=../lib; python EDAMTest.py
    

    it first print this, so it obviously run's a little bit ;):

    Is my Evernote API version up to date?  True
    

    and than finally fails with this:

    Traceback (most recent call last):
      File "EDAMTest.py", line 57, in <module>
        noteStoreUrl = userStore.getNoteStoreUrl(authToken)
    AttributeError: 'Client' object has no attribute 'getNoteStoreUrl'
    

    In the file "lib/evernote/edam/userstore/UserStore.py" at line 600:

      def getNoteStoreUrl(self, authenticationToken):
        """
        Returns the URL that should be used to talk to the NoteStore for the
        account represented by the provided authenticationToken.
        This method isn't needed by most clients, who can retrieve the correct
        NoteStore URL from the AuthenticationResult returned from the authenticate
        or refreshAuthentication calls. This method is typically only needed
        to look up the correct URL for a long-lived session token (e.g. for an
        OAuth web service).
    
        Parameters:
         - authenticationToken
        """
        self.send_getNoteStoreUrl(authenticationToken)
        return self.recv_getNoteStoreUrl()
    

    I am not 100% sure wether this is on my side or something wrong with the example code.

    Hope someone can help me out.

    Cheers, Ulf

    opened by urms 6
  • Code completion & Docstrings

    Code completion & Docstrings

    Hi, The architecture of the SDK breaks PyDev code completion & hover docstrings (on methods), slowing down development and making it harder to use. Do you have any known workaround or future plan on that? Thanks, Chris

    opened by laurentgoudet 5
  • Add setup.py

    Add setup.py

    I've created a setup script so that we can install the evernote python SDK in the standard python module way (http://docs.python.org/distutils/setupscript.html).

    just run

    python setup.py install
    

    and the library will be installed in your PYTHONPATH.

    This makes the library ready for PyPI, or installed directly from github (eg pip install git+git://github.com/evernote/evernote-sdk-python.git).

    opened by kwellman 5
  • https://www.yinxiang.com/  errorCode=8

    https://www.yinxiang.com/ errorCode=8

    use china evernote,need config this url? 'https://app.yinxiang.com/shard/s5/notestore' how to config?

    client = EvernoteClient(token=dev_token, sandbox=False)
    noteStore = client.get_note_store()
    

    throw err

        noteStore = client.get_note_store()
      File "build/bdist.macosx-10.10-intel/egg/evernote/api/client.py", line 68, in get_note_store
      File "build/bdist.macosx-10.10-intel/egg/evernote/api/client.py", line 138, in delegate_method
      File "build/bdist.macosx-10.10-intel/egg/evernote/edam/userstore/UserStore.py", line 1156, in getNoteStoreUrl
      File "build/bdist.macosx-10.10-intel/egg/evernote/edam/userstore/UserStore.py", line 1181, in recv_getNoteStoreUrl
    evernote.edam.error.ttypes.EDAMSystemException: EDAMSystemException(errorCode=8, rateLimitDuration=None, _message='authenticationToken')
    
    opened by youqingkui 4
  • Set PLAINTEXT signature method for empty oauth_token_secret

    Set PLAINTEXT signature method for empty oauth_token_secret

    EvernoteClient.get_access_token() should set PLAINTEXT signature method when oauth_token_secret is empty as per the small patch below (sorry too lazy to make a fork for this):

    --- a/lib/evernote/api/client.py
    +++ b/lib/evernote/api/client.py
    @@ -49,6 +49,8 @@ class EvernoteClient(object):
             token = oauth.Token(oauth_token, oauth_token_secret)
             token.set_verifier(oauth_verifier)
             client = self._get_oauth_client(token)
    +        if not oauth_token_secret:
    +            client.set_signature_method(oauth.SignatureMethod_PLAINTEXT())
    
             resp, content = client.request(self._get_endpoint('oauth'), 'POST')
             access_token = dict(urlparse.parse_qsl(content))
    
    opened by gsakkis 4
  • Is this right way for get the data from access_token?

    Is this right way for get the data from access_token?

    u.evernote_token is valid token. When I use the new EvernoteClient , I always get the EDAMUserException.

    In [36]: ec = EvernoteClient(token=u.evernote_token, sandbox=False)
    
    In [37]: us = ec.get_user_store()
    
    In [38]: us.getUser()
    ---------------------------------------------------------------------------
    EDAMUserException                         Traceback (most recent call last)
    <ipython-input-38-e5fae8655448> in <module>()
    ----> 1 us.getUser()
    
    /home/dreampuf/www/tblog/.py/lib/python2.7/site-packages/evernote/api/client.pyc in delegate_method(*args, **kwargs)
        138                 return functools.partial(
        139                     targetMethod, authenticationToken=self.token
    --> 140                 )(**dict(zip(arg_names, args)))
        141             else:
        142                 return targetMethod(*args, **kwargs)
    
    /home/dreampuf/www/tblog/.py/lib/python2.7/site-packages/evernote/edam/userstore/UserStore.pyc in getUser(self, authenticationToken)
        788     """
        789     self.send_getUser(authenticationToken)
    --> 790     return self.recv_getUser()
        791
        792   def send_getUser(self, authenticationToken):
    
    /home/dreampuf/www/tblog/.py/lib/python2.7/site-packages/evernote/edam/userstore/UserStore.pyc in recv_getUser(self)
        811       return result.success
        812     if result.userException is not None:
    --> 813       raise result.userException
        814     if result.systemException is not None:
        815       raise result.systemException
    
    EDAMUserException: EDAMUserException(errorCode=9, parameter='password')
    

    Do you have any suggestion?

    opened by dreampuf 3
  • Could you add this feature of the client?

    Could you add this feature of the client?

    I find the new client api may limit many old apps use this SDK. The new client loses the response data when it request the token. I hope you can merge this pull request to your SDK.

    opened by dreampuf 3
  • Special Examples

    Special Examples

    Hi, here at the Evernote Hackathon Berlin 2013 we figured out, that people need more examples covering complete use cases. These are some examples we found useful for the people here.

    opened by holtwick 3
  • Enhanced organization and search capabilities.

    Enhanced organization and search capabilities.

    Enhanced organization and search capabilities. Implementing a feature such as advanced tagging (which was extracted under LDA topic 4 during my review analysis, the word 'tag') and categorization of notes and tasks will provide users with a way to quickly access notes they are searching for. This helps increase the apps usefulness and efficiency for users that tend to own a large collection of notes.

    opened by mhassan04 0
  • Improved performance and stability

    Improved performance and stability

    Improved performance and stability. Under LDA topic 9 during my review analysis, one of the extracted word was 'crash' and it shows up twice, which tells us that the users are reporting bugs and crashes on the app, their have also been reviews about the app's slow loading time, for instance under LDA Topic 1 during my reviews analysis we find the word 'slow', this causes the users to get irritated and may lead to them closing the app. As a result, to improve the users overall experience on the app and increase their satisfaction, the app should improve its performance and stability.

    opened by mhassan04 0
  • Add a feature to pin notes

    Add a feature to pin notes

    Add a feature to pin notes, if you use a notes app often, there are notes you go back to everyday and edit to add more information and so on. The app appeals more to the user when a simple feature such as pinning a few notes and having it show up on the top of their screen, this would be super convenient, useful and increase the usability.

    opened by mhassan04 0
  • Adding feature to increase font size

    Adding feature to increase font size

    Add a feature to increase the font size when reading texts on the Evernote app, users struggle to read texts and prefer to increase the size to their liking. This increases the usability and is appealing to the user.

    opened by mhassan04 0
  • Bump mako from 0.7.3 to 1.2.2 in /sample/pyramid

    Bump mako from 0.7.3 to 1.2.2 in /sample/pyramid

    Bumps mako from 0.7.3 to 1.2.2.

    Release notes

    Sourced from mako's releases.

    1.2.2

    Released: Mon Aug 29 2022

    bug

    • [bug] [lexer] Fixed issue in lexer where the regexp used to match tags would not correctly interpret quoted sections individually. While this parsing issue still produced the same expected tag structure later on, the mis-handling of quoted sections was also subject to a regexp crash if a tag had a large number of quotes within its quoted sections.

      References: #366

    1.2.1

    Released: Thu Jun 30 2022

    bug

    • [bug] [tests] Various fixes to the test suite in the area of exception message rendering to accommodate for variability in Python versions as well as Pygments.

      References: #360

    misc

    • [performance] Optimized some codepaths within the lexer/Python code generation process, improving performance for generation of templates prior to their being cached. Pull request courtesy Takuto Ikuta.

      References: #361

    1.2.0

    Released: Thu Mar 10 2022

    changed

    • [changed] [py3k] Corrected "universal wheel" directive in setup.cfg so that building a wheel does not target Python 2.

      References: #351

    • [changed] [py3k] The bytestring_passthrough template argument is removed, as this flag only applied to Python 2.

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump waitress from 0.8.2 to 2.1.1 in /sample/pyramid

    Bump waitress from 0.8.2 to 2.1.1 in /sample/pyramid

    Bumps waitress from 0.8.2 to 2.1.1.

    Release notes

    Sourced from waitress's releases.

    v2.1.1

    No release notes provided.

    v2.1.0

    No release notes provided.

    v2.1.0b0

    No release notes provided.

    v2.0.0

    No release notes provided.

    v2.0.0b1

    No release notes provided.

    v2.0.0b0

    No release notes provided.

    v1.4.4

    No release notes provided.

    v1.4.3

    No release notes provided.

    v1.4.2

    No release notes provided.

    v1.4.1

    No release notes provided.

    v1.4.0

    No release notes provided.

    v1.3.1

    No release notes provided.

    v1.3.0

    No release notes provided.

    v1.3.0b0

    No release notes provided.

    v1.2.1

    No release notes provided.

    v1.2.0

    No release notes provided.

    v1.1.0

    https://pypi.org/project/waitress/1.1.0/

    ... (truncated)

    Changelog

    Sourced from waitress's changelog.

    2.1.1

    Security Bugfix

    
    - Waitress now validates that chunked encoding extensions are valid, and don't
      contain invalid characters that are not allowed. They are still skipped/not
      processed, but if they contain invalid data we no longer continue in and
      return a 400 Bad Request. This stops potential HTTP desync/HTTP request
      smuggling. Thanks to Zhang Zeyu for reporting this issue. See
      https://github.com/Pylons/waitress/security/advisories/GHSA-4f7p-27jc-3c36
    
    • Waitress now validates that the chunk length is only valid hex digits when parsing chunked encoding, and values such as 0x01 and +01 are no longer supported. This stops potential HTTP desync/HTTP request smuggling. Thanks to Zhang Zeyu for reporting this issue. See https://github.com/Pylons/waitress/security/advisories/GHSA-4f7p-27jc-3c36

    • Waitress now validates that the Content-Length sent by a remote contains only digits in accordance with RFC7230 and will return a 400 Bad Request when the Content-Length header contains invalid data, such as +10 which would previously get parsed as 10 and accepted. This stops potential HTTP desync/HTTP request smuggling Thanks to Zhang Zeyu for reporting this issue. See https://github.com/Pylons/waitress/security/advisories/GHSA-4f7p-27jc-3c36

    2.1.0

    Python Version Support

    • Python 3.6 is no longer supported by Waitress

    • Python 3.10 is fully supported by Waitress

    Bugfix

    
    - ``wsgi.file_wrapper`` now sets the ``seekable``, ``seek``, and ``tell``
      attributes from the underlying file if the underlying file is seekable. This
      allows WSGI middleware to implement things like range requests for example
    

    See Pylons/waitress#359 and Pylons/waitress#363

    • In Python 3 OSError is no longer subscriptable, this caused failures on Windows attempting to loop to find an socket that would work for use in the trigger.

    </tr></table>

    ... (truncated)

    Commits
    • 9e0b8c8 Merge pull request from GHSA-4f7p-27jc-3c36
    • b28c9e8 Prep for 2.1.1
    • bd22869 Remove extraneous calls to .strip() in Chunked Encoding
    • d9bdfa0 Validate chunk size in Chunked Encoding are HEXDIG
    • d032a66 Error when receiving back Chunk Extension
    • 884bed1 Update tests to remove invalid chunked encoding chunk-size
    • 1f6059f Be more strict in parsing Content-Length
    • e75b0d9 Add new regular expressions for Chunked Encoding
    • 22c0394 Merge pull request #367 from Pylons/fixup/collect-wasyncore-tests
    • dc15d9f Make sure to collect all wasyncore tests
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
Releases(1.28)
Graviti-python-sdk - Graviti Data Platform Python SDK

Graviti Python SDK Graviti Python SDK is a python library to access Graviti Data

Graviti 13 Dec 15, 2022
A wrapper for aqquiring Choice Coin directly through a Python Terminal. Leverages the TinyMan Python-SDK.

CHOICE_TinyMan_Wrapper A wrapper that allows users to acquire Choice Coin directly through their Terminal using ALGO and various Algorand Standard Ass

Choice Coin 16 Sep 24, 2022
AWS SDK for Python

Boto3 - The AWS SDK for Python Boto3 is the Amazon Web Services (AWS) Software Development Kit (SDK) for Python, which allows Python developers to wri

the boto project 7.8k Jan 8, 2023
Python SDK for Facebook's Graph API

Facebook Python SDK This client library is designed to support the Facebook Graph API and the official Facebook JavaScript SDK, which is the canonical

Mobolic 2.7k Jan 7, 2023
Box SDK for Python

Box Python SDK Installing Getting Started Authorization Server-to-Server Auth with JWT Traditional 3-legged OAuth2 Other Auth Options Usage Documentat

Box 371 Dec 29, 2022
The Official Dropbox API V2 SDK for Python

The offical Dropbox SDK for Python. Documentation can be found on Read The Docs. Installation Create an app via the Developer Console. Install via pip

Dropbox 828 Jan 5, 2023
Python SDK for IEX Cloud

iexfinance Python SDK for IEX Cloud. Architecture mirrors that of the IEX Cloud API (and its documentation). An easy-to-use toolkit to obtain data for

Addison Lynch 640 Jan 7, 2023
Unofficial Medium Python Flask API and SDK

PyMedium - Unofficial Medium API PyMedium is an unofficial Medium API written in python flask. It provides developers to access to user, post list and

Engine Bai 157 Nov 11, 2022
The Python SDK for the Rackspace Cloud

pyrax Python SDK for OpenStack/Rackspace APIs DEPRECATED: Pyrax is no longer being developed or supported. See openstacksdk and the rackspacesdk plugi

PyContribs 238 Sep 21, 2022
:snake: Python SDK to query Scaleway APIs.

Scaleway SDK Python SDK to query Scaleway's APIs. Stable release: Development: Installation The package is available on pip. To install it in a virtua

Scaleway 114 Dec 11, 2022
Skyscanner Python SDK

Skyscanner Python SDK Important As of May 1st, 2020, the project is deprecated and no longer maintained. The latest update in v1.1.5 includes changing

Skyscanner 118 Sep 23, 2022
WeChat SDK for Python

___ __ _______ ________ ___ ___ ________ _________ ________ ___ ___ |\ \ |\ \|\ ___ \ |\ ____\|\ \|\ \|\ __ \|\___

wechatpy 3.3k Dec 26, 2022
Python SDK for the Buycoins API.

This library provides easy access to the Buycoins API using the Python programming language. It provides all the feature of the API so that you don't need to interact with the API directly. This library can be used with Python 3.6+

Musa Rasheed 48 May 4, 2022
Graviti TensorBay Python SDK

TensorBay Python SDK is a python library to access TensorBay and manage your datasets. It provides: A pythonic way to access your

Graviti 72 Aug 22, 2022
A Python script for rendering glTF files with V-Ray App SDK

V-Ray glTF viewer Overview The V-Ray glTF viewer is a set of Python scripts for the V-Ray App SDK that allow the parsing and rendering of glTF (.gltf

Chaos 24 Dec 5, 2022
qualysclient - a python SDK for interacting with the Qualys API

qualysclient - a python SDK for interacting with the Qualys API

null 5 Oct 28, 2022
A Python SDK for connecting devices to Microsoft Azure IoT services

V2 - We are now GA! This repository contains code for the Azure IoT SDKs for Python. This enables python developers to easily create IoT device soluti

Microsoft Azure 381 Dec 30, 2022
Tinyman Python SDK

tinyman-py-sdk Tinyman Python SDK Design Goal This SDK is designed for automated interaction with the Tinyman AMM. It will be most useful for develope

Tinyman 113 Dec 30, 2022