The Official Dropbox API V2 SDK for Python

Overview
https://cfl.dropboxstatic.com/static/images/sdk/python_banner.png

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:

$ pip install dropbox

Install from source:

$ git clone git://github.com/dropbox/dropbox-sdk-python.git
$ cd dropbox-sdk-python
$ python setup.py install

After installation, follow one of our Examples or read the documentation on Read The Docs.

You can also view our OAuth Guide.

Examples

We provide Examples to help get you started with a lot of the basic functionality in the SDK.

  • OAuth
  • Other Examples
    • Updown - Sample application that uploads the contents of your Downloads folder to Dropbox.
    • Backup and Restore - Sample application that shows how you can backup a file and restore previous versions if the file was modified/corrupted in any way.

Getting Help

If you find a bug, please see CONTRIBUTING.md for information on how to report it.

If you need help that is not specific to this SDK, please reach out to Dropbox Support.

License

This SDK is distributed under the MIT license, please see LICENSE for more information.

Comments
  • Internal Server error when using files_move and files_copy

    Internal Server error when using files_move and files_copy

    Hi, I'm receiving an InternalServerError everytime I call files_move or files_copy. I'm currently working around the issue from downloading and re-uploading each file instead. Here is my traceback

    File "C:\Python27\lib\custom\dropbox_backup.py", line 69, in move_sequential_files self.dropbox.rename(file_path, this_path) File "C:\Python27\lib\custom\dropbox\dropbox_wrapper.py", line 113, in rename self.client.files_move(old_path, new_path) File "C:\Python27\lib\site-packages\dropbox\base.py", line 544, in files_move None) File "C:\Python27\lib\site-packages\dropbox\dropbox.py", line 175, in request request_binary) File "C:\Python27\lib\site-packages\dropbox\dropbox.py", line 256, in request_json_string_with_retry request_binary) File "C:\Python27\lib\site-packages\dropbox\dropbox.py", line 320, in request_json_string raise InternalServerError(r.status_code, r.text) InternalServerError

    opened by kg-2 20
  • Add ca_certs argument for oauth and dropbox client

    Add ca_certs argument for oauth and dropbox client

    This change adds ca_certs str argument for oauth and dropbox client classes. It may be used with applications that packed into executable archives (like python par or py2exe). It also may be useful with some security related scenarios.

    Checklist

    General Contributing

    • [x] Have you read the Code of Conduct and signed the CLA?

    Is This a Code Change?

    • [x] Non-code related change (markdown/git settings etc)
    • [x] SDK Code Change
    • [x] Example/Test Code Change

    Validation

    • [x] Does tox pass?
    • [x] Do the tests pass? (no integration tests)
    opened by stanislau-arkhipenka 16
  • dbx.files_upload_session_append_v2 Is it a random server been connected?

    dbx.files_upload_session_append_v2 Is it a random server been connected?

    Hello,

    I'm use dbx.files_upload_session_append_v2 to upload large file But the speed is very unstable. I used 30MB as CHUNK_SIZE. My server has a 1Gbps internet and very idle. so I suspect it is sometimes connected to a bad dropbox server node or a very high load dropbox server node.

    I checked the sdk source code and wanted to find out the server address of each connection to it into dbx.files_upload_session_append_v2. No solution found at this time

    uploading: 1 of media/m002.mp4
    uploaded: 31457280 of media/m002.mp4 used time 6.745985269546509
    uploading: 31457280 of media/m002.mp4
    uploaded: 62914560 of media/m002.mp4 used time 3.0077970027923584
    uploading: 62914560 of media/m002.mp4
    uploaded: 94371840 of media/m002.mp4 used time 2.6795079708099365
    uploading: 94371840 of media/m002.mp4
    uploaded: 125829120 of media/m002.mp4 used time 2.5502266883850098
    uploading: 125829120 of media/m002.mp4
    uploaded: 157286400 of media/m002.mp4 used time 30.76577353477478
    uploading: 157286400 of media/m002.mp4
    uploaded: 188743680 of media/m002.mp4 used time 4.496345520019531
    uploading: 188743680 of media/m002.mp4
    uploaded: 220200960 of media/m002.mp4 used time 2.933668375015259
    uploading: 220200960 of media/m002.mp4
    uploaded: 251658240 of media/m002.mp4 used time 2.999969959259033
    uploading: 251658240 of media/m002.mp4
    uploaded: 283115520 of media/m002.mp4 used time 39.48408651351929
    uploading: 283115520 of media/m002.mp4
    uploaded: 314572800 of media/m002.mp4 used time 6.2456958293914795
    uploading: 314572800 of media/m002.mp4
    uploaded: 346030080 of media/m002.mp4 used time 3.3357770442962646
    uploading: 346030080 of media/m002.mp4
    uploaded: 377487360 of media/m002.mp4 used time 2.5063118934631348
    uploading: 377487360 of media/m002.mp4
    
    opened by louishot 16
  • Handle Half-open TCP sockets

    Handle Half-open TCP sockets

    If the host machine that the Dropbox client SDK is running on misses a FIN packet while it's waiting for a response from the server it will hang forever by default. This can happen if an intermediate router transiently goes down, or if the host is suspended via ACPI power management. This problem is common and widespread and documented here:

    https://en.wikipedia.org/wiki/TCP_half-open#RFC_793

    A thorough description of the problem can be found here:

    http://blog.stephencleary.com/2009/05/detection-of-half-open-dropped.html

    This change makes all HTTP API requests instead use a default timeout of 30 seconds instead of unconditionally blocking forever. It adds a special case for files_list_folder_longpoll which may have a user-defined timeout.

    opened by rianhunter 15
  • Error when importing module with python 2.7

    Error when importing module with python 2.7

    I've just installed version 7.1.1 from pip. When my script tries to import dropbox I end up with the following error:

    Traceback (most recent call last):
      File "dropbox_backup.py", line 4, in <module>
        import dropbox
      File "/home/ianwscott/lib/python2.7/dropbox/__init__.py", line 3, in <module>
        from .dropbox import __version__, Dropbox, DropboxTeam, create_session
      File "/home/ianwscott/lib/python2.7/dropbox/dropbox.py", line 34, in <module>
        from .session import pinned_session
      File "/home/ianwscott/lib/python2.7/dropbox/session.py", line 44, in <module>
        from . import rest
      File "/home/ianwscott/lib/python2.7/dropbox/rest.py", line 29, in <module>
        if six.PY3:
    AttributeError: 'module' object has no attribute 'PY3'
    
    

    I tried upgrading the six module, but I'm being told that the module is already up-to-date (version 1.10.0). So why is dropbox raising the error?

    I'm working on a server running CentOS 6.8. I don't have root access, since it's a shared server, which is why I'm installing the modules locally.

    opened by monotasker 13
  • Decoding issue with utf-8

    Decoding issue with utf-8

    As I can see in dropbox/dropbox.py, line 393 and so on, you always decode the resp using utf-8 which I don't think it works properly in case the user has a non-utf8 file name.

    Should we use chardet to decode the resp to reduce error?

    opened by tranvictor 13
  • Bad Request for url: https://www.dropbox.com/1/oauth2/token

    Bad Request for url: https://www.dropbox.com/1/oauth2/token

    After issue #31 was solved, I get the following error when running the example-code from the docs with version 3.42:

    Traceback (most recent call last):
      File "test.py", line 15, in <module>
        access_token, user_id = auth_flow.finish(auth_code)
      File "/usr/local/lib/python2.7/dist-packages/dropbox/oauth.py", line 178, in finish
        return self._finish(code, None)
      File "/usr/local/lib/python2.7/dist-packages/dropbox/oauth.py", line 60, in _finish
        resp.raise_for_status()
      File "/usr/local/lib/python2.7/dist-packages/requests/models.py", line 837, in raise_for_status
        raise HTTPError(http_error_msg, response=self)
    HTTPError: 400 Client Error: Bad Request for url: https://www.dropbox.com/1/oauth2/token
    
    opened by andyCapone 13
  • TypeError: float() argument must be a string or a number, not 'Timeout'  for python3.6

    TypeError: float() argument must be a string or a number, not 'Timeout' for python3.6

    $ git clone git://github.com/dropbox/dropbox-sdk-python.git
    $ cd dropbox-sdk-python
    $ python setup.py install
    >>> import dropbox
    >>> dbx = dropbox.Dropbox("YOUR_ACCESS_TOKEN")
    >>> dbx.users_get_current_account()
    Traceback (most recent call last):
      File "/home/debian8/anaconda3/lib/python3.6/site-packages/urllib3-1.21.1-py3.6.egg/urllib3/util/timeout.py", line 124, in _validate_timeout
        float(value)
    TypeError: float() argument must be a string or a number, not 'Timeout'
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/home/debian8/dropbox-sdk-python/dropbox/base.py", line 3277, in users_get_current_account
        None,
      File "/home/debian8/dropbox-sdk-python/dropbox/dropbox.py", line 234, in request
        timeout=timeout)
      File "/home/debian8/dropbox-sdk-python/dropbox/dropbox.py", line 325, in request_json_string_with_retry
        timeout=timeout)
      File "/home/debian8/dropbox-sdk-python/dropbox/dropbox.py", line 409, in request_json_string
        timeout=timeout,
      File "/home/debian8/anaconda3/lib/python3.6/site-packages/requests/sessions.py", line 565, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/debian8/anaconda3/lib/python3.6/site-packages/requests/sessions.py", line 518, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/debian8/anaconda3/lib/python3.6/site-packages/requests/sessions.py", line 639, in send
        r = adapter.send(request, **kwargs)
      File "/home/debian8/anaconda3/lib/python3.6/site-packages/requests/adapters.py", line 438, in send
        timeout=timeout
      File "/home/debian8/anaconda3/lib/python3.6/site-packages/urllib3-1.21.1-py3.6.egg/urllib3/connectionpool.py", line 587, in urlopen
        timeout_obj = self._get_timeout(timeout)
      File "/home/debian8/anaconda3/lib/python3.6/site-packages/urllib3-1.21.1-py3.6.egg/urllib3/connectionpool.py", line 302, in _get_timeout
        return Timeout.from_float(timeout)
      File "/home/debian8/anaconda3/lib/python3.6/site-packages/urllib3-1.21.1-py3.6.egg/urllib3/util/timeout.py", line 154, in from_float
        return Timeout(read=timeout, connect=timeout)
      File "/home/debian8/anaconda3/lib/python3.6/site-packages/urllib3-1.21.1-py3.6.egg/urllib3/util/timeout.py", line 94, in __init__
        self._connect = self._validate_timeout(connect, 'connect')
      File "/home/debian8/anaconda3/lib/python3.6/site-packages/urllib3-1.21.1-py3.6.egg/urllib3/util/timeout.py", line 127, in _validate_timeout
        "int, float or None." % (name, value))
    ValueError: Timeout value connect was Timeout(connect=30, read=30, total=None), but it must be an int, float or None.
    
    
    opened by yufeiluo 12
  • APIError Exceptions / Errors makes no sense

    APIError Exceptions / Errors makes no sense

    Sorry to raise this issue, but I've given them a good try, and still can't make sense of them. I've checked out your examples, and I've read your documentation: http://dropbox-sdk-python.readthedocs.org/en/master/moduledoc.html#dropbox.files.ListFolderError

    I think you need a lot more examples of usual errors that might crop up whilst using your API.

    Since I'm here anyway, can anyone point me in the right direction on how to handle the following scenario: I want to check if a folder exists, and if it is not found, I want to create that folder.

    Other than that, its pretty good stuff!

    opened by skela 10
  • Field is_emm_managed of password login details is always expected, but can be missing.

    Field is_emm_managed of password login details is always expected, but can be missing.

    I am using the team_log_get_events and team_log_get_events_continue APIs to retrieve user activity for a Dropbox account. I seem to be able to retrieve most events fine, but I get a validation error from the library for login success events and receive this error:

    dropbox.stone_validators.ValidationError: events.details.password_login_success_details: missing required field 'is_emm_managed'
    

    From http://dropbox-sdk-python.readthedocs.io/en/latest/moduledoc.html#dropbox.team_log.DeviceLogInfo.is_emm_managed, it seems as if this field is normally expected, but could be missing.

    Perhaps this validation constraint needs to be relaxed?

    opened by readshaw 8
  • Wrong content-type returned by files_list_folder_longpoll,

    Wrong content-type returned by files_list_folder_longpoll, "text/plain" instead of "application/json"

    The following sample code:

    #!/usr/bin/python
    import dropbox, os
    dbx = dropbox.Dropbox(os.environ['DROPBOX_TOKEN'])
    root = dbx.files_list_folder('')
    print dbx.files_list_folder_longpoll(root.cursor, timeout=30)
    

    returns:

    Traceback (most recent call last):
      File "longpoll_test.py", line 7, in <module>
        print dbx.files_list_folder_longpoll(root.cursor, timeout=30)
      File "/home/rrerolle/Workspace/Code/rembox/venv/local/lib/python2.7/site-packages/dropbox/base.py", line 89, in files_list_folder_longpoll
        None)
      File "/home/rrerolle/Workspace/Code/rembox/venv/local/lib/python2.7/site-packages/dropbox/dropbox.py", line 175, in request
        request_binary)
      File "/home/rrerolle/Workspace/Code/rembox/venv/local/lib/python2.7/site-packages/dropbox/dropbox.py", line 256, in request_json_string_with_retry
        request_binary)
      File "/home/rrerolle/Workspace/Code/rembox/venv/local/lib/python2.7/site-packages/dropbox/dropbox.py", line 337, in request_json_string
        r.headers.get('content-type'))
    AssertionError: Expected content-type to be application/json, got 'text/plain'
    

    It appears the request succeeds, but returns a "text/plain" content-type, while the dropbox v2 client explicitly expects "application/json", as demonstrated in https://github.com/dropbox/dropbox-sdk-python/blob/002e6df32a6c9446554f6f53b2510d284adc9943/dropbox/dropbox.py#L335-L337

    This is probably an overlook in the v2 API server itself so I'm not sure there is anything to do client wise. Still, for now, using it requires either catching the AssertionError, or running python with -O to disable the asserts.

    opened by rrerolle 8
  • Bump actions/setup-python from 2.2.2 to 4.4.0

    Bump actions/setup-python from 2.2.2 to 4.4.0

    Bumps actions/setup-python from 2.2.2 to 4.4.0.

    Release notes

    Sourced from actions/setup-python's releases.

    Add support to install multiple python versions

    In scope of this release we added support to install multiple python versions. For this you can try to use this snippet:

        - uses: actions/setup-python@v4
          with:
            python-version: |
                3.8
                3.9
                3.10
    

    Besides, we changed logic with throwing the error for GHES if cache is unavailable to warn (actions/setup-python#566).

    Improve error handling and messages

    In scope of this release we added improved error message to put operating system and its version in the logs (actions/setup-python#559). Besides, the release

    v4.3.0

    • Update @​actions/core to 1.10.0 version #517
    • Update @​actions/cache to 3.0.4 version #499
    • Only use github.token on github.com #443
    • Improvement of documentation #477 #479 #491 #492

    Add check-latest input and bug fixes

    In scope of this release we add the check-latest input. If check-latest is set to true, the action first checks if the cached version is the latest one. If the locally cached version is not the most up-to-date, the version will then be downloaded from python-versions repository. By default check-latest is set to false. For PyPy it will to try to reach https://downloads.python.org/pypy/versions.json

    Example of usage:

    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.9'
          check-latest: true
      - run: python --version
    

    Besides, it includes such changes as

    v4.1.0

    In scope of this pull request we updated actions/cache package as the new version contains fixes for caching error handling. Moreover, we added a new input update-environment. This option allows to specify if the action shall update environment variables (default) or not.

    Update-environment input

    ... (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)
    dependencies github_actions 
    opened by dependabot[bot] 1
  • Fix invalid specifier in `stone` requirement

    Fix invalid specifier in `stone` requirement

    As mentioned in https://github.com/pypa/pip-audit/issues/445#issuecomment-1363101453:

    PEP 440 doesn't say it directly, but the language implies that the .* is only valid on exact comparison operators (e.g. == and !=), nor ordered comparisons (e.g. >=).

    In particular, a comparison like >=3.5.* is redundant: it has the exact same meaning as >=3.5.

    This is causing pip-audit to fail, like so: https://github.com/frappe/frappe/actions/runs/3811860090/jobs/6484759800#step:4:183

    Checklist

    General Contributing

    • [x] Have you read the Code of Conduct and signed the CLA?

    Is This a Code Change?

    • [x] Non-code related change (markdown/git settings etc)
    • [ ] SDK Code Change
    • [ ] Example/Test Code Change

    Validation

    • [x] Does tox pass?
    • [x] Do the tests pass?
    opened by sagarvora 0
  • Bump peter-evans/create-pull-request from 3.8.2 to 4.2.3

    Bump peter-evans/create-pull-request from 3.8.2 to 4.2.3

    Bumps peter-evans/create-pull-request from 3.8.2 to 4.2.3.

    Release notes

    Sourced from peter-evans/create-pull-request's releases.

    Create Pull Request v4.2.3

    What's Changed

    Full Changelog: https://github.com/peter-evans/create-pull-request/compare/v4.2.2...v4.2.3

    Create Pull Request v4.2.2

    What's Changed

    New Contributors

    Full Changelog: https://github.com/peter-evans/create-pull-request/compare/v4.2.1...v4.2.2

    Create Pull Request v4.2.1

    What's Changed

    Full Changelog: https://github.com/peter-evans/create-pull-request/compare/v4.2.0...v4.2.1

    Create Pull Request v4.2.0

    ⚙️ Improves the proxy implementation to properly support the standard environment variables http_proxy, https_proxy and no_proxy

    What's Changed

    Full Changelog: https://github.com/peter-evans/create-pull-request/compare/v4.1.4...v4.2.0

    Create Pull Request v4.1.4

    ⚙️ Bumps @actions/core to transition away from deprecated runner commands.

    What's Changed

    Full Changelog: https://github.com/peter-evans/create-pull-request/compare/v4.1.3...v4.1.4

    Create Pull Request v4.1.3

    What's Changed

    ... (truncated)

    Commits
    • 2b011fa fix: add check for missing token input (#1324)
    • 331d02c fix: support github server url for pushing to fork (#1318)
    • d7db273 fix: handle update after force pushing base to a new commit (#1307)
    • ee93d78 test: set default branch to main (#1310)
    • 6c704eb docs: clarify limitations of push-to-fork with restricted token
    • 88bf0de docs: correct examples
    • b38e8b0 docs: replace set-output in example
    • b4d5173 feat: switch proxy implementation (#1269)
    • ad43dcc build(deps): bump @​actions/io from 1.1.1 to 1.1.2 (#1280)
    • c2f9cef build(deps): bump @​actions/exec from 1.1.0 to 1.1.1 (#1279)
    • 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)
    dependencies github_actions 
    opened by dependabot[bot] 1
  • Update base.py

    Update base.py

    adding param explanations for files_upload

    Checklist

    General Contributing

    • [x] Have you read the Code of Conduct and signed the CLA?

    Is This a Code Change?

    • [x] Non-code related change (markdown/git settings etc)
    • [ ] SDK Code Change
    • [ ] Example/Test Code Change

    Validation

    • [x] Does tox pass?
    • [x] Do the tests pass?
    opened by alistvt 2
  • Bump codecov/codecov-action from 1.3.2 to 3.1.1

    Bump codecov/codecov-action from 1.3.2 to 3.1.1

    Bumps codecov/codecov-action from 1.3.2 to 3.1.1.

    Release notes

    Sourced from codecov/codecov-action's releases.

    3.1.1

    What's Changed

    New Contributors

    Full Changelog: https://github.com/codecov/codecov-action/compare/v3.1.0...v3.1.1

    v3.1.0

    3.1.0

    Features

    ... (truncated)

    Changelog

    Sourced from codecov/codecov-action's changelog.

    3.1.1

    Fixes

    • #661 Update deprecation warning
    • #593 Create codeql-analysis.yml
    • #712 README: fix typo
    • #725 fix: Remove a blank row
    • #726 Update README.md with correct badge version
    • #633 Create scorecards-analysis.yml
    • #747 fix: add more verbosity to validation
    • #750 Regenerate scorecards-analysis.yml
    • #774 Switch to v3
    • #783 Fix network entry in table
    • #791 Trim arguments after splitting them
    • #769 Plumb failCi into verification function.

    Dependencies

    • #713 build(deps-dev): bump typescript from 4.6.3 to 4.6.4
    • #714 build(deps): bump node-fetch from 3.2.3 to 3.2.4
    • #724 build(deps): bump github/codeql-action from 1 to 2
    • #717 build(deps-dev): bump @​types/jest from 27.4.1 to 27.5.0
    • #729 build(deps-dev): bump @​types/node from 17.0.25 to 17.0.33
    • #734 build(deps-dev): downgrade @​types/node to 16.11.35
    • #723 build(deps): bump actions/checkout from 2 to 3
    • #733 build(deps): bump @​actions/github from 5.0.1 to 5.0.3
    • #732 build(deps): bump @​actions/core from 1.6.0 to 1.8.2
    • #737 build(deps-dev): bump @​types/node from 16.11.35 to 16.11.36
    • #749 build(deps): bump ossf/scorecard-action from 1.0.1 to 1.1.0
    • #755 build(deps-dev): bump typescript from 4.6.4 to 4.7.3
    • #759 build(deps-dev): bump @​types/node from 16.11.36 to 16.11.39
    • #762 build(deps-dev): bump @​types/node from 16.11.39 to 16.11.40
    • #746 build(deps-dev): bump @​vercel/ncc from 0.33.4 to 0.34.0
    • #757 build(deps): bump ossf/scorecard-action from 1.1.0 to 1.1.1
    • #760 build(deps): bump openpgp from 5.2.1 to 5.3.0
    • #748 build(deps): bump actions/upload-artifact from 2.3.1 to 3.1.0
    • #766 build(deps-dev): bump typescript from 4.7.3 to 4.7.4
    • #799 build(deps): bump openpgp from 5.3.0 to 5.4.0
    • #798 build(deps): bump @​actions/core from 1.8.2 to 1.9.1

    3.1.0

    Features

    • #699 Incorporate xcode arguments for the Codecov uploader

    Dependencies

    • #694 build(deps-dev): bump @​vercel/ncc from 0.33.3 to 0.33.4
    • #696 build(deps-dev): bump @​types/node from 17.0.23 to 17.0.25
    • #698 build(deps-dev): bump jest-junit from 13.0.0 to 13.2.0

    3.0.0

    Breaking Changes

    • #689 Bump to node16 and small fixes

    ... (truncated)

    Commits
    • d9f34f8 release: update changelog and version to 3.1.1 (#828)
    • 0e9e7b4 Plumb failCi into verification function. (#769)
    • 7f20bd4 build(deps): bump @​actions/core from 1.8.2 to 1.9.1 (#798)
    • 13bc253 build(deps): bump openpgp from 5.3.0 to 5.4.0 (#799)
    • 5c0da1b Trim arguments after splitting them (#791)
    • 68d5f6d Fix network entry in table (#783)
    • 2a829b9 Switch to v3 (#774)
    • 8e09eaf build(deps-dev): bump typescript from 4.7.3 to 4.7.4 (#766)
    • 39e2229 build(deps): bump actions/upload-artifact from 2.3.1 to 3.1.0 (#748)
    • b2b7703 build(deps): bump openpgp from 5.2.1 to 5.3.0 (#760)
    • 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)
    dependencies github_actions 
    opened by dependabot[bot] 1
  • RFE: drop use `six` module

    RFE: drop use `six` module

    Looks like dropbox is one of the only handfull modules whch still is using six

    [tkloczko@devel-g2v dropbox-sdk-python-11.30.0]$ grep -rw six
    dropbox/dropbox_client.py:import six
    dropbox/dropbox_client.py:        assert isinstance(obj_result, six.string_types), \
    dropbox/dropbox_client.py:        if not isinstance(request_binary, (six.binary_type, type(None))):
    dropbox/oauth.py:import six
    dropbox/oauth.py:if six.PY3:
    dropbox/oauth.py:        if six.PY2 and isinstance(target, six.text_type):
    dropbox/oauth.py:        if isinstance(o, six.binary_type):
    dropbox/oauth.py:            if isinstance(o, six.text_type):
    dropbox/oauth.py:    utf8_params = {encode(k): encode(v) for k, v in six.iteritems(params)}
    example/updown.py:import six
    example/updown.py:            if not isinstance(name, six.text_type):
    requirements.txt:six >= 1.12.0
    setup.py:    'six >= 1.12.0',
    

    It would be good to rewrite thise parts to drop use six 😃

    enhancement 
    opened by kloczek 2
Releases(v11.36.0)
Maestral is an open-source Dropbox client written in Python.

Maestral - A light-weight and open-source Dropbox client for macOS and Linux

null 2.6k Jan 3, 2023
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
The official Pushy SDK for Python apps.

pushy-python The official Pushy SDK for Python apps. Pushy is the most reliable push notification gateway, perfect for real-time, mission-critical app

Pushy 1 Dec 21, 2021
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
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
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
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 2.7/3.x module for Amcrest Cameras using the SDK HTTP API.

A Python 2.7/3.x module for Amcrest Cameras using the SDK HTTP API. Amcrest and Dahua devices share similar firmwares. Dahua Cameras and NVRs also work with this module.

Marcelo Moreira de Mello 176 Dec 21, 2022
An Python SDK for QQ based on mirai-api-http v2.

Argon 一个基于 graia-broadcast 和 mirai-api-http v2 的 Python SDK。 本项目适用于 mirai-api-http 2.0 以上版本。 目前仍处于开发阶段,内部接口可能会有较大的变化。 The Stasis / 停滞 为维持 GraiaProject

BlueGlassBlock 1 Oct 29, 2021
An elegant mirai-api-http v2 Python SDK.

Ariadne 一个适用于 mirai-api-http v2 的 Python SDK。 本项目适用于 mirai-api-http 2.0 以上版本。 目前仍处于开发阶段,内部接口可能会有较大的变化。 安装 poetry add graia-ariadne 或 pip install graia

Graia Project 259 Jan 2, 2023
Python SDK for accessing the Hanko Authentication API

Hanko Authentication SDK for Python This package is maintained by Hanko. Contents Introduction Documentation Installation Usage Prerequisites Create a

Hanko.io 3 Mar 8, 2022
Balsam Python client API & SDK

balsam No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) This Python package is automatically

Darren Govoni 1 Oct 22, 2021
Python SDK for interacting with the Frame.io API.

python-frameio-client Frame.io Frame.io is a cloud-based collaboration hub that allows video professionals to share files, comment on clips real-time,

Frame.io 37 Dec 21, 2022
DongTai API SDK For Python

DongTai-SDK-Python Quick start You need a config file config.json { "DongTai":{ "token":"your token", "url":"http://127.0.0.1:90"

huoxian 50 Nov 24, 2022
Python 3 SDK/Wrapper for Huobi Crypto Exchange Api

This packages intents to be an idiomatic PythonApi wrapper for https://www.huobi.com/ Huobi Api Doc: https://huobiapi.github.io/docs Showcase TODO Con

null 3 Jul 28, 2022
The official Magenta Voice Skill SDK used to develop skills for the Magenta Voice Assistant using Voice Platform!

Magenta Voice Skill SDK Development • Support • Contribute • Contributors • Licensing Magenta Voice Skill SDK for Python is a package that assists in

Telekom Open Source Software 18 Nov 19, 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