summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-05-18 06:05:28 +0000
committerCoprDistGit <infra@openeuler.org>2023-05-18 06:05:28 +0000
commita33f3c7ea094fb96bc5b1702df034acb1cf81e70 (patch)
treee26dd08b3bb761fd3de260c7224de8e0a5508a4d
parent02baedf60663c6ef8caa9a65681ed2825288bc72 (diff)
automatic import of python-fs-googledrivefs
-rw-r--r--.gitignore1
-rw-r--r--python-fs-googledrivefs.spec498
-rw-r--r--sources1
3 files changed, 500 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..bbb4873 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/fs.googledrivefs-2.4.1.tar.gz
diff --git a/python-fs-googledrivefs.spec b/python-fs-googledrivefs.spec
new file mode 100644
index 0000000..af6e001
--- /dev/null
+++ b/python-fs-googledrivefs.spec
@@ -0,0 +1,498 @@
+%global _empty_manifest_terminate_build 0
+Name: python-fs.googledrivefs
+Version: 2.4.1
+Release: 1
+Summary: Pyfilesystem2 implementation for Google Drive
+License: MIT
+URL: https://github.com/rkhwaja/fs.googledrivefs
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/4b/58/b1db7bf9d491ffc23d844bbb64da0bc1916250c6c4d46421bda0c897b093/fs.googledrivefs-2.4.1.tar.gz
+BuildArch: noarch
+
+Requires: python3-fs
+Requires: python3-google-api-python-client
+Requires: python3-google-auth
+
+%description
+# fs.googledrivefs
+
+[![codecov](https://codecov.io/gh/rkhwaja/fs.googledrivefs/branch/master/graph/badge.svg)](https://codecov.io/gh/rkhwaja/fs.googledrivefs) [![PyPI version](https://badge.fury.io/py/fs.googledrivefs.svg)](https://badge.fury.io/py/fs.googledrivefs)
+
+Implementation of [pyfilesystem2](https://docs.pyfilesystem.org/) file system for Google Drive
+
+# Installation
+
+```bash
+ pip install fs.googledrivefs
+```
+
+# Usage
+
+```python
+ from google.oauth2.credentials import Credentials
+ from fs.googledrivefs import GoogleDriveFS
+
+ credentials = Credentials(oauth2_access_token,
+ refresh_token=oauth2_refresh_token,
+ token_uri="https://www.googleapis.com/oauth2/v4/token",
+ client_id=oauth2_client_id,
+ client_secret=oauth2_client_secret)
+
+ fs = GoogleDriveFS(credentials=credentials)
+
+ # fs is now a standard pyfilesystem2 file system, alternatively you can use the opener...
+
+ from fs.opener import open_fs
+
+ fs2 = open_fs("googledrive:///?access_token=<oauth2 access token>&refresh_token=<oauth2 refresh token>&client_id=<oauth2 client id>&client_secret=<oauth2 client secret>")
+
+ # fs2 is now a standard pyfilesystem2 file system
+```
+
+## Default Google Authentication
+
+If your application is accessing the Google Drive API as a
+[GCP Service Account](https://cloud.google.com/iam/docs/service-accounts), `fs.googledrivefs` will
+default to authenticating using the Service Account credentials specified by the
+[`GOOGLE_APPLICATION_CREDENTIALS` environment variable](https://cloud.google.com/docs/authentication/getting-started).
+This can greatly simplify the URLs used by the opener:
+
+```python
+ from fs.opener import open_fs
+
+ fs2 = open_fs("googledrive:///required/path")
+```
+
+You can also use the same method of authentication when using `GoogleDriveFS` directly:
+
+```python
+ import google.auth
+ from fs.googledrivefs import GoogleDriveFS
+
+ credentials, _ = google.auth.default()
+ fs = GoogleDriveFS(credentials=credentials)
+```
+
+## Using `fs.googledrivefs` with an organisation's Google Account
+
+While access to the Google Drive API is straightforward to enable for a personal Google Account,
+a user of an organisation's Google Account will typically only be able to enable an API in the
+context of a
+[GCP Project](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
+The user can then configure a
+[Service Account](https://cloud.google.com/iam/docs/understanding-service-accounts)
+to access all or a sub-set of the user's files using `fs.googledrivefs` with the following steps:
+
+- create a GCP Project
+- enable the Google Drive API for that Project
+- create a Service Account for that Project
+- share any Drive directory (or file) with that Service Account (using the accounts email)
+
+## Notes on forming `fs` urls for GCP Service Accounts
+
+Say that your is drive is structured as follows:
+
+```
+/alldata
+ /data1
+ /data2
+ :
+```
+
+Also say that you have given your application's service account access to everything in `data1`.
+If your application opens url `/alldata/data1` using `fs.opener.open_fs()`, then `fs.googledrivefs`
+must first get the info for `alldata` to which it has no access and so the operation fails.
+
+To address this we can tell `fs.googledrivefs` to treat `data1` as the root directory by supplying
+the file id of `data1` as the request parameter `root_id`. The fs url you would now use is
+`googledrive:///?root_id=12345678901234567890`:
+
+```python
+ from fs.opener import open_fs
+
+ fs2 = open_fs("googledrive:///?root_id=12345678901234567890")
+```
+
+You can also use the `rootId` when using `GoogleDriveFS` directly:
+
+```python
+ import google.auth
+ from fs.googledrivefs import GoogleDriveFS
+
+ credentials, _ = google.auth.default()
+ fs = GoogleDriveFS(credentials=credentials, rootId="12345678901234567890")
+```
+
+Note that any file or directory's id is readily accessible from it's web url.
+
+# Development
+
+To run the tests, set the following environment variables:
+
+- GOOGLEDRIVEFS_TEST_CLIENT_ID - your client id (see Google Developer Console)
+- GOOGLEDRIVEFS_TEST_CLIENT_SECRET - your client secret (see Google Developer Console)
+- GOOGLEDRIVEFS_TEST_CREDENTIALS_PATH - path to a json file which will contain the credentials
+
+Then generate the credentials json file by running
+
+```bash
+ python tests/generate-credentials.py
+```
+
+Then run the tests by executing
+
+```bash
+ pytest
+```
+
+in the root directory
+(note that if `GOOGLEDRIVEFS_TEST_CREDENTIALS_PATH` isn't set
+then the test suite will try to use the default Google credentials).
+The tests may take an hour or two to complete.
+They create and destroy many, many files and directories
+mostly under the /test-googledrivefs directory in the user's Google Drive
+and a few in the root directory
+
+Note that, if your tests are run using a service account,
+you can set the root id using `GOOGLEDRIVEFS_TEST_ROOT_ID`.
+
+
+%package -n python3-fs.googledrivefs
+Summary: Pyfilesystem2 implementation for Google Drive
+Provides: python-fs.googledrivefs
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-fs.googledrivefs
+# fs.googledrivefs
+
+[![codecov](https://codecov.io/gh/rkhwaja/fs.googledrivefs/branch/master/graph/badge.svg)](https://codecov.io/gh/rkhwaja/fs.googledrivefs) [![PyPI version](https://badge.fury.io/py/fs.googledrivefs.svg)](https://badge.fury.io/py/fs.googledrivefs)
+
+Implementation of [pyfilesystem2](https://docs.pyfilesystem.org/) file system for Google Drive
+
+# Installation
+
+```bash
+ pip install fs.googledrivefs
+```
+
+# Usage
+
+```python
+ from google.oauth2.credentials import Credentials
+ from fs.googledrivefs import GoogleDriveFS
+
+ credentials = Credentials(oauth2_access_token,
+ refresh_token=oauth2_refresh_token,
+ token_uri="https://www.googleapis.com/oauth2/v4/token",
+ client_id=oauth2_client_id,
+ client_secret=oauth2_client_secret)
+
+ fs = GoogleDriveFS(credentials=credentials)
+
+ # fs is now a standard pyfilesystem2 file system, alternatively you can use the opener...
+
+ from fs.opener import open_fs
+
+ fs2 = open_fs("googledrive:///?access_token=<oauth2 access token>&refresh_token=<oauth2 refresh token>&client_id=<oauth2 client id>&client_secret=<oauth2 client secret>")
+
+ # fs2 is now a standard pyfilesystem2 file system
+```
+
+## Default Google Authentication
+
+If your application is accessing the Google Drive API as a
+[GCP Service Account](https://cloud.google.com/iam/docs/service-accounts), `fs.googledrivefs` will
+default to authenticating using the Service Account credentials specified by the
+[`GOOGLE_APPLICATION_CREDENTIALS` environment variable](https://cloud.google.com/docs/authentication/getting-started).
+This can greatly simplify the URLs used by the opener:
+
+```python
+ from fs.opener import open_fs
+
+ fs2 = open_fs("googledrive:///required/path")
+```
+
+You can also use the same method of authentication when using `GoogleDriveFS` directly:
+
+```python
+ import google.auth
+ from fs.googledrivefs import GoogleDriveFS
+
+ credentials, _ = google.auth.default()
+ fs = GoogleDriveFS(credentials=credentials)
+```
+
+## Using `fs.googledrivefs` with an organisation's Google Account
+
+While access to the Google Drive API is straightforward to enable for a personal Google Account,
+a user of an organisation's Google Account will typically only be able to enable an API in the
+context of a
+[GCP Project](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
+The user can then configure a
+[Service Account](https://cloud.google.com/iam/docs/understanding-service-accounts)
+to access all or a sub-set of the user's files using `fs.googledrivefs` with the following steps:
+
+- create a GCP Project
+- enable the Google Drive API for that Project
+- create a Service Account for that Project
+- share any Drive directory (or file) with that Service Account (using the accounts email)
+
+## Notes on forming `fs` urls for GCP Service Accounts
+
+Say that your is drive is structured as follows:
+
+```
+/alldata
+ /data1
+ /data2
+ :
+```
+
+Also say that you have given your application's service account access to everything in `data1`.
+If your application opens url `/alldata/data1` using `fs.opener.open_fs()`, then `fs.googledrivefs`
+must first get the info for `alldata` to which it has no access and so the operation fails.
+
+To address this we can tell `fs.googledrivefs` to treat `data1` as the root directory by supplying
+the file id of `data1` as the request parameter `root_id`. The fs url you would now use is
+`googledrive:///?root_id=12345678901234567890`:
+
+```python
+ from fs.opener import open_fs
+
+ fs2 = open_fs("googledrive:///?root_id=12345678901234567890")
+```
+
+You can also use the `rootId` when using `GoogleDriveFS` directly:
+
+```python
+ import google.auth
+ from fs.googledrivefs import GoogleDriveFS
+
+ credentials, _ = google.auth.default()
+ fs = GoogleDriveFS(credentials=credentials, rootId="12345678901234567890")
+```
+
+Note that any file or directory's id is readily accessible from it's web url.
+
+# Development
+
+To run the tests, set the following environment variables:
+
+- GOOGLEDRIVEFS_TEST_CLIENT_ID - your client id (see Google Developer Console)
+- GOOGLEDRIVEFS_TEST_CLIENT_SECRET - your client secret (see Google Developer Console)
+- GOOGLEDRIVEFS_TEST_CREDENTIALS_PATH - path to a json file which will contain the credentials
+
+Then generate the credentials json file by running
+
+```bash
+ python tests/generate-credentials.py
+```
+
+Then run the tests by executing
+
+```bash
+ pytest
+```
+
+in the root directory
+(note that if `GOOGLEDRIVEFS_TEST_CREDENTIALS_PATH` isn't set
+then the test suite will try to use the default Google credentials).
+The tests may take an hour or two to complete.
+They create and destroy many, many files and directories
+mostly under the /test-googledrivefs directory in the user's Google Drive
+and a few in the root directory
+
+Note that, if your tests are run using a service account,
+you can set the root id using `GOOGLEDRIVEFS_TEST_ROOT_ID`.
+
+
+%package help
+Summary: Development documents and examples for fs.googledrivefs
+Provides: python3-fs.googledrivefs-doc
+%description help
+# fs.googledrivefs
+
+[![codecov](https://codecov.io/gh/rkhwaja/fs.googledrivefs/branch/master/graph/badge.svg)](https://codecov.io/gh/rkhwaja/fs.googledrivefs) [![PyPI version](https://badge.fury.io/py/fs.googledrivefs.svg)](https://badge.fury.io/py/fs.googledrivefs)
+
+Implementation of [pyfilesystem2](https://docs.pyfilesystem.org/) file system for Google Drive
+
+# Installation
+
+```bash
+ pip install fs.googledrivefs
+```
+
+# Usage
+
+```python
+ from google.oauth2.credentials import Credentials
+ from fs.googledrivefs import GoogleDriveFS
+
+ credentials = Credentials(oauth2_access_token,
+ refresh_token=oauth2_refresh_token,
+ token_uri="https://www.googleapis.com/oauth2/v4/token",
+ client_id=oauth2_client_id,
+ client_secret=oauth2_client_secret)
+
+ fs = GoogleDriveFS(credentials=credentials)
+
+ # fs is now a standard pyfilesystem2 file system, alternatively you can use the opener...
+
+ from fs.opener import open_fs
+
+ fs2 = open_fs("googledrive:///?access_token=<oauth2 access token>&refresh_token=<oauth2 refresh token>&client_id=<oauth2 client id>&client_secret=<oauth2 client secret>")
+
+ # fs2 is now a standard pyfilesystem2 file system
+```
+
+## Default Google Authentication
+
+If your application is accessing the Google Drive API as a
+[GCP Service Account](https://cloud.google.com/iam/docs/service-accounts), `fs.googledrivefs` will
+default to authenticating using the Service Account credentials specified by the
+[`GOOGLE_APPLICATION_CREDENTIALS` environment variable](https://cloud.google.com/docs/authentication/getting-started).
+This can greatly simplify the URLs used by the opener:
+
+```python
+ from fs.opener import open_fs
+
+ fs2 = open_fs("googledrive:///required/path")
+```
+
+You can also use the same method of authentication when using `GoogleDriveFS` directly:
+
+```python
+ import google.auth
+ from fs.googledrivefs import GoogleDriveFS
+
+ credentials, _ = google.auth.default()
+ fs = GoogleDriveFS(credentials=credentials)
+```
+
+## Using `fs.googledrivefs` with an organisation's Google Account
+
+While access to the Google Drive API is straightforward to enable for a personal Google Account,
+a user of an organisation's Google Account will typically only be able to enable an API in the
+context of a
+[GCP Project](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
+The user can then configure a
+[Service Account](https://cloud.google.com/iam/docs/understanding-service-accounts)
+to access all or a sub-set of the user's files using `fs.googledrivefs` with the following steps:
+
+- create a GCP Project
+- enable the Google Drive API for that Project
+- create a Service Account for that Project
+- share any Drive directory (or file) with that Service Account (using the accounts email)
+
+## Notes on forming `fs` urls for GCP Service Accounts
+
+Say that your is drive is structured as follows:
+
+```
+/alldata
+ /data1
+ /data2
+ :
+```
+
+Also say that you have given your application's service account access to everything in `data1`.
+If your application opens url `/alldata/data1` using `fs.opener.open_fs()`, then `fs.googledrivefs`
+must first get the info for `alldata` to which it has no access and so the operation fails.
+
+To address this we can tell `fs.googledrivefs` to treat `data1` as the root directory by supplying
+the file id of `data1` as the request parameter `root_id`. The fs url you would now use is
+`googledrive:///?root_id=12345678901234567890`:
+
+```python
+ from fs.opener import open_fs
+
+ fs2 = open_fs("googledrive:///?root_id=12345678901234567890")
+```
+
+You can also use the `rootId` when using `GoogleDriveFS` directly:
+
+```python
+ import google.auth
+ from fs.googledrivefs import GoogleDriveFS
+
+ credentials, _ = google.auth.default()
+ fs = GoogleDriveFS(credentials=credentials, rootId="12345678901234567890")
+```
+
+Note that any file or directory's id is readily accessible from it's web url.
+
+# Development
+
+To run the tests, set the following environment variables:
+
+- GOOGLEDRIVEFS_TEST_CLIENT_ID - your client id (see Google Developer Console)
+- GOOGLEDRIVEFS_TEST_CLIENT_SECRET - your client secret (see Google Developer Console)
+- GOOGLEDRIVEFS_TEST_CREDENTIALS_PATH - path to a json file which will contain the credentials
+
+Then generate the credentials json file by running
+
+```bash
+ python tests/generate-credentials.py
+```
+
+Then run the tests by executing
+
+```bash
+ pytest
+```
+
+in the root directory
+(note that if `GOOGLEDRIVEFS_TEST_CREDENTIALS_PATH` isn't set
+then the test suite will try to use the default Google credentials).
+The tests may take an hour or two to complete.
+They create and destroy many, many files and directories
+mostly under the /test-googledrivefs directory in the user's Google Drive
+and a few in the root directory
+
+Note that, if your tests are run using a service account,
+you can set the root id using `GOOGLEDRIVEFS_TEST_ROOT_ID`.
+
+
+%prep
+%autosetup -n fs.googledrivefs-2.4.1
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-fs.googledrivefs -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Thu May 18 2023 Python_Bot <Python_Bot@openeuler.org> - 2.4.1-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..b985f42
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+b42694d4bfefd1347b9999359e4b87da fs.googledrivefs-2.4.1.tar.gz