Skip to main content

Google Drive API made easy. Maintained fork of PyDrive.

Project description

GHA Tests Conda-forge PyPI

PyDrive2

PyDrive2 is a wrapper library of google-api-python-client that simplifies many common Google Drive API V2 tasks. It is an actively maintained fork of https://pypi.python.org/pypi/PyDrive. By the authors and maintainers of the Git for Data - DVC project.

Project Info

Features of PyDrive2

  • Simplifies OAuth2.0 into just few lines with flexible settings.

  • Wraps Google Drive API V2 into classes of each resource to make your program more object-oriented.

  • Helps common operations else than API calls, such as content fetching and pagination control.

  • Provides fsspec filesystem implementation.

How to install

You can install PyDrive2 with regular pip command.

$ pip install PyDrive2

To install the current development version from GitHub, use:

$  pip install git+https://github.com/iterative/PyDrive2.git#egg=PyDrive2

OAuth made easy

Download client_secrets.json from Google API Console and OAuth2.0 is done in two lines. You can customize behavior of OAuth2 in one settings file settings.yaml.

from pydrive2.auth import GoogleAuth
from pydrive2.drive import GoogleDrive

gauth = GoogleAuth()
gauth.LocalWebserverAuth()

drive = GoogleDrive(gauth)

File management made easy

Upload/update the file with one method. PyDrive2 will do it in the most efficient way.

file1 = drive.CreateFile({'title': 'Hello.txt'})
file1.SetContentString('Hello')
file1.Upload() # Files.insert()

file1['title'] = 'HelloWorld.txt'  # Change title of the file
file1.Upload() # Files.patch()

content = file1.GetContentString()  # 'Hello'
file1.SetContentString(content+' World!')  # 'Hello World!'
file1.Upload() # Files.update()

file2 = drive.CreateFile()
file2.SetContentFile('hello.png')
file2.Upload()
print('Created file %s with mimeType %s' % (file2['title'],
file2['mimeType']))
# Created file hello.png with mimeType image/png

file3 = drive.CreateFile({'id': file2['id']})
print('Downloading file %s from Google Drive' % file3['title']) # 'hello.png'
file3.GetContentFile('world.png')  # Save Drive file as a local file

# or download Google Docs files in an export format provided.
# downloading a docs document as an html file:
docsfile.GetContentFile('test.html', mimetype='text/html')

File listing pagination made easy

PyDrive2 handles file listing pagination for you.

# Auto-iterate through all files that matches this query
file_list = drive.ListFile({'q': "'root' in parents"}).GetList()
for file1 in file_list:
    print('title: {}, id: {}'.format(file1['title'], file1['id']))

# Paginate file lists by specifying number of max results
for file_list in drive.ListFile({'maxResults': 10}):
    print('Received {} files from Files.list()'.format(len(file_list))) # <= 10
    for file1 in file_list:
        print('title: {}, id: {}'.format(file1['title'], file1['id']))

Fsspec filesystem

PyDrive2 provides easy way to work with your files through fsspec compatible GDriveFileSystem.

Install PyDrive2 with the required dependencies

$ pip install PyDrive2[fsspec]
from pydrive2.fs import GDriveFileSystem

# replace `root` with ID of a drive or directory and give service account access to it
fs = GDriveFileSystem("root", client_id=my_id, client_secret=my_secret)

for root, dnames, fnames in fs.walk("root"):
    ...

Concurrent access made easy

All API functions made to be thread-safe.

Contributors

Thanks to all our contributors!

https://contrib.rocks/image?repo=iterative/PyDrive2

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pydrive2-1.21.3.tar.gz (63.3 kB view details)

Uploaded Source

Built Distribution

PyDrive2-1.21.3-py3-none-any.whl (48.0 kB view details)

Uploaded Python 3

File details

Details for the file pydrive2-1.21.3.tar.gz.

File metadata

  • Download URL: pydrive2-1.21.3.tar.gz
  • Upload date:
  • Size: 63.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for pydrive2-1.21.3.tar.gz
Algorithm Hash digest
SHA256 649b84d60c637bc7146485039535aa8f1254ad156423739f07e5d32507447c13
MD5 ff7e5535054bd2ab9df7d77c5a49f6ed
BLAKE2b-256 3fdc92b0beba58f09441219bb6720bebdb895317632db4778cfe1d21532d27e5

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydrive2-1.21.3.tar.gz:

Publisher: publish.yml on iterative/PyDrive2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file PyDrive2-1.21.3-py3-none-any.whl.

File metadata

  • Download URL: PyDrive2-1.21.3-py3-none-any.whl
  • Upload date:
  • Size: 48.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for PyDrive2-1.21.3-py3-none-any.whl
Algorithm Hash digest
SHA256 843a304f500e71508162807001f5e19487f272e8ff5648f43582bd24c6250200
MD5 62d089356c9b6e0817cd6f2739e2aa3a
BLAKE2b-256 8cdeeef2e2661371b02d4231c5cacbb758a52ea9ea98cb5f52d69298641e2631

See more details on using hashes here.

Provenance

The following attestation bundles were made for PyDrive2-1.21.3-py3-none-any.whl:

Publisher: publish.yml on iterative/PyDrive2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page