From fd1275fcccdc7269bd6cc11d13dbe7418543a4f4 Mon Sep 17 00:00:00 2001 From: Ian Moore Date: Sat, 18 Jan 2025 08:03:16 -0500 Subject: [PATCH] Move /docs to its own repo --- .readthedocs.yaml | 16 ---- README.md | 2 +- docs/Makefile | 20 ----- docs/_static/logo.png | Bin 10427 -> 0 bytes docs/_static/logo_symbol.png | Bin 8535 -> 0 bytes docs/conf.py | 38 --------- docs/contributing.rst | 7 -- docs/favicon.ico | Bin 15406 -> 0 bytes docs/index.rst | 34 --------- docs/ldlm.rst | 35 --------- docs/license.rst | 6 -- docs/overview.rst | 144 ----------------------------------- pyproject.toml | 9 --- requirements-develop.txt | 2 +- taskfile.yaml | 15 ---- 15 files changed, 2 insertions(+), 326 deletions(-) delete mode 100644 .readthedocs.yaml delete mode 100644 docs/Makefile delete mode 100644 docs/_static/logo.png delete mode 100644 docs/_static/logo_symbol.png delete mode 100644 docs/conf.py delete mode 100644 docs/contributing.rst delete mode 100644 docs/favicon.ico delete mode 100644 docs/index.rst delete mode 100644 docs/ldlm.rst delete mode 100644 docs/license.rst delete mode 100644 docs/overview.rst diff --git a/.readthedocs.yaml b/.readthedocs.yaml deleted file mode 100644 index dca0449..0000000 --- a/.readthedocs.yaml +++ /dev/null @@ -1,16 +0,0 @@ -version: 2 - -sphinx: - configuration: docs/conf.py - -python: - install: - - method: pip - path: . - extra_requirements: - - docs - -build: - os: ubuntu-22.04 - tools: - python: "3.9" diff --git a/README.md b/README.md index f827595..3931d93 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ pip install py-ldlm ## Usage -See full ducumentation at https://py-ldlm.readthedocs.io/ +See full documentation at https://py-ldlm-docs.readthedocs.io/ ## License diff --git a/docs/Makefile b/docs/Makefile deleted file mode 100644 index ed88099..0000000 --- a/docs/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -# Minimal makefile for Sphinx documentation -# - -# You can set these variables from the command line, and also -# from the environment for the first two. -SPHINXOPTS ?= -SPHINXBUILD ?= sphinx-build -SOURCEDIR = . -BUILDDIR = build - -# Put it first so that "make" without argument is like "make help". -help: - @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) - -.PHONY: help Makefile - -# Catch-all target: route all unknown targets to Sphinx using the new -# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). -%: Makefile - @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/docs/_static/logo.png b/docs/_static/logo.png deleted file mode 100644 index b70ad7e0c8c95d74ed12b1a3a72a294d6d8c081e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10427 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 h(f?uKO-%#<LtuV{}&VKP&)ts diff --git a/docs/_static/logo_symbol.png b/docs/_static/logo_symbol.png deleted file mode 100644 index 58fa5b9590ac1aebc75e45c4ee54f1fcfccdc7bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8535 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
qiX8o zsMVzYaczV^b%ig0J$^)#>M~a-XYr%drREsP5gVndwzISRz1TR6AEm6e#g7oEw@}f_ z5zwcZaIoj&&Q0ohT;*4M3T8)emF>K6m59ev#h7CxM=V#h+t>F8^PU*4d0f>V+kAO4 zk0%d-{0%dQtK3ie55|s$dnMc;MFKCNgGW)Vzq732k5=XI;C_h-AqqV&M71a);_e@L zp{izcoa9Ybd5a&YdkUW0&hB5CYgfrv{z_(#c#eILvMY2?{Q4IMx$kPO2PMtp>mvXshPch|t zN&KOfsW@h;vxho{{2NO?#Za8XUSu|6DQCG0aE}95PO&=1T7Etd4$tB4FMtw!J|t#o zxsG?Ed5-twz@hta=LnpSaReOW^E^jIDx9JH44m7L*YX|ib@%Y@X(4_G;!Tu&M^-57 z_8$cH?JjV}wioif9MA-9u48AkWlyrknSfgY_=Uu*t+j)A zupowUMFVGscy4F{)M;ZGS6ZZu%NydES0st-))6v0<8Kf#&cFUCj&W50daI?(%m0Kv zYEsu@uV_q~zM$>YD!i{R&ceLB0D7K{VO}{v=C!s7jMkvB&MjxgGFxtrVK%o}V=SZP z#u(=daml{MXA+o~76b2ABD1A?EVG#&5YEl|u?SmvQ*FzwG0aPgP&1KvF%r%@Z&>$5 zA7{eZa7OF7`+VcD@lGux$2(sbJ>KO!H4w%zFS^2+<};>#tbYpMVl{n+_YEho&e20d zlLl+yE~7Am(fn*8``mBGxtw<%sHZ80Gr6~nH1_+w1on6BPro?L^;A}p%c&K3zp?MR z*j`O>Ic-1H<#c6|$M=qj?539|x}J%i>~i|+sV=AVkfR?0-4xcT1Cv~Sg7;X{%ahsP zxq;S3)U@5PFEiEs?8qe6sUny+8)r{-YuuLX+DIc(Tu+=$bNkkRmPdn&Eu^szkC+Dc zGgDj}TLJBG9y@Oq>xjb?`@_FWV*SiYcKv=Xpg!64yC2~U_q++Pp5b!x6TrMA*7vNr z!41!)fkvuZ!xHG*fm*1E+P3;)JjMOEU$X0oGh|*k=iLH#LhsFTJ4z!m*hjl(v5#uN zs%>GG`|%3s!+?CNsg8Z5YnI!Q|IPF`((iLG5zcxRz!v6r&l_sOz2 z`!-~G?sprwWB+J2+|PwG?bd9MFKB{AoG%AGf40Y$S)|TnQ42KtcNy5j8M8e0f1KsE zf9c%d{Vxy9B2nWoneXR+lKIp#%<$a`{vJl2=dRXV&s{WujI(Rd^XGc*&LVYaQ42L? zoSnnXeW2%Z?|Qh||7Z_<|1R_0Hle_K`aR5 zDDvLaTI{`vHp6H0pyx04uFW#nfd*=!<_a&kn_$ta*n9KIBJbL!QvYp3-iuouP~%+g zTh;l#&qiPC=Ux)9-U05HU&1@)X82XTYt6Iem-$uYnCp5pE`0!+)_m*@ybjB|?baMy z{u;kEtPlOx$XENXzVCZ_b-?OZKJZ<0akbwXn&3nKwIABjvW|b~xAr4a*K03q2;Okt z_agSj8E_VBjR*O7SH8->bjCXWa_xHm(#&eAy5HZ!_%nQcz^a4m{mW?r;GWwMTz20K z)_rQ=xx*cdCQ@gzpar~s=XhnoWzT&aP&Nx^*brErRL`y-^nP?rVDVUhZew6E4c1T_ zv|_sT92)~m(=ks_6Ii6E4KAKl>6>iccd)L(9QJOQwLvSVV{gpk zESrK?BwBN9`CEevR&5O`pv?#@sIlha-4)=qnK{7U7My>5d$3Gm%_aWUprtX$v8>q| zSn#Xmof^X37F@8&lD9oLzntVAW_N@x<$fBH*Y;^}p6=7&-1eOzOJfJB`6Ng-9eA1@ z!MSjEr57Q22Dp>5X7{KifxCjT?GZad7X|GM&HV_py3IV`V=Zb7r2T2IEDn2{W`J2f z86~3z;@OJr3|Y+E6}o87p5Vnoqt$zp)O;P0^~cXbbE@}*X6y0)ob<;+)#srLFZDvz zKZpN61#5DuQG@7NTI`9vKf@V9bGVkdC%N7e`rd0_jh_Gc{!#Pjp<({#SoLDLM - -.. image:: _static/logo.png - :align: center - :alt: ldlm logo - -.. centered:: - version - |release| - -.. centered:: - An |ldlm_link| client library providing Python sync and async clients. - -Contents ----------- - -.. toctree:: - :maxdepth: 2 - - overview - ldlm - contributing - license - - -Disclaimer --------------------- - -This project is not an official Google project. It is not supported by Google and Google specifically disclaims all warranties as to its quality, merchantability, or fitness for a particular purpose. diff --git a/docs/ldlm.rst b/docs/ldlm.rst deleted file mode 100644 index 8f906b6..0000000 --- a/docs/ldlm.rst +++ /dev/null @@ -1,35 +0,0 @@ -API Reference -=============== - -Client ---------------- -.. autoclass:: ldlm.Client - :members: - :undoc-members: - -.. autoclass:: ldlm.Lock - :members: - :undoc-members: - -Async Client ---------------- -.. autoclass:: ldlm.AsyncClient - :members: - :undoc-members: - -.. autoclass:: ldlm.AsyncLock - :members: - :undoc-members: - -TLS Configuration ------------------- -.. autoclass:: ldlm.TLSConfig - :members: - :undoc-members: - -Exceptions ----------- - -.. automodule:: ldlm.exceptions - :members: - :exclude-members: from_rpc_error diff --git a/docs/license.rst b/docs/license.rst deleted file mode 100644 index 85860ee..0000000 --- a/docs/license.rst +++ /dev/null @@ -1,6 +0,0 @@ -========== -License -========== - -.. include:: ../LICENSE - :literal: diff --git a/docs/overview.rst b/docs/overview.rst deleted file mode 100644 index d5f246d..0000000 --- a/docs/overview.rst +++ /dev/null @@ -1,144 +0,0 @@ -============ -Overview -============ - -.. |header| raw:: html - -

