%global _empty_manifest_terminate_build 0 Name: python-bookstore Version: 2.5.1 Release: 1 Summary: Storage Workflows for Notebooks License: BSD URL: https://github.com/nteract/bookstore Source0: https://mirrors.nju.edu.cn/pypi/web/packages/35/f8/ffab0bcfda118421e6a72d5f13ca65dbf78e280882fc29bdd9193f4f26b9/bookstore-2.5.1.tar.gz BuildArch: noarch Requires: python3-future Requires: python3-ipython Requires: python3-notebook Requires: python3-tornado Requires: python3-aiobotocore Requires: python3-aioboto3 Requires: python3-futures Requires: python3-sphinx Requires: python3-m2r Requires: python3-sphinxcontrib-napoleon Requires: python3-sphinxcontrib-openapi Requires: python3-codecov Requires: python3-coverage Requires: python3-mock Requires: python3-mypy Requires: python3-pytest Requires: python3-pytest-asyncio Requires: python3-pytest-cov Requires: python3-pytest-mock Requires: python3-black Requires: python3-tox %description # bookstore :books: [![Documentation Status](https://readthedocs.org/projects/bookstore/badge/?version=latest)](https://bookstore.readthedocs.io/en/latest/?badge=latest) [![Build Status](https://travis-ci.org/nteract/bookstore.svg?branch=master)](https://travis-ci.org/nteract/bookstore) [![CircleCI](https://circleci.com/gh/nteract/bookstore.svg?style=shield)](https://circleci.com/gh/nteract/bookstore) [![Codecov](https://codecov.io/gh/nteract/bookstore/branch/master/graph/badge.svg)](https://codecov.io/gh/nteract/bookstore) **bookstore** :books: provides tooling and workflow recommendations for storing :cd:, scheduling :calendar:, and publishing :book: notebooks. The full documentation is hosted on [ReadTheDocs](https://bookstore.readthedocs.io). ## How does bookstore work ### Automatic Notebook Versioning Every *save* of a notebook creates an *immutable copy* of the notebook on object storage. To simplify implementation, we currently rely on S3 as the object store, using [versioned buckets](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html). ### Storage Paths All notebooks are archived to a single versioned S3 bucket with specific prefixes denoting the lifecycle of the notebook: - `/workspace` - where users edit - `/published` - public notebooks (to an organization) Each notebook path is a namespace that an external service ties into the schedule. We archive off versions, keeping the path intact (until a user changes them). | Prefix | Intent | |-----------------------------------------|------------------------| | `/workspace/kylek/notebooks/mine.ipynb` | Notebook in “draft” | | `/published/kylek/notebooks/mine.ipynb` | Current published copy | Scheduled notebooks will also be referred to by the notebook key. In addition, we'll need to be able to surface version IDs as well. ### Transitioning to this Storage Plan Since most people are on a regular filesystem, we'll start with writing to the `/workspace` prefix as Archival Storage (writing on save using a `post_save_hook` for a Jupyter contents manager). ### Publishing The bookstore publishing endpoint is a `serverextension` to the classic Jupyter server. This means you will need to explicitly enable the `serverextension` to use the endpoint. To do so, run: jupyter serverextension enable --py bookstore To enable it only for the current environment, run: jupyter serverextension enable --py bookstore --sys-prefix ## Installation **bookstore** requires Python 3.6 or higher. Note: Supports installation on Jupyter servers running Python 3.6 and above. Your notebooks can still be run in Python 2 or Python 3. 1. Clone this repo. 2. At the repo's root, enter in the Terminal: `python3 -m pip install .` (Tip: don't forget the dot at the end of the command) ## Configuration ```python # jupyter config # At ~/.jupyter/jupyter_notebook_config.py for user installs on macOS # See https://jupyter.readthedocs.io/en/latest/projects/jupyter-directories.html for other places to plop this from bookstore import BookstoreContentsArchiver c.NotebookApp.contents_manager_class = BookstoreContentsArchiver # All Bookstore settings are centralized on one config object so you don't have to configure it for each class c.BookstoreSettings.workspace_prefix = "/workspace/kylek/notebooks" c.BookstoreSettings.published_prefix = "/published/kylek/notebooks" c.BookstoreSettings.s3_bucket = "" # Note: if bookstore is used from an EC2 instance with the right IAM role, you don't # have to specify these c.BookstoreSettings.s3_access_key_id = c.BookstoreSettings.s3_secret_access_key = ``` ## Developing If you are developing on bookstore you will want to run the ci tests locally and to make releases. Use [CONTRIBUTING.md](./CONTRIBUTING.md) to learn more about contributing. Use [running_ci_locally.md](./running_ci_locally.md) to learn more about running ci tests locally. Use [running_python_tests.md](./running_python_tests.md) to learn about running tests locally. Use [RELEASING.md](./RELEASING.md) to learn more about releasing bookstore. %package -n python3-bookstore Summary: Storage Workflows for Notebooks Provides: python-bookstore BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-bookstore # bookstore :books: [![Documentation Status](https://readthedocs.org/projects/bookstore/badge/?version=latest)](https://bookstore.readthedocs.io/en/latest/?badge=latest) [![Build Status](https://travis-ci.org/nteract/bookstore.svg?branch=master)](https://travis-ci.org/nteract/bookstore) [![CircleCI](https://circleci.com/gh/nteract/bookstore.svg?style=shield)](https://circleci.com/gh/nteract/bookstore) [![Codecov](https://codecov.io/gh/nteract/bookstore/branch/master/graph/badge.svg)](https://codecov.io/gh/nteract/bookstore) **bookstore** :books: provides tooling and workflow recommendations for storing :cd:, scheduling :calendar:, and publishing :book: notebooks. The full documentation is hosted on [ReadTheDocs](https://bookstore.readthedocs.io). ## How does bookstore work ### Automatic Notebook Versioning Every *save* of a notebook creates an *immutable copy* of the notebook on object storage. To simplify implementation, we currently rely on S3 as the object store, using [versioned buckets](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html). ### Storage Paths All notebooks are archived to a single versioned S3 bucket with specific prefixes denoting the lifecycle of the notebook: - `/workspace` - where users edit - `/published` - public notebooks (to an organization) Each notebook path is a namespace that an external service ties into the schedule. We archive off versions, keeping the path intact (until a user changes them). | Prefix | Intent | |-----------------------------------------|------------------------| | `/workspace/kylek/notebooks/mine.ipynb` | Notebook in “draft” | | `/published/kylek/notebooks/mine.ipynb` | Current published copy | Scheduled notebooks will also be referred to by the notebook key. In addition, we'll need to be able to surface version IDs as well. ### Transitioning to this Storage Plan Since most people are on a regular filesystem, we'll start with writing to the `/workspace` prefix as Archival Storage (writing on save using a `post_save_hook` for a Jupyter contents manager). ### Publishing The bookstore publishing endpoint is a `serverextension` to the classic Jupyter server. This means you will need to explicitly enable the `serverextension` to use the endpoint. To do so, run: jupyter serverextension enable --py bookstore To enable it only for the current environment, run: jupyter serverextension enable --py bookstore --sys-prefix ## Installation **bookstore** requires Python 3.6 or higher. Note: Supports installation on Jupyter servers running Python 3.6 and above. Your notebooks can still be run in Python 2 or Python 3. 1. Clone this repo. 2. At the repo's root, enter in the Terminal: `python3 -m pip install .` (Tip: don't forget the dot at the end of the command) ## Configuration ```python # jupyter config # At ~/.jupyter/jupyter_notebook_config.py for user installs on macOS # See https://jupyter.readthedocs.io/en/latest/projects/jupyter-directories.html for other places to plop this from bookstore import BookstoreContentsArchiver c.NotebookApp.contents_manager_class = BookstoreContentsArchiver # All Bookstore settings are centralized on one config object so you don't have to configure it for each class c.BookstoreSettings.workspace_prefix = "/workspace/kylek/notebooks" c.BookstoreSettings.published_prefix = "/published/kylek/notebooks" c.BookstoreSettings.s3_bucket = "" # Note: if bookstore is used from an EC2 instance with the right IAM role, you don't # have to specify these c.BookstoreSettings.s3_access_key_id = c.BookstoreSettings.s3_secret_access_key = ``` ## Developing If you are developing on bookstore you will want to run the ci tests locally and to make releases. Use [CONTRIBUTING.md](./CONTRIBUTING.md) to learn more about contributing. Use [running_ci_locally.md](./running_ci_locally.md) to learn more about running ci tests locally. Use [running_python_tests.md](./running_python_tests.md) to learn about running tests locally. Use [RELEASING.md](./RELEASING.md) to learn more about releasing bookstore. %package help Summary: Development documents and examples for bookstore Provides: python3-bookstore-doc %description help # bookstore :books: [![Documentation Status](https://readthedocs.org/projects/bookstore/badge/?version=latest)](https://bookstore.readthedocs.io/en/latest/?badge=latest) [![Build Status](https://travis-ci.org/nteract/bookstore.svg?branch=master)](https://travis-ci.org/nteract/bookstore) [![CircleCI](https://circleci.com/gh/nteract/bookstore.svg?style=shield)](https://circleci.com/gh/nteract/bookstore) [![Codecov](https://codecov.io/gh/nteract/bookstore/branch/master/graph/badge.svg)](https://codecov.io/gh/nteract/bookstore) **bookstore** :books: provides tooling and workflow recommendations for storing :cd:, scheduling :calendar:, and publishing :book: notebooks. The full documentation is hosted on [ReadTheDocs](https://bookstore.readthedocs.io). ## How does bookstore work ### Automatic Notebook Versioning Every *save* of a notebook creates an *immutable copy* of the notebook on object storage. To simplify implementation, we currently rely on S3 as the object store, using [versioned buckets](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html). ### Storage Paths All notebooks are archived to a single versioned S3 bucket with specific prefixes denoting the lifecycle of the notebook: - `/workspace` - where users edit - `/published` - public notebooks (to an organization) Each notebook path is a namespace that an external service ties into the schedule. We archive off versions, keeping the path intact (until a user changes them). | Prefix | Intent | |-----------------------------------------|------------------------| | `/workspace/kylek/notebooks/mine.ipynb` | Notebook in “draft” | | `/published/kylek/notebooks/mine.ipynb` | Current published copy | Scheduled notebooks will also be referred to by the notebook key. In addition, we'll need to be able to surface version IDs as well. ### Transitioning to this Storage Plan Since most people are on a regular filesystem, we'll start with writing to the `/workspace` prefix as Archival Storage (writing on save using a `post_save_hook` for a Jupyter contents manager). ### Publishing The bookstore publishing endpoint is a `serverextension` to the classic Jupyter server. This means you will need to explicitly enable the `serverextension` to use the endpoint. To do so, run: jupyter serverextension enable --py bookstore To enable it only for the current environment, run: jupyter serverextension enable --py bookstore --sys-prefix ## Installation **bookstore** requires Python 3.6 or higher. Note: Supports installation on Jupyter servers running Python 3.6 and above. Your notebooks can still be run in Python 2 or Python 3. 1. Clone this repo. 2. At the repo's root, enter in the Terminal: `python3 -m pip install .` (Tip: don't forget the dot at the end of the command) ## Configuration ```python # jupyter config # At ~/.jupyter/jupyter_notebook_config.py for user installs on macOS # See https://jupyter.readthedocs.io/en/latest/projects/jupyter-directories.html for other places to plop this from bookstore import BookstoreContentsArchiver c.NotebookApp.contents_manager_class = BookstoreContentsArchiver # All Bookstore settings are centralized on one config object so you don't have to configure it for each class c.BookstoreSettings.workspace_prefix = "/workspace/kylek/notebooks" c.BookstoreSettings.published_prefix = "/published/kylek/notebooks" c.BookstoreSettings.s3_bucket = "" # Note: if bookstore is used from an EC2 instance with the right IAM role, you don't # have to specify these c.BookstoreSettings.s3_access_key_id = c.BookstoreSettings.s3_secret_access_key = ``` ## Developing If you are developing on bookstore you will want to run the ci tests locally and to make releases. Use [CONTRIBUTING.md](./CONTRIBUTING.md) to learn more about contributing. Use [running_ci_locally.md](./running_ci_locally.md) to learn more about running ci tests locally. Use [running_python_tests.md](./running_python_tests.md) to learn about running tests locally. Use [RELEASING.md](./RELEASING.md) to learn more about releasing bookstore. %prep %autosetup -n bookstore-2.5.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-bookstore -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Sun Apr 23 2023 Python_Bot - 2.5.1-1 - Package Spec generated