semvec/pypi-packages huggingface dataset:
gcs-pypi 0.1.15
CLI for creating a Python Package Repository in a GCS bucket
Requires Python: !=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,<4.0,>=2.7


gcs_pypi
========


.. image:: https://github.com/jackton1/gcspypi/workflows/Python%20package/badge.svg
   :target: https://github.com/jackton1/gcspypi/workflows/Python%20package/badge.svg
   :alt: Python package


gcs_pypi is a CLI for creating a Python Package Repository in an GCS bucket.

Getting started
---------------

Installation
^^^^^^^^^^^^

Install gcs_pypi using pip:

.. code-block:: bash

   pip install gcs_pypi

Usage
-----

GCS Bucket
^^^^^^^^^^


* Create a new bucket

IAM (Role & Service Account)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Setup service account with the following permissions

.. code-block:: text

   storage.buckets.get
   storage.buckets.getIamPolicy
   storage.buckets.update
   storage.objects.create
   storage.objects.delete
   storage.objects.get
   storage.objects.getIamPolicy
   storage.objects.list
   storage.objects.setIamPolicy

Recommended that you create a custom Role which can be inherited by the service account

Example


*
  Create Role "PYPI"

*
  Assign Permissions

.. code-block:: text

   storage.buckets.get
   storage.buckets.getIamPolicy
   storage.buckets.update
   storage.objects.create
   storage.objects.delete
   storage.objects.get
   storage.objects.getIamPolicy
   storage.objects.list
   storage.objects.setIamPolicy


*
  Create a Service Account e.g pypi

*
  Select the "PYPI" Role created above

*
  Add a condition to limit access to only that GCS bucket

.. code-block:: yaml

   resource.name == "mybucket"

Visit `Cloud IAM Conditions <https://cloud.google.com/iam/docs/conditions-overview?_gac=1.79817061.1587676512.CjwKCAjw-YT1BRAFEiwAd2WRtsely2bRUq6KF3rxDzHVoCLbdZoy-AqW0raFx96lJeQ6O2Ie8q6IMhoCrskQAvD_BwE&_ga=2.40552928.-350153010.1574411744>`_  for more information

Distributing packages
^^^^^^^^^^^^^^^^^^^^^

You can now use ``gcspypi`` to create Python packages and upload them to your GCS bucket.
To hide packages from the public, you can use the ``--private`` option to prevent the packages from
being accessible directly via the GCS bucket (they will only be accessible via your Domain or
alternatively you can specify a secret subdirectory using the ``--secret`` option:

.. code-block:: bash

   cd /path/to/your-project/
   gcspypi --bucket mybucket [--private] [--secret SECRET]

Cache Header
^^^^^^^^^^^^

Set cache-control header for index.html

.. code-block:: bash

   $ gsutil setmeta -h "cache-control:public, must-revalidate, proxy-revalidate, max-age=0" gs://[BUCKET]/index.html

Installing packages
^^^^^^^^^^^^^^^^^^^

Install your packages using ``pip`` by pointing the ``--extra-index-url`` to your Custom domain (optionally followed by a secret subdirectory):

.. code-block:: bash

   pip install your-project --extra-index-url https://pypi.example.com/SECRET/

Alternatively, you can configure the index URL in ``~/.pip/pip.conf``\ :

.. code-block::

   [global]
   extra-index-url = https://pypi.example.com/SECRET/

Credits
~~~~~~~


* `s3pypi <https://github.com/novemberfiveco/s3pypi>`_
pktktimer 1.0.0
A more flexible pecha kucha timer
Requires Python: >=3.6

# pktktimer
I didn't like any existing pecha kucha timers, so I made my own. 
Existing timers are either too bloated and built with silly frameworks for such a simple application, or didn't have the features I wanted, like title slide delays.

## Usage
Just download and run `pechatimer.py`
The following command line arguments are available:
+ `-d seconds` denotes the time the zeroth(title) slide should run for. 
+ `--no-zero-slide` starts the timer without the zeroth slide

## TODO
+ package and upload to pypi
+ more options to fine-tune variables like time/slide.
rolling-token-auth 0.1.2
Rolling Token verificator & generator
Requires Python: >=3.6

# Rolling Token Authentication

## Usage

### Initialization
```
from rolling_token_auth import RollingTokenManager

manager = RollingTokenManager("secret", interval=3600)
```
The `interval` defines how long a token is valid in seconds. Shorter = more secure.
Both `secret` and `interval` must match between generation and verification.

### Generation
```
manager.generate_token()
```
This generates a token for the current timestamp. Optionally a `offset` can be declared.


## Verification
```
manager.is_valid(token)
```
This checks if the given token is valid for the current timestamp. The `manager.tolerance` parameter defines how many token from the past and future are still valid (default: 1 in each direction).