From e0e51e1850aecb86749041954fc9ab964d177755 Mon Sep 17 00:00:00 2001 From: David Garcia Date: Mon, 28 Sep 2020 17:53:14 +0100 Subject: [PATCH] Docs automation Update README-dev.rst Prefer warnings Updated CHANGELOG --- .github/workflows/pages.yml | 34 + .gitignore | 6 +- README-dev.rst | 36 + changelog/README.md | 15 +- docs.yaml | 67 -- docs/Makefile | 76 ++ docs/_utils/deploy.sh | 15 + docs/_utils/doxygen.sh | 9 + docs/_utils/multiversion.sh | 5 + docs/_utils/redirect.sh | 13 + docs/_utils/redirections.yaml | 1 + docs/_utils/setup.sh | 16 + docs/poetry.lock | 822 ++++++++++++++++++ docs/pyproject.toml | 23 + docs/source/api.rst | 3 + docs/source/changelog | 1 + docs/source/conf.py | 291 +++++++ docs/source/faq | 1 + docs/source/index.rst | 100 +++ docs/source/installation.md | 76 ++ docs/source/manual | 1 + docs/source/upgrade_guide | 1 + doxyfile | 4 +- manual/README.md | 37 +- manual/object_mapper/.nav | 3 - manual/object_mapper/README.md | 10 + manual/statements/.nav | 4 - manual/statements/README.md | 11 + upgrade_guide/README.md | 16 +- upgrade_guide/migrating_from_astyanax/.nav | 3 - .../migrating_from_astyanax/README.md | 10 + 31 files changed, 1616 insertions(+), 94 deletions(-) create mode 100644 .github/workflows/pages.yml create mode 100644 README-dev.rst delete mode 100644 docs.yaml create mode 100644 docs/Makefile create mode 100755 docs/_utils/deploy.sh create mode 100755 docs/_utils/doxygen.sh create mode 100755 docs/_utils/multiversion.sh create mode 100755 docs/_utils/redirect.sh create mode 100644 docs/_utils/redirections.yaml create mode 100755 docs/_utils/setup.sh create mode 100644 docs/poetry.lock create mode 100644 docs/pyproject.toml create mode 100644 docs/source/api.rst create mode 120000 docs/source/changelog create mode 100644 docs/source/conf.py create mode 120000 docs/source/faq create mode 100644 docs/source/index.rst create mode 100644 docs/source/installation.md create mode 120000 docs/source/manual create mode 120000 docs/source/upgrade_guide delete mode 100644 manual/object_mapper/.nav delete mode 100644 manual/statements/.nav delete mode 100644 upgrade_guide/migrating_from_astyanax/.nav diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml new file mode 100644 index 00000000000..a0859c3da6c --- /dev/null +++ b/.github/workflows/pages.yml @@ -0,0 +1,34 @@ +name: "CI Docs" + +on: + push: + branches: + - latest + tags: + - '**' +jobs: + release: + name: Build + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + persist-credentials: false + fetch-depth: 0 + - name: Set up Python + uses: actions/setup-python@v1 + with: + python-version: 3.7 + - name: Set up Doxygen + run: sudo apt-get install doxygen + - name: Build Sphinx docs + run: | + export PATH=$PATH:~/.local/bin + cd docs + make multiversion + - name: Deploy + run : ./docs/_utils/deploy.sh + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + LATEST_VERSION: latest diff --git a/.gitignore b/.gitignore index 7cf0248307f..b631491efeb 100644 --- a/.gitignore +++ b/.gitignore @@ -4,8 +4,10 @@ testing/ .settings .classpath .project -doc -docs +docs/_build +docs/_source +html +latex notes .DS_Store diff --git a/README-dev.rst b/README-dev.rst new file mode 100644 index 00000000000..e647c7ade6b --- /dev/null +++ b/README-dev.rst @@ -0,0 +1,36 @@ +Building the Docs +================= + +*Note*: The docs build instructions have been tested with Sphinx 2.4.4 and Fedora 32. + +To build and preview the docs locally, you will need to install the following software: + +- `Git `_ +- `Python 3.7 `_ +- `pip `_ +- `doxygen `_ + +Run the following command to build the docs. + +.. code:: console + + cd docs + make preview + +Once the command completes processing, open http://127.0.0.1:5500/ with your preferred browser. + +Building multiple documentation versions +======================================== + +Build Sphinx docs for all the versions defined in ``docs/conf.py``. + +The multiverson command does not build doxygen docs. + +.. code:: console + + cd docs + make multiversion + +Then, open ``docs/_build/dirhtml//index.html`` with your preferred browser. + +**NOTE:** If you only can see docs generated for the master branch, try to run ``git fetch --tags`` to download the latest tags from remote. diff --git a/changelog/README.md b/changelog/README.md index 45cefceff26..d5a9b7d0f38 100644 --- a/changelog/README.md +++ b/changelog/README.md @@ -5,17 +5,17 @@ 3.x versions get published. --> -## 3.10.1 +### 3.10.1 - [bug] JAVA-2857: Fix NPE when built statements without parameters are logged at TRACE level. - [bug] JAVA-2843: Successfully parse DSE table schema in OSS driver. -## 3.10.0 +### 3.10.0 - [improvement] JAVA-2676: Don't reschedule flusher after empty runs - [new feature] JAVA-2772: Support new protocol v5 message format -## 3.9.0 +### 3.9.0 - [bug] JAVA-2627: Avoid logging error message including stack trace in request handler. - [new feature] JAVA-2706: Add now_in_seconds to protocol v5 query messages. @@ -23,7 +23,7 @@ - [improvement] JAVA-2702: Transient Replication Support for Cassandra® 4.0 -## 3.8.0 +### 3.8.0 - [new feature] JAVA-2356: Support for DataStax Cloud API. - [improvement] JAVA-2483: Allow to provide secure bundle via URL. @@ -48,10 +48,9 @@ - [bug] JAVA-2174: Metadata.needsQuote should accept empty strings. - [bug] JAVA-2193: Fix flaky tests in WarningsTest. - ### 3.7.0 -- [improvement] JAVA-2025: Include exception message in Abstract\*Codec.accepts(null). +- [improvement] JAVA-2025: Include exception message in Abstract*Codec.accepts(null). - [improvement] JAVA-1980: Use covariant return types in RemoteEndpointAwareJdkSSLOptions.Builder methods. - [documentation] JAVA-2062: Document frozen collection preference with Mapper. - [bug] JAVA-2071: Fix NPE in ArrayBackedRow.toString(). @@ -80,13 +79,13 @@ - [bug] JAVA-1924: StatementWrapper setters should return the wrapping statement. - [new feature] JAVA-1532: Add Codec support for Java 8's LocalDateTime and ZoneId. - [improvement] JAVA-1786: Use Google code formatter. -- [bug] JAVA-1871: Change LOCAL\_SERIAL.isDCLocal() to return true. +- [bug] JAVA-1871: Change LOCAL_SERIAL.isDCLocal() to return true. - [documentation] JAVA-1902: Clarify unavailable & request error in DefaultRetryPolicy javadoc. - [new feature] JAVA-1903: Add WhiteListPolicy.ofHosts. - [bug] JAVA-1928: Fix GuavaCompatibility for Guava 26. - [bug] JAVA-1935: Add null check in QueryConsistencyException.getHost. - [improvement] JAVA-1771: Send driver name and version in STARTUP message. -- [improvement] JAVA-1388: Add dynamic port discovery for system.peers\_v2. +- [improvement] JAVA-1388: Add dynamic port discovery for system.peers_v2. - [documentation] JAVA-1810: Note which setters are not propagated to PreparedStatement. - [bug] JAVA-1944: Surface Read and WriteFailureException to RetryPolicy. - [bug] JAVA-1211: Fix NPE in cluster close when cluster init fails. diff --git a/docs.yaml b/docs.yaml deleted file mode 100644 index b38b86397d7..00000000000 --- a/docs.yaml +++ /dev/null @@ -1,67 +0,0 @@ -title: Java Driver for Apache Cassandra -summary: High performance Java client for Apache Cassandra -homepage: http://datastax.github.io/java-driver/ -theme: datastax -sections: - - title: Manual - prefix: /manual - sources: - - type: markdown - files: 'manual/**/*.md' - # The 'manual' section was called 'features' in older releases. Leave both - # definitions and Documentor will pick up whichever exists and ignore the - # other. - - title: Features - prefix: /features - sources: - - type: markdown - files: 'features/**/*.md' - - title: Changelog - prefix: /changelog - sources: - - type: markdown - files: 'changelog/**/*.md' - - title: Upgrading - prefix: /upgrade_guide - sources: - - type: markdown - files: 'upgrade_guide/**/*.md' - - title: FAQ - prefix: /faq - sources: - - type: markdown - files: 'faq/**/*.md' -links: - - title: Code - href: https://github.com/datastax/java-driver/ - - title: Docs - href: http://docs.datastax.com/en/developer/java-driver/ - - title: Issues - href: https://datastax-oss.atlassian.net/browse/JAVA/ - - title: Mailing List - href: https://groups.google.com/a/lists.datastax.com/forum/#!forum/java-driver-user - - title: Releases - href: http://downloads.datastax.com/java-driver/ -api_docs: - 3.3: http://docs.datastax.com/en/drivers/java/3.3 - 4.0-alpha: http://docs.datastax.com/en/drivers/java/4.0 - 3.2: http://docs.datastax.com/en/drivers/java/3.2 - 3.1: http://docs.datastax.com/en/drivers/java/3.1 - 3.0: http://docs.datastax.com/en/drivers/java/3.0 - 2.1: http://docs.datastax.com/en/drivers/java/2.1 - 2.0: http://docs.datastax.com/en/drivers/java/2.0 -versions: - - name: '3.3' - ref: '3.3.0' - - name: '4.0-alpha' - ref: '9f0edeb' - - name: '3.2' - ref: '3.2_docfixes' - - name: '3.1' - ref: '3.1_docfixes' - - name: '3.0' - ref: '3.0_docfixes' - - name: '2.1' - ref: '2.1.10.3' - - name: '2.0' - ref: '2.0.12.3' diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 00000000000..c01ef58a56d --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,76 @@ +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = poetry run sphinx-build +PAPER = +BUILDDIR = _build +SOURCE_DIR = _source + +# Internal variables. +PAPEROPT_a4 = -D latex_paper_size=a4 +PAPEROPT_letter = -D latex_paper_size=letter +ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) $(SOURCE_DIR) +# the i18n builder cannot share the environment and doctrees with the others +I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . + +.PHONY: all +all: dirhtml + +.PHONY: pristine +pristine: clean + git clean -dfX + +.PHONY: setup +setup: + ./_utils/setup.sh + cp -Tr source $(SOURCE_DIR) + cd $(SOURCE_DIR) && find -name README.md -execdir mv '{}' index.md ';' +.PHONY: clean +clean: + rm -rf $(BUILDDIR)/* + rm -rf $(SOURCE_DIR)/* + +.PHONY: preview +preview: setup + cd .. && ./docs/_utils/doxygen.sh + poetry run sphinx-autobuild -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml --port 5500 + +.PHONY: dirhtml +dirhtml: setup + $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." + +.PHONY: singlehtml +singlehtml: setup + $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml + @echo + @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." + +.PHONY: epub +epub: setup + $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub + @echo + @echo "Build finished. The epub file is in $(BUILDDIR)/epub." + +.PHONY: epub3 +epub3: setup + $(SPHINXBUILD) -b epub3 $(ALLSPHINXOPTS) $(BUILDDIR)/epub3 + @echo + @echo "Build finished. The epub3 file is in $(BUILDDIR)/epub3." + +.PHONY: dummy +dummy: setup + $(SPHINXBUILD) -b dummy $(ALLSPHINXOPTS) $(BUILDDIR)/dummy + @echo + @echo "Build finished. Dummy builder generates no files." + +.PHONY: linkcheck +linkcheck: setup + $(SPHINXBUILD) -b linkcheck $(SOURCE_DIR) $(BUILDDIR)/linkcheck + +.PHONY: multiversion +multiversion: setup + poetry run ./_utils/multiversion.sh + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." + diff --git a/docs/_utils/deploy.sh b/docs/_utils/deploy.sh new file mode 100755 index 00000000000..77321c192f2 --- /dev/null +++ b/docs/_utils/deploy.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Clone repo +git clone "https://x-access-token:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git" --branch gh-pages --single-branch gh-pages +cp -r docs/_build/dirhtml/* gh-pages +# Redirections +./docs/_utils/redirect.sh > gh-pages/index.html +# Deploy +cd gh-pages +touch .nojekyll +git config --local user.email "action@scylladb.com" +git config --local user.name "GitHub Action" +git add . +git commit -m "Publish docs" || true +git push origin gh-pages --force diff --git a/docs/_utils/doxygen.sh b/docs/_utils/doxygen.sh new file mode 100755 index 00000000000..d739cf81997 --- /dev/null +++ b/docs/_utils/doxygen.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +OUTPUT_DIR="docs/_build/dirhtml/api" +if [[ "$SPHINX_MULTIVERSION_OUTPUTDIR" != "" ]]; then + OUTPUT_DIR="$SPHINX_MULTIVERSION_OUTPUTDIR/api" + echo "HTML_OUTPUT = $OUTPUT_DIR" >> doxyfile +fi +mkdir -p "$OUTPUT_DIR" +doxygen doxyfile diff --git a/docs/_utils/multiversion.sh b/docs/_utils/multiversion.sh new file mode 100755 index 00000000000..ae56ca3574e --- /dev/null +++ b/docs/_utils/multiversion.sh @@ -0,0 +1,5 @@ +#! /bin/bash + +cd .. && sphinx-multiversion docs/source docs/_build/dirhtml \ + --pre-build './docs/_utils/doxygen.sh' \ + --pre-build "find docs/source -name README.md -execdir mv '{}' index.md ';'" diff --git a/docs/_utils/redirect.sh b/docs/_utils/redirect.sh new file mode 100755 index 00000000000..2721ca034fe --- /dev/null +++ b/docs/_utils/redirect.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +cat <<- _EOF_ + + + + Redirecting to Driver + + + + + +_EOF_ diff --git a/docs/_utils/redirections.yaml b/docs/_utils/redirections.yaml new file mode 100644 index 00000000000..36a73f25baa --- /dev/null +++ b/docs/_utils/redirections.yaml @@ -0,0 +1 @@ +api: /api/classes.html diff --git a/docs/_utils/setup.sh b/docs/_utils/setup.sh new file mode 100755 index 00000000000..5c08b967d2e --- /dev/null +++ b/docs/_utils/setup.sh @@ -0,0 +1,16 @@ +#! /bin/bash + +if pwd | egrep -q '\s'; then + echo "Working directory name contains one or more spaces." + exit 1 +fi + +which python3 || { echo "Failed to find python3. Try installing Python for your operative system: https://www.python.org/downloads/" && exit 1; } +# install pipx +which pipx || python3 -m pip install --user pipx +python3 -m pipx ensurepath + +# install poetry +which poetry || pipx install poetry +poetry --version || { echo "Failed to find or install poetry. Try installing it manually: https://python-poetry.org/docs/#installation" && exit 1; } +poetry install diff --git a/docs/poetry.lock b/docs/poetry.lock new file mode 100644 index 00000000000..6c2826388dd --- /dev/null +++ b/docs/poetry.lock @@ -0,0 +1,822 @@ +[[package]] +category = "main" +description = "A configurable sidebar-enabled Sphinx theme" +name = "alabaster" +optional = false +python-versions = "*" +version = "0.7.12" + +[[package]] +category = "main" +description = "An unobtrusive argparse wrapper with natural syntax" +name = "argh" +optional = false +python-versions = "*" +version = "0.26.2" + +[[package]] +category = "dev" +description = "Atomic file writes." +marker = "sys_platform == \"win32\"" +name = "atomicwrites" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "1.4.0" + +[[package]] +category = "dev" +description = "Classes Without Boilerplate" +name = "attrs" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "19.3.0" + +[package.extras] +azure-pipelines = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "pytest-azurepipelines"] +dev = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "sphinx", "pre-commit"] +docs = ["sphinx", "zope.interface"] +tests = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] + +[[package]] +category = "main" +description = "Internationalization utilities" +name = "babel" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "2.8.0" + +[package.dependencies] +pytz = ">=2015.7" + +[[package]] +category = "main" +description = "Python package for providing Mozilla's CA Bundle." +name = "certifi" +optional = false +python-versions = "*" +version = "2020.6.20" + +[[package]] +category = "main" +description = "Universal encoding detector for Python 2 and 3" +name = "chardet" +optional = false +python-versions = "*" +version = "3.0.4" + +[[package]] +category = "main" +description = "Cross-platform colored terminal text." +marker = "sys_platform == \"win32\"" +name = "colorama" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "0.4.3" + +[[package]] +category = "main" +description = "Python parser for the CommonMark Markdown spec" +name = "commonmark" +optional = false +python-versions = "*" +version = "0.9.1" + +[package.extras] +test = ["flake8 (3.7.8)", "hypothesis (3.55.3)"] + +[[package]] +category = "main" +description = "Docutils -- Python Documentation Utilities" +name = "docutils" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "0.16" + +[[package]] +category = "main" +description = "Internationalized Domain Names in Applications (IDNA)" +name = "idna" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "2.10" + +[[package]] +category = "main" +description = "Getting image size from png/jpeg/jpeg2000/gif file" +name = "imagesize" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "1.2.0" + +[[package]] +category = "dev" +description = "Read metadata from Python packages" +marker = "python_version < \"3.8\"" +name = "importlib-metadata" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +version = "1.7.0" + +[package.dependencies] +zipp = ">=0.5" + +[package.extras] +docs = ["sphinx", "rst.linker"] +testing = ["packaging", "pep517", "importlib-resources (>=1.3)"] + +[[package]] +category = "main" +description = "A very fast and expressive template engine." +name = "jinja2" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "2.11.2" + +[package.dependencies] +MarkupSafe = ">=0.23" + +[package.extras] +i18n = ["Babel (>=0.8)"] + +[[package]] +category = "main" +description = "Python LiveReload is an awesome tool for web developers" +name = "livereload" +optional = false +python-versions = "*" +version = "2.6.2" + +[package.dependencies] +six = "*" + +[package.dependencies.tornado] +python = ">=2.8" +version = "*" + +[[package]] +category = "main" +description = "Safely add untrusted strings to HTML/XML markup." +name = "markupsafe" +optional = false +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" +version = "1.1.1" + +[[package]] +category = "dev" +description = "More routines for operating on iterables, beyond itertools" +name = "more-itertools" +optional = false +python-versions = ">=3.5" +version = "8.4.0" + +[[package]] +category = "main" +description = "Core utilities for Python packages" +name = "packaging" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "20.4" + +[package.dependencies] +pyparsing = ">=2.0.2" +six = "*" + +[[package]] +category = "main" +description = "File system general utilities" +name = "pathtools" +optional = false +python-versions = "*" +version = "0.1.2" + +[[package]] +category = "dev" +description = "plugin and hook calling mechanisms for python" +name = "pluggy" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "0.13.1" + +[package.dependencies] +[package.dependencies.importlib-metadata] +python = "<3.8" +version = ">=0.12" + +[package.extras] +dev = ["pre-commit", "tox"] + +[[package]] +category = "main" +description = "Utility that helps with local TCP ports managment. It can find an unused TCP localhost port and remember the association." +name = "port-for" +optional = false +python-versions = "*" +version = "0.3.1" + +[[package]] +category = "dev" +description = "library with cross-python path, ini-parsing, io, code, log facilities" +name = "py" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "1.9.0" + +[[package]] +category = "main" +description = "Pygments is a syntax highlighting package written in Python." +name = "pygments" +optional = false +python-versions = "*" +version = "2.2.0" + +[[package]] +category = "main" +description = "Python parsing module" +name = "pyparsing" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +version = "2.4.7" + +[[package]] +category = "dev" +description = "pytest: simple powerful testing with Python" +name = "pytest" +optional = false +python-versions = ">=3.5" +version = "5.4.3" + +[package.dependencies] +atomicwrites = ">=1.0" +attrs = ">=17.4.0" +colorama = "*" +more-itertools = ">=4.0.0" +packaging = "*" +pluggy = ">=0.12,<1.0" +py = ">=1.5.0" +wcwidth = "*" + +[package.dependencies.importlib-metadata] +python = "<3.8" +version = ">=0.12" + +[package.extras] +checkqa-mypy = ["mypy (v0.761)"] +testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] + +[[package]] +category = "main" +description = "World timezone definitions, modern and historical" +name = "pytz" +optional = false +python-versions = "*" +version = "2020.1" + +[[package]] +category = "main" +description = "YAML parser and emitter for Python" +name = "pyyaml" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "5.3.1" + +[[package]] +category = "main" +description = "A docutils-compatibility bridge to CommonMark, enabling you to write CommonMark inside of Docutils & Sphinx projects." +name = "recommonmark" +optional = false +python-versions = "*" +version = "0.5.0" + +[package.dependencies] +commonmark = ">=0.7.3" +docutils = ">=0.11" +sphinx = ">=1.3.1" + +[[package]] +category = "main" +description = "Python HTTP for Humans." +name = "requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "2.24.0" + +[package.dependencies] +certifi = ">=2017.4.17" +chardet = ">=3.0.2,<4" +idna = ">=2.5,<3" +urllib3 = ">=1.21.1,<1.25.0 || >1.25.0,<1.25.1 || >1.25.1,<1.26" + +[package.extras] +security = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)"] +socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7)", "win-inet-pton"] + +[[package]] +category = "main" +description = "Python 2 and 3 compatibility utilities" +name = "six" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +version = "1.15.0" + +[[package]] +category = "main" +description = "This package provides 26 stemmers for 25 languages generated from Snowball algorithms." +name = "snowballstemmer" +optional = false +python-versions = "*" +version = "2.0.0" + +[[package]] +category = "main" +description = "Python documentation generator" +name = "sphinx" +optional = false +python-versions = ">=3.5" +version = "2.4.4" + +[package.dependencies] +Jinja2 = ">=2.3" +Pygments = ">=2.0" +alabaster = ">=0.7,<0.8" +babel = ">=1.3,<2.0 || >2.0" +colorama = ">=0.3.5" +docutils = ">=0.12" +imagesize = "*" +packaging = "*" +requests = ">=2.5.0" +setuptools = "*" +snowballstemmer = ">=1.1" +sphinxcontrib-applehelp = "*" +sphinxcontrib-devhelp = "*" +sphinxcontrib-htmlhelp = "*" +sphinxcontrib-jsmath = "*" +sphinxcontrib-qthelp = "*" +sphinxcontrib-serializinghtml = "*" + +[package.extras] +docs = ["sphinxcontrib-websupport"] +test = ["pytest (<5.3.3)", "pytest-cov", "html5lib", "flake8 (>=3.5.0)", "flake8-import-order", "mypy (>=0.761)", "docutils-stubs"] + +[[package]] +category = "main" +description = "Watch a Sphinx directory and rebuild the documentation when a change is detected. Also includes a livereload enabled web server." +name = "sphinx-autobuild" +optional = false +python-versions = "*" +version = "0.7.1" + +[package.dependencies] +PyYAML = ">=3.10" +argh = ">=0.24.1" +livereload = ">=2.3.0" +pathtools = ">=0.1.2" +port-for = "0.3.1" +tornado = ">=3.2" +watchdog = ">=0.7.1" + +[[package]] +category = "main" +description = "Add a copy button to each of your code cells." +name = "sphinx-copybutton" +optional = false +python-versions = "*" +version = "0.2.12" + +[package.dependencies] +sphinx = ">=1.8" + +[package.extras] +code_style = ["flake8 (>=3.7.0,<3.8.0)", "black", "pre-commit (1.17.0)"] + +[[package]] +category = "main" +description = "Add support for multiple versions to sphinx" +name = "sphinx-multiversion" +optional = false +python-versions = "*" +version = "0.2.3" + +[package.dependencies] +sphinx = ">=2.1" + +[[package]] +category = "main" +description = "Add support for multiple versions to sphinx" +name = "sphinx-multiversion-scylla" +optional = false +python-versions = "*" +version = "0.2.4" + +[package.dependencies] +sphinx = ">=2.1" + +[[package]] +category = "main" +description = "A Sphinx Theme for ScyllaDB projects documentation" +name = "sphinx-scylladb-theme" +optional = false +python-versions = ">=3.7,<4.0" +version = "0.1.9" + +[package.dependencies] +Sphinx = ">=2.4.4,<3.0.0" +pyyaml = ">=5.3,<6.0" +sphinx-copybutton = ">=0.2.8,<0.3.0" +sphinx-multiversion = "0.2.3" +sphinx-tabs = ">=1.1.13,<2.0.0" + +[[package]] +category = "main" +description = "Sitemap generator for Sphinx" +name = "sphinx-sitemap" +optional = false +python-versions = "*" +version = "2.1.0" + +[package.dependencies] +six = "*" +sphinx = ">=1.2" + +[[package]] +category = "main" +description = "Tab views for Sphinx" +name = "sphinx-tabs" +optional = false +python-versions = "*" +version = "1.1.13" + +[package.dependencies] +sphinx = ">=1.4" + +[[package]] +category = "main" +description = "sphinxcontrib-applehelp is a sphinx extension which outputs Apple help books" +name = "sphinxcontrib-applehelp" +optional = false +python-versions = ">=3.5" +version = "1.0.2" + +[package.extras] +lint = ["flake8", "mypy", "docutils-stubs"] +test = ["pytest"] + +[[package]] +category = "main" +description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document." +name = "sphinxcontrib-devhelp" +optional = false +python-versions = ">=3.5" +version = "1.0.2" + +[package.extras] +lint = ["flake8", "mypy", "docutils-stubs"] +test = ["pytest"] + +[[package]] +category = "main" +description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" +name = "sphinxcontrib-htmlhelp" +optional = false +python-versions = ">=3.5" +version = "1.0.3" + +[package.extras] +lint = ["flake8", "mypy", "docutils-stubs"] +test = ["pytest", "html5lib"] + +[[package]] +category = "main" +description = "A sphinx extension which renders display math in HTML via JavaScript" +name = "sphinxcontrib-jsmath" +optional = false +python-versions = ">=3.5" +version = "1.0.1" + +[package.extras] +test = ["pytest", "flake8", "mypy"] + +[[package]] +category = "main" +description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document." +name = "sphinxcontrib-qthelp" +optional = false +python-versions = ">=3.5" +version = "1.0.3" + +[package.extras] +lint = ["flake8", "mypy", "docutils-stubs"] +test = ["pytest"] + +[[package]] +category = "main" +description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)." +name = "sphinxcontrib-serializinghtml" +optional = false +python-versions = ">=3.5" +version = "1.1.4" + +[package.extras] +lint = ["flake8", "mypy", "docutils-stubs"] +test = ["pytest"] + +[[package]] +category = "main" +description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." +name = "tornado" +optional = false +python-versions = ">= 3.5" +version = "6.0.4" + +[[package]] +category = "main" +description = "HTTP library with thread-safe connection pooling, file post, and more." +name = "urllib3" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" +version = "1.25.10" + +[package.extras] +brotli = ["brotlipy (>=0.6.0)"] +secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "pyOpenSSL (>=0.14)", "ipaddress"] +socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7,<2.0)"] + +[[package]] +category = "main" +description = "Filesystem events monitoring" +name = "watchdog" +optional = false +python-versions = "*" +version = "0.10.3" + +[package.dependencies] +pathtools = ">=0.1.1" + +[package.extras] +watchmedo = ["PyYAML (>=3.10)", "argh (>=0.24.1)"] + +[[package]] +category = "dev" +description = "Measures the displayed width of unicode strings in a terminal" +name = "wcwidth" +optional = false +python-versions = "*" +version = "0.2.5" + +[[package]] +category = "dev" +description = "Backport of pathlib-compatible object wrapper for zip files" +marker = "python_version < \"3.8\"" +name = "zipp" +optional = false +python-versions = ">=3.6" +version = "3.1.0" + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] +testing = ["jaraco.itertools", "func-timeout"] + +[metadata] +content-hash = "cf1a2cd671a207948f537aa0b005efb04395998ac6ea7e1beb8e8430ea5b6d75" +python-versions = "^3.7" + +[metadata.files] +alabaster = [ + {file = "alabaster-0.7.12-py2.py3-none-any.whl", hash = "sha256:446438bdcca0e05bd45ea2de1668c1d9b032e1a9154c2c259092d77031ddd359"}, + {file = "alabaster-0.7.12.tar.gz", hash = "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02"}, +] +argh = [ + {file = "argh-0.26.2-py2.py3-none-any.whl", hash = "sha256:a9b3aaa1904eeb78e32394cd46c6f37ac0fb4af6dc488daa58971bdc7d7fcaf3"}, + {file = "argh-0.26.2.tar.gz", hash = "sha256:e9535b8c84dc9571a48999094fda7f33e63c3f1b74f3e5f3ac0105a58405bb65"}, +] +atomicwrites = [ + {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, + {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, +] +attrs = [ + {file = "attrs-19.3.0-py2.py3-none-any.whl", hash = "sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c"}, + {file = "attrs-19.3.0.tar.gz", hash = "sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72"}, +] +babel = [ + {file = "Babel-2.8.0-py2.py3-none-any.whl", hash = "sha256:d670ea0b10f8b723672d3a6abeb87b565b244da220d76b4dba1b66269ec152d4"}, + {file = "Babel-2.8.0.tar.gz", hash = "sha256:1aac2ae2d0d8ea368fa90906567f5c08463d98ade155c0c4bfedd6a0f7160e38"}, +] +certifi = [ + {file = "certifi-2020.6.20-py2.py3-none-any.whl", hash = "sha256:8fc0819f1f30ba15bdb34cceffb9ef04d99f420f68eb75d901e9560b8749fc41"}, + {file = "certifi-2020.6.20.tar.gz", hash = "sha256:5930595817496dd21bb8dc35dad090f1c2cd0adfaf21204bf6732ca5d8ee34d3"}, +] +chardet = [ + {file = "chardet-3.0.4-py2.py3-none-any.whl", hash = "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"}, + {file = "chardet-3.0.4.tar.gz", hash = "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae"}, +] +colorama = [ + {file = "colorama-0.4.3-py2.py3-none-any.whl", hash = "sha256:7d73d2a99753107a36ac6b455ee49046802e59d9d076ef8e47b61499fa29afff"}, + {file = "colorama-0.4.3.tar.gz", hash = "sha256:e96da0d330793e2cb9485e9ddfd918d456036c7149416295932478192f4436a1"}, +] +commonmark = [ + {file = "commonmark-0.9.1-py2.py3-none-any.whl", hash = "sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9"}, + {file = "commonmark-0.9.1.tar.gz", hash = "sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60"}, +] +docutils = [ + {file = "docutils-0.16-py2.py3-none-any.whl", hash = "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af"}, + {file = "docutils-0.16.tar.gz", hash = "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc"}, +] +idna = [ + {file = "idna-2.10-py2.py3-none-any.whl", hash = "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0"}, + {file = "idna-2.10.tar.gz", hash = "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6"}, +] +imagesize = [ + {file = "imagesize-1.2.0-py2.py3-none-any.whl", hash = "sha256:6965f19a6a2039c7d48bca7dba2473069ff854c36ae6f19d2cde309d998228a1"}, + {file = "imagesize-1.2.0.tar.gz", hash = "sha256:b1f6b5a4eab1f73479a50fb79fcf729514a900c341d8503d62a62dbc4127a2b1"}, +] +importlib-metadata = [ + {file = "importlib_metadata-1.7.0-py2.py3-none-any.whl", hash = "sha256:dc15b2969b4ce36305c51eebe62d418ac7791e9a157911d58bfb1f9ccd8e2070"}, + {file = "importlib_metadata-1.7.0.tar.gz", hash = "sha256:90bb658cdbbf6d1735b6341ce708fc7024a3e14e99ffdc5783edea9f9b077f83"}, +] +jinja2 = [ + {file = "Jinja2-2.11.2-py2.py3-none-any.whl", hash = "sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035"}, + {file = "Jinja2-2.11.2.tar.gz", hash = "sha256:89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0"}, +] +livereload = [ + {file = "livereload-2.6.2.tar.gz", hash = "sha256:d1eddcb5c5eb8d2ca1fa1f750e580da624c0f7fcb734aa5780dc81b7dcbd89be"}, +] +markupsafe = [ + {file = "MarkupSafe-1.1.1-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161"}, + {file = "MarkupSafe-1.1.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7"}, + {file = "MarkupSafe-1.1.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183"}, + {file = "MarkupSafe-1.1.1-cp27-cp27m-win32.whl", hash = "sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b"}, + {file = "MarkupSafe-1.1.1-cp27-cp27m-win_amd64.whl", hash = "sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e"}, + {file = "MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f"}, + {file = "MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1"}, + {file = "MarkupSafe-1.1.1-cp34-cp34m-macosx_10_6_intel.whl", hash = "sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5"}, + {file = "MarkupSafe-1.1.1-cp34-cp34m-manylinux1_i686.whl", hash = "sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1"}, + {file = "MarkupSafe-1.1.1-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735"}, + {file = "MarkupSafe-1.1.1-cp34-cp34m-win32.whl", hash = "sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21"}, + {file = "MarkupSafe-1.1.1-cp34-cp34m-win_amd64.whl", hash = "sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235"}, + {file = "MarkupSafe-1.1.1-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b"}, + {file = "MarkupSafe-1.1.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f"}, + {file = "MarkupSafe-1.1.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905"}, + {file = "MarkupSafe-1.1.1-cp35-cp35m-win32.whl", hash = "sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1"}, + {file = "MarkupSafe-1.1.1-cp35-cp35m-win_amd64.whl", hash = "sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-win32.whl", hash = "sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-win32.whl", hash = "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-win32.whl", hash = "sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be"}, + {file = "MarkupSafe-1.1.1.tar.gz", hash = "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b"}, +] +more-itertools = [ + {file = "more-itertools-8.4.0.tar.gz", hash = "sha256:68c70cc7167bdf5c7c9d8f6954a7837089c6a36bf565383919bb595efb8a17e5"}, + {file = "more_itertools-8.4.0-py3-none-any.whl", hash = "sha256:b78134b2063dd214000685165d81c154522c3ee0a1c0d4d113c80361c234c5a2"}, +] +packaging = [ + {file = "packaging-20.4-py2.py3-none-any.whl", hash = "sha256:998416ba6962ae7fbd6596850b80e17859a5753ba17c32284f67bfff33784181"}, + {file = "packaging-20.4.tar.gz", hash = "sha256:4357f74f47b9c12db93624a82154e9b120fa8293699949152b22065d556079f8"}, +] +pathtools = [ + {file = "pathtools-0.1.2.tar.gz", hash = "sha256:7c35c5421a39bb82e58018febd90e3b6e5db34c5443aaaf742b3f33d4655f1c0"}, +] +pluggy = [ + {file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"}, + {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"}, +] +port-for = [ + {file = "port-for-0.3.1.tar.gz", hash = "sha256:b16a84bb29c2954db44c29be38b17c659c9c27e33918dec16b90d375cc596f1c"}, +] +py = [ + {file = "py-1.9.0-py2.py3-none-any.whl", hash = "sha256:366389d1db726cd2fcfc79732e75410e5fe4d31db13692115529d34069a043c2"}, + {file = "py-1.9.0.tar.gz", hash = "sha256:9ca6883ce56b4e8da7e79ac18787889fa5206c79dcc67fb065376cd2fe03f342"}, +] +pygments = [ + {file = "Pygments-2.2.0-py2.py3-none-any.whl", hash = "sha256:78f3f434bcc5d6ee09020f92ba487f95ba50f1e3ef83ae96b9d5ffa1bab25c5d"}, + {file = "Pygments-2.2.0.tar.gz", hash = "sha256:dbae1046def0efb574852fab9e90209b23f556367b5a320c0bcb871c77c3e8cc"}, +] +pyparsing = [ + {file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"}, + {file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"}, +] +pytest = [ + {file = "pytest-5.4.3-py3-none-any.whl", hash = "sha256:5c0db86b698e8f170ba4582a492248919255fcd4c79b1ee64ace34301fb589a1"}, + {file = "pytest-5.4.3.tar.gz", hash = "sha256:7979331bfcba207414f5e1263b5a0f8f521d0f457318836a7355531ed1a4c7d8"}, +] +pytz = [ + {file = "pytz-2020.1-py2.py3-none-any.whl", hash = "sha256:a494d53b6d39c3c6e44c3bec237336e14305e4f29bbf800b599253057fbb79ed"}, + {file = "pytz-2020.1.tar.gz", hash = "sha256:c35965d010ce31b23eeb663ed3cc8c906275d6be1a34393a1d73a41febf4a048"}, +] +pyyaml = [ + {file = "PyYAML-5.3.1-cp27-cp27m-win32.whl", hash = "sha256:74809a57b329d6cc0fdccee6318f44b9b8649961fa73144a98735b0aaf029f1f"}, + {file = "PyYAML-5.3.1-cp27-cp27m-win_amd64.whl", hash = "sha256:240097ff019d7c70a4922b6869d8a86407758333f02203e0fc6ff79c5dcede76"}, + {file = "PyYAML-5.3.1-cp35-cp35m-win32.whl", hash = "sha256:4f4b913ca1a7319b33cfb1369e91e50354d6f07a135f3b901aca02aa95940bd2"}, + {file = "PyYAML-5.3.1-cp35-cp35m-win_amd64.whl", hash = "sha256:cc8955cfbfc7a115fa81d85284ee61147059a753344bc51098f3ccd69b0d7e0c"}, + {file = "PyYAML-5.3.1-cp36-cp36m-win32.whl", hash = "sha256:7739fc0fa8205b3ee8808aea45e968bc90082c10aef6ea95e855e10abf4a37b2"}, + {file = "PyYAML-5.3.1-cp36-cp36m-win_amd64.whl", hash = "sha256:69f00dca373f240f842b2931fb2c7e14ddbacd1397d57157a9b005a6a9942648"}, + {file = "PyYAML-5.3.1-cp37-cp37m-win32.whl", hash = "sha256:d13155f591e6fcc1ec3b30685d50bf0711574e2c0dfffd7644babf8b5102ca1a"}, + {file = "PyYAML-5.3.1-cp37-cp37m-win_amd64.whl", hash = "sha256:73f099454b799e05e5ab51423c7bcf361c58d3206fa7b0d555426b1f4d9a3eaf"}, + {file = "PyYAML-5.3.1-cp38-cp38-win32.whl", hash = "sha256:06a0d7ba600ce0b2d2fe2e78453a470b5a6e000a985dd4a4e54e436cc36b0e97"}, + {file = "PyYAML-5.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:95f71d2af0ff4227885f7a6605c37fd53d3a106fcab511b8860ecca9fcf400ee"}, + {file = "PyYAML-5.3.1.tar.gz", hash = "sha256:b8eac752c5e14d3eca0e6dd9199cd627518cb5ec06add0de9d32baeee6fe645d"}, +] +recommonmark = [ + {file = "recommonmark-0.5.0-py2.py3-none-any.whl", hash = "sha256:c85228b9b7aea7157662520e74b4e8791c5eacd375332ec68381b52bf10165be"}, + {file = "recommonmark-0.5.0.tar.gz", hash = "sha256:a520b8d25071a51ae23a27cf6252f2fe387f51bdc913390d83b2b50617f5bb48"}, +] +requests = [ + {file = "requests-2.24.0-py2.py3-none-any.whl", hash = "sha256:fe75cc94a9443b9246fc7049224f75604b113c36acb93f87b80ed42c44cbb898"}, + {file = "requests-2.24.0.tar.gz", hash = "sha256:b3559a131db72c33ee969480840fff4bb6dd111de7dd27c8ee1f820f4f00231b"}, +] +six = [ + {file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"}, + {file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"}, +] +snowballstemmer = [ + {file = "snowballstemmer-2.0.0-py2.py3-none-any.whl", hash = "sha256:209f257d7533fdb3cb73bdbd24f436239ca3b2fa67d56f6ff88e86be08cc5ef0"}, + {file = "snowballstemmer-2.0.0.tar.gz", hash = "sha256:df3bac3df4c2c01363f3dd2cfa78cce2840a79b9f1c2d2de9ce8d31683992f52"}, +] +sphinx = [ + {file = "Sphinx-2.4.4-py3-none-any.whl", hash = "sha256:fc312670b56cb54920d6cc2ced455a22a547910de10b3142276495ced49231cb"}, + {file = "Sphinx-2.4.4.tar.gz", hash = "sha256:b4c750d546ab6d7e05bdff6ac24db8ae3e8b8253a3569b754e445110a0a12b66"}, +] +sphinx-autobuild = [ + {file = "sphinx-autobuild-0.7.1.tar.gz", hash = "sha256:66388f81884666e3821edbe05dd53a0cfb68093873d17320d0610de8db28c74e"}, + {file = "sphinx_autobuild-0.7.1-py2-none-any.whl", hash = "sha256:e60aea0789cab02fa32ee63c7acae5ef41c06f1434d9fd0a74250a61f5994692"}, +] +sphinx-copybutton = [ + {file = "sphinx-copybutton-0.2.12.tar.gz", hash = "sha256:9492883786984b6179c92c07ab0410237b26efa826adfa792acfd17b91a63e5c"}, + {file = "sphinx_copybutton-0.2.12-py3-none-any.whl", hash = "sha256:517870030a931f313695705edbe14a8c30660829716100d3d24b379cf9257060"}, +] +sphinx-multiversion = [ + {file = "sphinx-multiversion-0.2.3.tar.gz", hash = "sha256:e46565ac2f703f3b55652f33c159c8059865f5d13dae7f0e8403e5afc2996f5f"}, + {file = "sphinx_multiversion-0.2.3-py3-none-any.whl", hash = "sha256:dc0f18449122e3e2a61245771bfdb7fa83df4f6adbf8eafea31f5b0cfccb5dbe"}, +] +sphinx-multiversion-scylla = [ + {file = "sphinx-multiversion-scylla-0.2.4.tar.gz", hash = "sha256:a44fced382c9efac454749cc3b113e971a1ad63a8901c0aebd1299d131b102b2"}, +] +sphinx-scylladb-theme = [ + {file = "sphinx-scylladb-theme-0.1.9.tar.gz", hash = "sha256:2a2abaccedb3e00e57f412e35afda042c4a5d9baa66c288feb82362d9889294b"}, + {file = "sphinx_scylladb_theme-0.1.9-py3-none-any.whl", hash = "sha256:50b3407bb1d2432f809ca48b7b20fdb124446c622584ddc04e8a390ce59f95b4"}, +] +sphinx-sitemap = [ + {file = "sphinx-sitemap-2.1.0.tar.gz", hash = "sha256:ba3576f38e8d1cabde483dabed2cc2b958af85ff97f2a4442f990b02e967d6a5"}, +] +sphinx-tabs = [ + {file = "sphinx-tabs-1.1.13.tar.gz", hash = "sha256:7ad881daa4d18799b254db4aa7feeb9d30256cbccf7d4f3de746d9fcc14e0196"}, +] +sphinxcontrib-applehelp = [ + {file = "sphinxcontrib-applehelp-1.0.2.tar.gz", hash = "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58"}, + {file = "sphinxcontrib_applehelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:806111e5e962be97c29ec4c1e7fe277bfd19e9652fb1a4392105b43e01af885a"}, +] +sphinxcontrib-devhelp = [ + {file = "sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"}, + {file = "sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e"}, +] +sphinxcontrib-htmlhelp = [ + {file = "sphinxcontrib-htmlhelp-1.0.3.tar.gz", hash = "sha256:e8f5bb7e31b2dbb25b9cc435c8ab7a79787ebf7f906155729338f3156d93659b"}, + {file = "sphinxcontrib_htmlhelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:3c0bc24a2c41e340ac37c85ced6dafc879ab485c095b1d65d2461ac2f7cca86f"}, +] +sphinxcontrib-jsmath = [ + {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, + {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, +] +sphinxcontrib-qthelp = [ + {file = "sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"}, + {file = "sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"}, +] +sphinxcontrib-serializinghtml = [ + {file = "sphinxcontrib-serializinghtml-1.1.4.tar.gz", hash = "sha256:eaa0eccc86e982a9b939b2b82d12cc5d013385ba5eadcc7e4fed23f4405f77bc"}, + {file = "sphinxcontrib_serializinghtml-1.1.4-py2.py3-none-any.whl", hash = "sha256:f242a81d423f59617a8e5cf16f5d4d74e28ee9a66f9e5b637a18082991db5a9a"}, +] +tornado = [ + {file = "tornado-6.0.4-cp35-cp35m-win32.whl", hash = "sha256:5217e601700f24e966ddab689f90b7ea4bd91ff3357c3600fa1045e26d68e55d"}, + {file = "tornado-6.0.4-cp35-cp35m-win_amd64.whl", hash = "sha256:c98232a3ac391f5faea6821b53db8db461157baa788f5d6222a193e9456e1740"}, + {file = "tornado-6.0.4-cp36-cp36m-win32.whl", hash = "sha256:5f6a07e62e799be5d2330e68d808c8ac41d4a259b9cea61da4101b83cb5dc673"}, + {file = "tornado-6.0.4-cp36-cp36m-win_amd64.whl", hash = "sha256:c952975c8ba74f546ae6de2e226ab3cc3cc11ae47baf607459a6728585bb542a"}, + {file = "tornado-6.0.4-cp37-cp37m-win32.whl", hash = "sha256:2c027eb2a393d964b22b5c154d1a23a5f8727db6fda837118a776b29e2b8ebc6"}, + {file = "tornado-6.0.4-cp37-cp37m-win_amd64.whl", hash = "sha256:5618f72e947533832cbc3dec54e1dffc1747a5cb17d1fd91577ed14fa0dc081b"}, + {file = "tornado-6.0.4-cp38-cp38-win32.whl", hash = "sha256:22aed82c2ea340c3771e3babc5ef220272f6fd06b5108a53b4976d0d722bcd52"}, + {file = "tornado-6.0.4-cp38-cp38-win_amd64.whl", hash = "sha256:c58d56003daf1b616336781b26d184023ea4af13ae143d9dda65e31e534940b9"}, + {file = "tornado-6.0.4.tar.gz", hash = "sha256:0fe2d45ba43b00a41cd73f8be321a44936dc1aba233dee979f17a042b83eb6dc"}, +] +urllib3 = [ + {file = "urllib3-1.25.10-py2.py3-none-any.whl", hash = "sha256:e7983572181f5e1522d9c98453462384ee92a0be7fac5f1413a1e35c56cc0461"}, + {file = "urllib3-1.25.10.tar.gz", hash = "sha256:91056c15fa70756691db97756772bb1eb9678fa585d9184f24534b100dc60f4a"}, +] +watchdog = [ + {file = "watchdog-0.10.3.tar.gz", hash = "sha256:4214e1379d128b0588021880ccaf40317ee156d4603ac388b9adcf29165e0c04"}, +] +wcwidth = [ + {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, + {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, +] +zipp = [ + {file = "zipp-3.1.0-py3-none-any.whl", hash = "sha256:aa36550ff0c0b7ef7fa639055d797116ee891440eac1a56f378e2d3179e0320b"}, + {file = "zipp-3.1.0.tar.gz", hash = "sha256:c599e4d75c98f6798c509911d08a22e6c021d074469042177c8c86fb92eefd96"}, +] diff --git a/docs/pyproject.toml b/docs/pyproject.toml new file mode 100644 index 00000000000..469e0f4ad6f --- /dev/null +++ b/docs/pyproject.toml @@ -0,0 +1,23 @@ +[tool.poetry] +name = "java-driver" +version = "3.7.1" +description = "ScyllaDB Java Driver" +authors = ["Java Driver Contributors"] + +[tool.poetry.dependencies] +python = "^3.7" +pyyaml = "^5.3" +pygments = "2.2.0" +recommonmark = "0.5.0" +sphinx-scylladb-theme = "0.1.9" +sphinx-sitemap = "2.1.0" +sphinx-autobuild = "^0.7.1" +Sphinx = "2.4.4" +sphinx-multiversion-scylla = "^0.2.4" + +[tool.poetry.dev-dependencies] +pytest = "^5.2" + +[build-system] +requires = ["poetry>=0.12"] +build-backend = "poetry.masonry.api" diff --git a/docs/source/api.rst b/docs/source/api.rst new file mode 100644 index 00000000000..850fb13929f --- /dev/null +++ b/docs/source/api.rst @@ -0,0 +1,3 @@ +API Documentation +================= + diff --git a/docs/source/changelog b/docs/source/changelog new file mode 120000 index 00000000000..2281eaa6b7b --- /dev/null +++ b/docs/source/changelog @@ -0,0 +1 @@ +../../changelog/ \ No newline at end of file diff --git a/docs/source/conf.py b/docs/source/conf.py new file mode 100644 index 00000000000..53e731f943e --- /dev/null +++ b/docs/source/conf.py @@ -0,0 +1,291 @@ +# -*- coding: utf-8 -*- +# +# This is a Scylla Documentation build configuration file, created by +# sphinx-quickstart on Tue Jul 26 13:41:02 2016. +# +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +import os +import sys +import yaml +import re +from docutils import nodes +from sphinx.util import logging +from recommonmark.transform import AutoStructify +from recommonmark.parser import CommonMarkParser, splitext, urlparse + +logger = logging.getLogger(__name__) + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# sys.path.insert(0, os.path.abspath('../..')) + +# Generate a redirection HTML file +def write_html_redirect(redirect_to): + html = "" + return html + +# Read a YAML dictionary of redirections and generate an HTML file for each +redirects_file = "_utils/redirections.yaml" + +def create_redirects(app, docname): + redirects = redirects_file + if os.path.exists('docs'): + redirects = 'docs/' + redirects_file + if not os.path.exists(redirects): + return + with open(redirects, 'r') as yaml_file: + for from_path, redirect_to in yaml.full_load(yaml_file).items(): + target_path = app.outdir + '/' + from_path + if os.getenv("SPHINX_MULTIVERSION_NAME") is not None: + redirect_to = '/' + os.environ['SPHINX_MULTIVERSION_NAME'] + redirect_to + if not os.path.exists(target_path): + os.makedirs(target_path) + with open(os.path.join(target_path + '/index.html'), 'w') as t_file: + t_file.write(write_html_redirect(redirect_to)) + with open(os.path.join(target_path + '.html'), 'w') as t_file: + t_file.write(write_html_redirect(redirect_to)) + + +# -- General configuration ------------------------------------------------ + +# Add any Sphinx extension'¡' module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.todo', + 'sphinx.ext.mathjax', + 'sphinx.ext.githubpages', + 'sphinx.ext.extlinks', + 'sphinx.ext.autosectionlabel', + 'sphinx_scylladb_theme', + 'sphinx_multiversion', +] + +# Add Markdown support +source_suffix = { + '.rst': 'restructuredtext', + '.md': 'markdown', +} +autosectionlabel_prefix_document = True + +class CustomCommonMarkParser(CommonMarkParser): + + def visit_document(self, node): + pass + + def visit_link(self, mdnode): + # Override to avoid checking if relative links exists + ref_node = nodes.reference() + destination = mdnode.destination + _, ext = splitext(destination) + + url_check = urlparse(destination) + scheme_known = bool(url_check.scheme) + + if not scheme_known and ext.replace('.', '') in self.supported: + destination = destination.replace(ext, '') + ref_node['refuri'] = destination + ref_node.line = self._get_line(mdnode) + if mdnode.title: + ref_node['title'] = mdnode.title + next_node = ref_node + + self.current_node.append(next_node) + self.current_node = ref_node + +def setup(app): + app.add_source_parser(CustomCommonMarkParser) + app.add_config_value('recommonmark_config', { + 'enable_eval_rst': True, + 'enable_auto_toc_tree': False, + }, True) + app.add_transform(AutoStructify) + app.connect('build-finished', create_redirects) + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = 'Scylla Java Driver' +copyright = u'2012, ScyllaDB. All rights reserved.' +author = u'Scylla Project Contributors' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = u'3.7.1' +# The full version, including alpha/beta/rc tags. +release = u'3.7.1' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +language = None + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This patterns also effect to html_static_path and html_extra_path +exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', 'lib', 'lib64','**/_common/*', 'README.md', '.git', '.github', '_utils', '_templates', 'rst_include'] + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = True + + +# -- Options for HTML output ---------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'sphinx_scylladb_theme' +# html_theme_path = ["../.."] + +html_style = '' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +html_theme_options = { + 'header_links': [ + ('Scylla Java Driver', 'https://scylladb.github.io/java-driver/'), + ('Scylla Cloud', 'https://docs.scylladb.com/scylla-cloud/'), + ('Scylla University', 'https://university.scylladb.com/'), + ('ScyllaDB Home', 'https://www.scylladb.com/')], + 'github_issues_repository': 'scylladb/java-driver', + 'show_sidebar_index': True, +} + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +# html_static_path = ['_static'] + +# Add any extra paths that contain custom files (such as robots.txt or +# .htaccess) here, relative to this directory. These files are copied +# directly to the root of the documentation. +# +#html_extra_path = ['404.html'] + +# If not None, a 'Last updated on:' timestamp is inserted at every page +# bottom, using the given strftime format. +# The empty string is equivalent to '%b %d, %Y'. +# +html_last_updated_fmt = '%d %B %Y' + +# Custom sidebar templates, maps document names to template names. +# +html_sidebars = {'**': ['side-nav.html']} + +# Output file base name for HTML help builder. +htmlhelp_basename = 'ScyllaDocumentationdoc' + +# -- Options for LaTeX output --------------------------------------------- + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # + # 'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + # + # 'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + # + # 'preamble': '', + + # Latex figure (float) alignment + # + # 'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'ScyllaDocumentation.tex', u'Scylla Documentation Documentation', + u'Scylla Project Contributors', 'manual'), +] + +# -- Options for manual page output --------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'scylladocumentation', u'Scylla Documentation Documentation', + [author], 1) +] + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'ScyllaDocumentation', u'Scylla Documentation Documentation', + author, 'ScyllaDocumentation', 'One line description of project.', + 'Miscellaneous'), +] + +# -- Options for Epub output ---------------------------------------------- + +# Bibliographic Dublin Core info. +epub_title = project +epub_author = author +epub_publisher = author +epub_copyright = copyright + +# A list of files that should not be packed into the epub file. +epub_exclude_files = ['search.html'] + +extlinks = { + 'manager': ('/operating-scylla/manager/%s/',''), + 'manager_lst': ('/operating-scylla/manager/2.0/%s/',''), + 'monitor': ('/operating-scylla/monitoring/%s/',''), + 'monitor_lst': ('/operating-scylla/monitoring/3.1/%s/','') +} + +# Adds version variables for monitoring and manager versions when used in inline text + +rst_epilog = """ +.. |mon_version| replace:: 3.1 +.. |man_version| replace:: 2.0 +.. |mon_root| replace:: :doc:`Scylla Monitoring Stack ` +""" + +# Custom lexer +from pygments.lexers.shell import BashLexer +from sphinx.highlighting import lexers + +class DitaaLexer(BashLexer): + pass +lexers['ditaa'] = DitaaLexer(startinline=True) + +# -- Options for multiversion -------------------------------------------- +# Whitelist pattern for tags (set to None to ignore all tags) +# Whitelist pattern for branches (set to None to ignore all branches) +smv_tag_whitelist = r'None' +smv_branch_whitelist = r"^latest$" +# Whitelist pattern for remotes (set to None to use local branches only) +smv_remote_whitelist = r"^origin$" +# Pattern for released versions +smv_released_pattern = r'^tags/.*$' +# Format for versioned output directories inside the build directory +smv_outputdir_format = '{ref.name}' diff --git a/docs/source/faq b/docs/source/faq new file mode 120000 index 00000000000..bec65510d7f --- /dev/null +++ b/docs/source/faq @@ -0,0 +1 @@ +../../faq/ \ No newline at end of file diff --git a/docs/source/index.rst b/docs/source/index.rst new file mode 100644 index 00000000000..23c8e618702 --- /dev/null +++ b/docs/source/index.rst @@ -0,0 +1,100 @@ +Datastax Java Driver for Apache Cassandra® +========================================== + +A modern, `feature-rich`_ and highly tunable Java client library for +Apache Cassandra (2.1+) and using exclusively Cassandra's binary +protocol and Cassandra Query Language v3. Use the `DataStax Enterprise +Java driver `_ for better compatibility and support for +DataStax Enterprise. + +**Features:** + +- `Sync`_ and `Async`_ API +- `Simple`_, `Prepared`_, and `Batch`_ statements +- Asynchronous IO, parallel execution, request pipelining +- `Connection pooling`_ +- Auto node discovery +- Automatic reconnection +- Configurable `load balancing`_ and `retry policies`_ +- Works with any cluster size +- `Query builder`_ +- `Object mapper`_ + +The driver architecture is based on layers. At the bottom lies the +driver core. This core handles everything related to the connections to +a Cassandra cluster (for example, connection pool, discovering new +nodes, etc.) and exposes a simple, relatively low-level API on top of +which higher level layers can be built. + +The driver contains the following modules: + +- driver-core: the core layer. +- driver-mapping: the object mapper. +- driver-extras: optional features for the Java driver. +- driver-examples: example applications using the other modules which + are only meant for demonstration purposes. +- driver-tests: tests for the java-driver. + +**Useful links:** + +- JIRA (bug tracking): https://datastax-oss.atlassian.net/browse/JAVA +- MAILING LIST: + https://groups.google.com/a/lists.datastax.com/forum/#!forum/java-driver-user +- DATASTAX ACADEMY SLACK: #datastax-drivers on + https://academy.datastax.com/slack +- TWITTER: `@dsJavaDriver`_ tweets Java driver releases and important + announcements (low frequency). `@DataStaxEng`_ has more news + including other drivers, Cassandra, and DSE. +- DOCS: the `manual`_ has quick start material and technical details + about the driver and its features. +- API: http://www.datastax.com/drivers/java/3.7 +- GITHUB REPOSITORY: https://github.com/datastax/java-driver +- `changelog`_ +- `binary tarball`_ + +.. _feature-rich: manual +.. _Sync: manual +.. _Async: manual/async +.. _Simple: manual/statements/simple +.. _Prepared: manual/statements/prepared +.. _Batch: manual/statements/batch +.. _Connection pooling: manual/pooling +.. _load balancing: manual/load_balancing +.. _retry policies: manual/retries +.. _Query builder: manual/statements/built +.. _Object mapper: manual/object_mapper +.. _@dsJavaDriver: https://twitter.com/dsJavaDriver +.. _@DataStaxEng: https://twitter.com/datastaxeng +.. _manual: http://docs.datastax.com/en/developer/java-driver/3.7/manual/ +.. _changelog: changelog +.. _binary tarball: http://downloads.datastax.com/java-driver/cassandra-java-driver-3.7.1.tar.gz + + +License +------- + +Copyright 2012-2018, DataStax + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +.. toctree:: + :hidden: + :glob: + + api + installation + manual/* + upgrade_guide/* + faq/* + changelog/* + diff --git a/docs/source/installation.md b/docs/source/installation.md new file mode 100644 index 00000000000..51f400b44c5 --- /dev/null +++ b/docs/source/installation.md @@ -0,0 +1,76 @@ +## Installation + +### Getting the driver + +The last release of the driver is available on Maven Central. You can install +it in your application using the following Maven dependency (_if +using DataStax Enterprise, install the [DataStax Enterprise Java driver][dse-driver] instead_): + +```xml + + com.scylladb + scylla-driver-core + 3.7.1-scylla-0-SNAPSHOT + +``` + +Note that the object mapper is published as a separate artifact: + +```xml + + com.scylladb + scylla-driver-mapping + 3.7.1-scylla-0-SNAPSHOT + +``` + +The 'extras' module is also published as a separate artifact: + +```xml + + com.scylladb + scylla-driver-extras + 3.7.1-scylla-0-SNAPSHOT + +``` + + +We also provide a [shaded JAR](manual/shaded_jar/) +to avoid the explicit dependency to Netty. + +If you can't use a dependency management tool, a +[binary tarball](http://downloads.datastax.com/java-driver/cassandra-java-driver-3.7.1.tar.gz) +is available for download. + +### Compatibility + +The Java client driver 3.7.1 ([branch 3.x](https://github.com/datastax/java-driver/tree/3.x)) is compatible with Apache +Cassandra 2.1, 2.2 and 3.0+ (see [this page](http://docs.datastax.com/en/developer/java-driver/latest/manual/native_protocol/) for +the most up-to-date compatibility information). + +UDT and tuple support is available only when using Apache Cassandra 2.1 or higher (see [CQL improvements in Cassandra 2.1](http://www.datastax.com/dev/blog/cql-in-2-1)). + +Other features are available only when using Apache Cassandra 2.0 or higher (e.g. result set paging, +[BatchStatement](https://github.com/datastax/java-driver/blob/3.x/driver-core/src/main/java/com/datastax/driver/core/BatchStatement.java), +[lightweight transactions](http://www.datastax.com/documentation/cql/3.1/cql/cql_using/use_ltweight_transaction_t.html) +-- see [What's new in Cassandra 2.0](http://www.datastax.com/documentation/cassandra/2.0/cassandra/features/features_key_c.html)). +Trying to use these with a cluster running Cassandra 1.2 will result in +an [UnsupportedFeatureException](https://github.com/datastax/java-driver/blob/3.x/driver-core/src/main/java/com/datastax/driver/core/exceptions/UnsupportedFeatureException.java) being thrown. + +The java driver supports Java JDK versions 6 and above. + +If using _DataStax Enterprise_, the [DataStax Enterprise Java driver][dse-driver] provides +more features and better compatibility. + +__Disclaimer__: Some _DataStax/DataStax Enterprise_ products might partially work on +big-endian systems, but _DataStax_ does not officially support these systems. + +### Upgrading from previous versions + +If you are upgrading from a previous version of the driver, be sure to have a look at +the [upgrade guide](upgrade_guide/). + +If you are upgrading to _DataStax Enterprise_, use the [DataStax Enterprise Java driver][dse-driver] for more +features and better compatibility. + +[dse-driver]: https://docs.datastax.com/en/developer/java-driver-dse/ diff --git a/docs/source/manual b/docs/source/manual new file mode 120000 index 00000000000..fb3a8517e30 --- /dev/null +++ b/docs/source/manual @@ -0,0 +1 @@ +../../manual/ \ No newline at end of file diff --git a/docs/source/upgrade_guide b/docs/source/upgrade_guide new file mode 120000 index 00000000000..a1b678e2fa5 --- /dev/null +++ b/docs/source/upgrade_guide @@ -0,0 +1 @@ +../../upgrade_guide/ \ No newline at end of file diff --git a/doxyfile b/doxyfile index 414bdbd7ec4..ea043740253 100644 --- a/doxyfile +++ b/doxyfile @@ -160,7 +160,7 @@ IGNORE_PREFIX = # Configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES -HTML_OUTPUT = html +HTML_OUTPUT = docs/_build/dirhtml/api HTML_FILE_EXTENSION = .html HTML_HEADER = HTML_FOOTER = @@ -333,4 +333,4 @@ MAX_DOT_GRAPH_DEPTH = 0 DOT_TRANSPARENT = NO DOT_MULTI_TARGETS = NO GENERATE_LEGEND = YES -DOT_CLEANUP = YES \ No newline at end of file +DOT_CLEANUP = YES diff --git a/manual/README.md b/manual/README.md index 1635e1219f4..49cda94a082 100644 --- a/manual/README.md +++ b/manual/README.md @@ -304,4 +304,39 @@ simply navigate to each sub-directory. [LatencyTracker]: https://docs.datastax.com/en/drivers/java/3.10/com/datastax/driver/core/LatencyTracker.html [SchemaChangeListener]: https://docs.datastax.com/en/drivers/java/3.10/com/datastax/driver/core/SchemaChangeListener.html [NoHostAvailableException]: https://docs.datastax.com/en/drivers/java/3.10/com/datastax/driver/core/exceptions/NoHostAvailableException.html -[LocalDate]: https://docs.datastax.com/en/drivers/java/3.10/com/datastax/driver/core/LocalDate.html \ No newline at end of file +[LocalDate]: https://docs.datastax.com/en/drivers/java/3.10/com/datastax/driver/core/LocalDate.html + +```eval_rst +.. toctree:: + :hidden: + :glob: + + address_resolution/* + async/* + auth/* + cloud/* + compression/* + control_connection/* + custom_codecs/* + custom_payloads/* + idempotence/* + load_balancing/* + logging/* + metadata/* + metrics/* + native_protocol/* + object_mapper/* + osgi/* + paging/* + pooling/* + query_timestamps/* + reconnection/* + retries/* + shaded_jar/* + socket_options/* + speculative_execution/* + ssl/* + statements/* + tuples/* + udts/* +``` \ No newline at end of file diff --git a/manual/object_mapper/.nav b/manual/object_mapper/.nav deleted file mode 100644 index 1aaac91ac9c..00000000000 --- a/manual/object_mapper/.nav +++ /dev/null @@ -1,3 +0,0 @@ -creating -using -custom_codecs \ No newline at end of file diff --git a/manual/object_mapper/README.md b/manual/object_mapper/README.md index 1875d4708bf..ffc8fb4b764 100644 --- a/manual/object_mapper/README.md +++ b/manual/object_mapper/README.md @@ -20,3 +20,13 @@ See the child pages for more information: * [definition of mapped classes](creating/) * [using the mapper](using/) * [using custom codecs](custom_codecs/) + +```eval_rst +.. toctree:: + :hidden: + :glob: + + creating/* + custom_codecs/* + using/* +``` diff --git a/manual/statements/.nav b/manual/statements/.nav deleted file mode 100644 index 89273161ff0..00000000000 --- a/manual/statements/.nav +++ /dev/null @@ -1,4 +0,0 @@ -simple -prepared -built -batch \ No newline at end of file diff --git a/manual/statements/README.md b/manual/statements/README.md index 865818796d0..9a941c30128 100644 --- a/manual/statements/README.md +++ b/manual/statements/README.md @@ -40,3 +40,14 @@ wrap your statements in a custom [StatementWrapper] implementation. [SpeculativeExecutionPolicy]: https://docs.datastax.com/en/drivers/java/3.10/com/datastax/driver/core/policies/SpeculativeExecutionPolicy.html [execute]: https://docs.datastax.com/en/drivers/java/3.10/com/datastax/driver/core/Session.html#execute-com.datastax.driver.core.Statement- [executeAsync]: https://docs.datastax.com/en/drivers/java/3.10/com/datastax/driver/core/Session.html#executeAsync-com.datastax.driver.core.Statement- + +```eval_rst +.. toctree:: + :hidden: + :glob: + + simple/* + prepared/* + built/* + batch/* +``` diff --git a/upgrade_guide/README.md b/upgrade_guide/README.md index e85262ed847..081cb571c26 100644 --- a/upgrade_guide/README.md +++ b/upgrade_guide/README.md @@ -496,7 +496,7 @@ the impact on the public API has been kept as low as possible. version that takes an `int` (the exception being `RegularStatement`, described below). For new code, prefer the enum version. -#### Internal API Changes +#### 2.1.6 Internal API Changes 1. `RegularStatement.getValues` now takes the protocol version as a `ProtocolVersion` instead of an `int`. This is transparent for callers @@ -539,7 +539,7 @@ These features are only active when the native protocol v3 is in use. ### 2.1.1 -#### Internal API Changes +#### 2.1.1 Internal API Changes 1. The `ResultSet` interface has a new `wasApplied()` method. This will only affect clients that provide their own implementation of this interface. @@ -547,7 +547,7 @@ These features are only active when the native protocol v3 is in use. ### 2.1.0 -#### User API Changes +#### 2.1.0 User API Changes 1. The `getCaching` method of `TableMetadata#Options` now returns a `Map` to account for changes to Cassandra 2.1. Also, the @@ -564,7 +564,7 @@ These features are only active when the native protocol v3 is in use. set to `null`" behavior. -#### Internal API Changes +#### 2.1.0 Internal API Changes The changes listed in this section should normally not impact end users of the driver, but rather third-party frameworks and tools. @@ -826,3 +826,11 @@ exhaustive list of new features in 2.0. * the `ResultSet` object provides 2 methods to check the state of paging (`ResultSet#getAvailableWithoutFetching` and `ResultSet#isFullyFetched`) as well as a mean to force the pre-fetching of the next page (`ResultSet#fetchMoreResults`). + +```eval_rst +.. toctree:: + :hidden: + :glob: + + migrating_from_astyanax/* +``` \ No newline at end of file diff --git a/upgrade_guide/migrating_from_astyanax/.nav b/upgrade_guide/migrating_from_astyanax/.nav deleted file mode 100644 index 2267b910143..00000000000 --- a/upgrade_guide/migrating_from_astyanax/.nav +++ /dev/null @@ -1,3 +0,0 @@ -language_level_changes -configuration -queries_and_results \ No newline at end of file diff --git a/upgrade_guide/migrating_from_astyanax/README.md b/upgrade_guide/migrating_from_astyanax/README.md index 0b518322a28..c899252d63d 100644 --- a/upgrade_guide/migrating_from_astyanax/README.md +++ b/upgrade_guide/migrating_from_astyanax/README.md @@ -8,3 +8,13 @@ See the child pages for more information: * [Changes at the language level](language_level_changes/) * [Migrating Astyanax configurations to DataStax Java driver configurations](configuration/) * [Querying and retrieving results comparisons.](queries_and_results/) + +```eval_rst +.. toctree:: + :hidden: + :glob: + + configuration/* + language_level_changes/* + queries_and_results/* +``` \ No newline at end of file