Skip to main content

No project description provided

Project description

Linen Closet

This module is designed to provide a standalone CLI and Python package to bulk-download Google Sheets to a single JSON file.

Why would I use this?

  • You have a large number of Google Sheets that you want to download and use in a single application
  • You want to cache the data from Google Sheets to avoid hitting the Google Sheets API rate limits

Why wouldn't I use this?

  • You don't have a large number of Google Sheets to download. You're probably better off using the Google Sheets API directly.
  • You need more control over which data is pulled back from Google Sheets. This includes either filtering for only specific values, or dynamically pulling back a specific set of sheets based on some criteria.

Installation

pip install linen-closet

Usage

Python Package

from linen_closet import load_sheets, S3Configuration

load_sheets(
    credentials_file: str = "credentials.json",  # Likely a Google Service Account Credentials file in JSON format
    output_filename: str = "workbook.json",  # Where to write the JSON file
    max_download_concurrency: int = 10,  # How many concurrent downloads to run
    configuration_filename: str = "sheets.yaml",  # A YAML file containing the sheets to download (see example in repo root)
    cache_file: Optional[str] = None,  # An existing output file. If provided, will only download sheets that have changed since the last download. All sheet data will be included in the output file (cached data will be copied over)
    s3_configuration: Optional[S3Configuration] = None,  # If provided, and either `output_filename` or `cache_file` is an S3 URL, will perform actions against the S3 bucket specified here
)

CLI

Pre-built binaries are available on the Releases page.

Help Text

Usage: linen_closet [OPTIONS]

Options:
  -o, --output-filename <OUTPUT_FILENAME>
          Output file name [default: workbooks.json]
  -m, --max-download-concurrency <MAX_DOWNLOAD_CONCURRENCY>
          Max download concurrency [default: 50]
  -s, --sheet-configuration <SHEET_CONFIGURATION>
          Sheet configuration [default: sheets.yaml]
  -c, --credentials-file-path <CREDENTIALS_FILE_PATH>
          Credentials file path [default: credentials.json]
  -e, --existing-file <EXISTING_FILE>
          Existing file to read from
  -h, --help
          Print help
  -V, --version
          Print version

Example

linen_closet \
    --credentials-file-path credentials.json \
    --output-filename workbooks.json \
    --sheet-configuration sheets.yaml \
    --max-download-concurrency 50

License

Apache 2.0

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

linen_closet-0.0.6.tar.gz (36.1 kB view hashes)

Uploaded Source

Built Distributions

linen_closet-0.0.6-pp310-pypy310_pp73-manylinux_2_24_armv7l.whl (6.6 MB view hashes)

Uploaded PyPy manylinux: glibc 2.24+ ARMv7l

linen_closet-0.0.6-pp310-pypy310_pp73-manylinux_2_24_aarch64.whl (6.8 MB view hashes)

Uploaded PyPy manylinux: glibc 2.24+ ARM64

linen_closet-0.0.6-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl (7.0 MB view hashes)

Uploaded PyPy manylinux: glibc 2.24+ x86-64

linen_closet-0.0.6-pp39-pypy39_pp73-manylinux_2_24_i686.whl (7.2 MB view hashes)

Uploaded PyPy manylinux: glibc 2.24+ i686

linen_closet-0.0.6-pp39-pypy39_pp73-manylinux_2_24_armv7l.whl (6.6 MB view hashes)

Uploaded PyPy manylinux: glibc 2.24+ ARMv7l

linen_closet-0.0.6-pp39-pypy39_pp73-manylinux_2_24_aarch64.whl (6.8 MB view hashes)

Uploaded PyPy manylinux: glibc 2.24+ ARM64

linen_closet-0.0.6-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl (7.0 MB view hashes)

Uploaded PyPy manylinux: glibc 2.24+ x86-64

linen_closet-0.0.6-pp38-pypy38_pp73-manylinux_2_24_i686.whl (7.2 MB view hashes)

Uploaded PyPy manylinux: glibc 2.24+ i686

linen_closet-0.0.6-pp38-pypy38_pp73-manylinux_2_24_armv7l.whl (6.6 MB view hashes)

Uploaded PyPy manylinux: glibc 2.24+ ARMv7l

linen_closet-0.0.6-pp38-pypy38_pp73-manylinux_2_24_aarch64.whl (6.8 MB view hashes)

Uploaded PyPy manylinux: glibc 2.24+ ARM64

linen_closet-0.0.6-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl (7.0 MB view hashes)

Uploaded PyPy manylinux: glibc 2.24+ x86-64

linen_closet-0.0.6-pp37-pypy37_pp73-manylinux_2_24_i686.whl (7.2 MB view hashes)

Uploaded PyPy manylinux: glibc 2.24+ i686

linen_closet-0.0.6-pp37-pypy37_pp73-manylinux_2_24_armv7l.whl (6.6 MB view hashes)

Uploaded PyPy manylinux: glibc 2.24+ ARMv7l

linen_closet-0.0.6-pp37-pypy37_pp73-manylinux_2_24_aarch64.whl (6.8 MB view hashes)

Uploaded PyPy manylinux: glibc 2.24+ ARM64

linen_closet-0.0.6-cp312-none-win_amd64.whl (4.6 MB view hashes)

Uploaded CPython 3.12 Windows x86-64

linen_closet-0.0.6-cp312-none-win32.whl (4.1 MB view hashes)