- PyPI version - Python Version from PEP 621 TOML - Checked with mypy - Coverage Status - GitHub Actions Workflow Status - CodeQL Workflow Status -

- -|header| - -.. image:: _static/logo_symbol.png - :align: center - :alt: LDLM logo - :width: 100px - -.. |inline1| raw:: html - -

- An LDLM - client library providing Python sync and async clients. For LDLM concepts, - use cases, and general information, see the - LDLM documentation. -

- -|inline1| - -Installation -============= - -.. code:: shell - - $ pip install py-ldlm - -Basic Usage -============= - -.. code-block:: python - :caption: Create client - - import ldlm - - client = ldlm.Client("ldlm-server:3144") - -.. code-block:: python - :caption: Lock and unlock - - lock = client.lock("my-task") - - try: - do_something() - finally: - lock.unlock() - - -.. code-block:: python - :caption: Context manager - - # context manager example - with client.lock_context("my-task"): - do_something() - -.. code-block:: python - :caption: Create async client - - import ldlm - - client = ldlm.AsyncClient("ldlm-server:3144") - -.. code-block:: python - :caption: Async lock and unlock - - lock = await client.lock("my-task") - - try: - do_something() - finally: - await lock.unlock() - - -.. code-block:: python - :caption: Async context manager - - # context manager example - async with client.lock_context("my-task"): - do_something() - - -.. |useslink| raw:: html - - LDLM Use Cases - -.. |conceptslink| raw:: html - - LDLM Concepts - -.. seealso:: - - More advanced usage and examples can be found in - - * The |conceptslink| documentation - * The |useslink| documentation - * The :doc:`API Reference` section - - -TLS -========================== - -.. |ldlmtls| raw:: html - - Configuration Recipes - -Using TLS for LDLM client connections involves passing an :ref:`ldlm.TLSConfig` object to -the client on instantiation. - -.. code-block:: python - :caption: Server TLS with cert signed by private CA - - import ldlm - - client = ldlm.Client("ldlm-server:3144", tls=ldlm.TLSConfig( - ca_file="/etc/ldlm/certs/ca_cert.pem" - )) - -.. code-block:: python - :caption: Mutual TLS - - import ldlm - - client = ldlm.Client("ldlm-server:3144", tls=ldlm.TLSConfig( - cert_file="/etc/ldlm/certs/client_cert.pem", - key_file="/etc/ldlm/certs/client_cert.pem", - ca_file="/etc/ldlm/certs/ca_cert.pem" - )) - -.. seealso:: - - Be sure to set up TLS in the server as described in |ldlmtls|. \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 61ddac7..fed4339 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,15 +33,6 @@ Documentation = "https://github.com/imoore76/py-ldlm/README.md" [project.optional-dependencies] test = ["pytest", "pytest-asyncio", "frozendict", "coverage"] -docs = [ - "sphinx", - "sphinx_rtd_theme", - "autodoc", - "myst-parser", - "setuptools-scm>=8", - "m2r2", - "sphinx-copybutton" -] [tool.setuptools_scm] diff --git a/requirements-develop.txt b/requirements-develop.txt index 3979d08..a66a2b1 100644 --- a/requirements-develop.txt +++ b/requirements-develop.txt @@ -1,4 +1,4 @@ --e .[test,docs] +-e .[test] grpcio-tools pylint diff --git a/taskfile.yaml b/taskfile.yaml index 14edad0..a954d54 100644 --- a/taskfile.yaml +++ b/taskfile.yaml @@ -15,7 +15,6 @@ # Requires # - grep # - pcre2grep -# - misspell # - which # - curl # - addlicense (github.com/google/addlicense) @@ -59,19 +58,6 @@ tasks: - 2to3 -w -n ldlm/protos/*py - addlicense ldlm/protos/* - docs: - desc: "Build documentation" - sources: - - '**/*.py' - - '*py' - dir: docs - cmds: - # API docs generated with - # sphinx-apidoc -e -f -o ./ ../ldlm ../ldlm/protos/ ../ldlm/*client*.py - # then edited - - make clean - - make html - test: desc: "Run unit tests" aliases: ["t"] @@ -110,7 +96,6 @@ tasks: - task: googlify - task: fmt - task: lint - - misspell ./... - task: test - task: clean - find . -type f -not -name "*.sh" -not -path "./.venv/*" -exec chmod a-x {} \;