Security News
GitHub Removes Malicious Pull Requests Targeting Open Source Repositories
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
|CI| |Conda| |PyPI|
.. |CI| image:: https://github.com/iterative/PyDrive2/workflows/Tests/badge.svg?branch=main :target: https://github.com/iterative/PyDrive2/actions :alt: GHA Tests
.. |Conda| image:: https://img.shields.io/conda/v/conda-forge/PyDrive2.svg?label=conda&logo=conda-forge :target: https://anaconda.org/conda-forge/PyDrive2 :alt: Conda-forge
.. |PyPI| image:: https://img.shields.io/pypi/v/PyDrive2.svg?label=pip&logo=PyPI&logoColor=white :target: https://pypi.org/project/PyDrive2 :alt: PyPI
PyDrive2 is a wrapper library of
google-api-python-client <https://github.com/google/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 <https://pypi.python.org/pypi/PyDrive>
.
By the authors and maintainers of the Git for Data <https://dvc.org>
- DVC
project.
https://pypi.python.org/pypi/PyDrive2 <https://pypi.python.org/pypi/PyDrive2>
_https://docs.iterative.ai/PyDrive2 <https://docs.iterative.ai/PyDrive2>
_https://github.com/iterative/PyDrive2 <https://github.com/iterative/PyDrive2>
_https://github.com/iterative/PyDrive2/releases <https://github.com/iterative/PyDrive2/releases>
_Running tests </pydrive2/test/README.rst>
_Google Drive API V2 <https://developers.google.com/drive/v2/web/about-sdk>
_ into
classes of each resource to make your program more object-oriented.fsspec
_ filesystem implementation.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
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.
.. code:: python
from pydrive2.auth import GoogleAuth
from pydrive2.drive import GoogleDrive
gauth = GoogleAuth()
gauth.LocalWebserverAuth()
drive = GoogleDrive(gauth)
Upload/update the file with one method. PyDrive2 will do it in the most efficient way.
.. code:: python
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')
PyDrive2 handles file listing pagination for you.
.. code:: python
# 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']))
PyDrive2 provides easy way to work with your files through fsspec
_
compatible GDriveFileSystem
_.
Install PyDrive2 with the required dependencies
::
$ pip install PyDrive2[fsspec]
.. code:: python
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"):
...
.. _GDriveFileSystem
: https://docs.iterative.ai/PyDrive2/fsspec/
All API functions made to be thread-safe.
Thanks to all our contributors!
.. image:: https://contrib.rocks/image?repo=iterative/PyDrive2 :target: https://github.com/iterative/PyDrive2/graphs/contributors
.. _fsspec
: https://filesystem-spec.readthedocs.io/en/latest/
FAQs
Google Drive API made easy. Maintained fork of PyDrive.
We found that PyDrive2 demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
Security News
Node.js will be enforcing stricter semver-major PR policies a month before major releases to enhance stability and ensure reliable release candidates.