Uploaded CPython 3.12 Windows x86

linen_closet-0.0.6-cp312-cp312-manylinux_2_24_armv7l.whl (6.6 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.24+ ARMv7l

linen_closet-0.0.6-cp312-cp312-manylinux_2_24_aarch64.whl (6.8 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.24+ ARM64

linen_closet-0.0.6-cp312-cp312-macosx_11_0_arm64.whl (5.1 MB view hashes)

Uploaded CPython 3.12 macOS 11.0+ ARM64

linen_closet-0.0.6-cp312-cp312-macosx_10_12_x86_64.whl (5.3 MB view hashes)

Uploaded CPython 3.12 macOS 10.12+ x86-64

linen_closet-0.0.6-cp311-none-win_amd64.whl (4.6 MB view hashes)

Uploaded CPython 3.11 Windows x86-64

linen_closet-0.0.6-cp311-none-win32.whl (4.1 MB view hashes)

Uploaded CPython 3.11 Windows x86

linen_closet-0.0.6-cp311-cp311-manylinux_2_24_x86_64.whl (7.0 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.24+ x86-64

linen_closet-0.0.6-cp311-cp311-manylinux_2_24_i686.whl (7.2 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.24+ i686

linen_closet-0.0.6-cp311-cp311-manylinux_2_24_armv7l.whl (6.6 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.24+ ARMv7l

linen_closet-0.0.6-cp311-cp311-manylinux_2_24_aarch64.whl (6.8 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.24+ ARM64

linen_closet-0.0.6-cp311-cp311-macosx_11_0_arm64.whl (5.1 MB view hashes)

Uploaded CPython 3.11 macOS 11.0+ ARM64

linen_closet-0.0.6-cp311-cp311-macosx_10_12_x86_64.whl (5.3 MB view hashes)

Uploaded CPython 3.11 macOS 10.12+ x86-64

linen_closet-0.0.6-cp310-none-win_amd64.whl (4.6 MB view hashes)

Uploaded CPython 3.10 Windows x86-64

linen_closet-0.0.6-cp310-none-win32.whl (4.1 MB view hashes)

Uploaded CPython 3.10 Windows x86

linen_closet-0.0.6-cp310-cp310-musllinux_1_1_x86_64.whl (7.5 MB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

linen_closet-0.0.6-cp310-cp310-musllinux_1_1_armv7l.whl (7.0 MB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ ARMv7l

linen_closet-0.0.6-cp310-cp310-musllinux_1_1_aarch64.whl (7.2 MB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ ARM64

linen_closet-0.0.6-cp310-cp310-manylinux_2_24_x86_64.whl (7.0 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.24+ x86-64

linen_closet-0.0.6-cp310-cp310-manylinux_2_24_i686.whl (7.2 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.24+ i686

linen_closet-0.0.6-cp310-cp310-manylinux_2_24_armv7l.whl (6.6 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.24+ ARMv7l

linen_closet-0.0.6-cp310-cp310-manylinux_2_24_aarch64.whl (6.8 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.24+ ARM64

linen_closet-0.0.6-cp39-none-win_amd64.whl (4.6 MB view hashes)

Uploaded CPython 3.9 Windows x86-64

linen_closet-0.0.6-cp39-none-win32.whl (4.1 MB view hashes)

Uploaded CPython 3.9 Windows x86

linen_closet-0.0.6-cp39-cp39-manylinux_2_24_x86_64.whl (7.0 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.24+ x86-64

linen_closet-0.0.6-cp39-cp39-manylinux_2_24_i686.whl (7.2 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.24+ i686

linen_closet-0.0.6-cp39-cp39-manylinux_2_24_armv7l.whl (6.6 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.24+ ARMv7l

linen_closet-0.0.6-cp39-cp39-manylinux_2_24_aarch64.whl (6.8 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.24+ ARM64

linen_closet-0.0.6-cp38-none-win_amd64.whl (4.6 MB view hashes)

Uploaded CPython 3.8 Windows x86-64

linen_closet-0.0.6-cp38-none-win32.whl (4.1 MB view hashes)

Uploaded CPython 3.8 Windows x86

linen_closet-0.0.6-cp38-cp38-manylinux_2_24_x86_64.whl (7.0 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.24+ x86-64

linen_closet-0.0.6-cp38-cp38-manylinux_2_24_i686.whl (7.2 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.24+ i686

linen_closet-0.0.6-cp38-cp38-manylinux_2_24_armv7l.whl (6.6 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.24+ ARMv7l

linen_closet-0.0.6-cp38-cp38-manylinux_2_24_aarch64.whl (6.8 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.24+ ARM64

linen_closet-0.0.6-cp37-none-win_amd64.whl (4.6 MB view hashes)

Uploaded CPython 3.7 Windows x86-64

linen_closet-0.0.6-cp37-none-win32.whl (4.1 MB view hashes)

Uploaded CPython 3.7 Windows x86

linen_closet-0.0.6-cp37-cp37m-manylinux_2_24_x86_64.whl (7.0 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.24+ x86-64

linen_closet-0.0.6-cp37-cp37m-manylinux_2_24_i686.whl (7.2 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.24+ i686

linen_closet-0.0.6-cp37-cp37m-manylinux_2_24_armv7l.whl (6.6 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.24+ ARMv7l

linen_closet-0.0.6-cp37-cp37m-manylinux_2_24_aarch64.whl (6.8 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.24+ ARM64

Supported by

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