diff --git a/.github/workflows/pages.yaml b/.github/workflows/pages.yaml index 26523822ae..d24e965e42 100644 --- a/.github/workflows/pages.yaml +++ b/.github/workflows/pages.yaml @@ -35,7 +35,7 @@ jobs: run: | python -m pip install --upgrade pip python -m pip install poetry --user - python -m poetry install --only=docs,main + python -m poetry install --all-extras --only=docs,main - name: "Build documentation with Sphinx" run: | diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 8cc32bd066..37c77e41be 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -21,7 +21,7 @@ build: commands: - "mamba env create --file conda-environment-dev.yml --force" - - "mamba run --name mxcubecore poetry install --only=docs,main" + - "mamba run --name mxcubecore poetry install --all-extras --only=docs,main" - "mamba run --name mxcubecore sphinx-build -T -E -b html -c ./docs/ ./docs/source/ ${READTHEDOCS_OUTPUT}/html/" diff --git a/poetry.lock b/poetry.lock index 4fb685d2ab..048bee06aa 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. [[package]] name = "alabaster" @@ -27,6 +27,35 @@ lazy-object-proxy = ">=1.4.0" typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} wrapt = {version = ">=1.11,<2", markers = "python_version < \"3.11\""} +[[package]] +name = "asttokens" +version = "2.4.1" +description = "Annotate AST trees with source code positions" +optional = true +python-versions = "*" +files = [ + {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"}, + {file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"}, +] + +[package.dependencies] +six = ">=1.12.0" + +[package.extras] +astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"] +test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"] + +[[package]] +name = "async-timeout" +version = "4.0.3" +description = "Timeout context manager for asyncio programs" +optional = false +python-versions = ">=3.7" +files = [ + {file = "async-timeout-4.0.3.tar.gz", hash = "sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f"}, + {file = "async_timeout-4.0.3-py3-none-any.whl", hash = "sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028"}, +] + [[package]] name = "attrs" version = "23.1.0" @@ -259,6 +288,20 @@ files = [ {file = "charset_normalizer-3.1.0-py3-none-any.whl", hash = "sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d"}, ] +[[package]] +name = "click" +version = "8.1.7" +description = "Composable command line interface toolkit" +optional = true +python-versions = ">=3.7" +files = [ + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + [[package]] name = "colorama" version = "0.4.6" @@ -421,6 +464,22 @@ files = [ {file = "cycler-0.11.0.tar.gz", hash = "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f"}, ] +[[package]] +name = "devtools" +version = "0.12.2" +description = "Python's missing debug print command, and more." +optional = true +python-versions = ">=3.7" +files = [ + {file = "devtools-0.12.2-py3-none-any.whl", hash = "sha256:c366e3de1df4cdd635f1ad8cbcd3af01a384d7abda71900e68d43b04eb6aaca7"}, + {file = "devtools-0.12.2.tar.gz", hash = "sha256:efceab184cb35e3a11fa8e602cc4fadacaa2e859e920fc6f87bf130b69885507"}, +] + +[package.dependencies] +asttokens = ">=2.0.0,<3.0.0" +executing = ">=1.1.1" +pygments = ">=2.15.0" + [[package]] name = "dill" version = "0.3.6" @@ -471,6 +530,20 @@ files = [ [package.extras] test = ["pytest (>=6)"] +[[package]] +name = "executing" +version = "2.0.1" +description = "Get the currently executing AST node of a frame, and other information" +optional = true +python-versions = ">=3.5" +files = [ + {file = "executing-2.0.1-py2.py3-none-any.whl", hash = "sha256:eac49ca94516ccc753f9fb5ce82603156e590b27525a8bc32cce8ae302eb61bc"}, + {file = "executing-2.0.1.tar.gz", hash = "sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147"}, +] + +[package.extras] +tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"] + [[package]] name = "f90nml" version = "1.4.3" @@ -1496,6 +1569,27 @@ files = [ docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] +[[package]] +name = "pint" +version = "0.21.1" +description = "Physical quantities module" +optional = true +python-versions = ">=3.8" +files = [ + {file = "Pint-0.21.1-py3-none-any.whl", hash = "sha256:230ebccc312693117ee925c6492b3631c772ae9f7851a4e86080a15e7be692d8"}, + {file = "Pint-0.21.1.tar.gz", hash = "sha256:5d5b6b518d0c5a7ab03a776175db500f1ed1523ee75fb7fafe38af8149431c8d"}, +] + +[package.extras] +babel = ["babel (<=2.8)"] +dask = ["dask"] +mip = ["mip (>=1.13)"] +numpy = ["numpy (>=1.19.5)"] +pandas = ["pint-pandas (>=0.3)"] +test = ["pytest", "pytest-cov", "pytest-mpl", "pytest-subtests"] +uncertainties = ["uncertainties (>=3.1.6)"] +xarray = ["xarray"] + [[package]] name = "pkgutil-resolve-name" version = "1.3.10" @@ -1694,6 +1788,27 @@ files = [ [package.extras] dev = ["tox"] +[[package]] +name = "pyepics" +version = "3.5.2" +description = "Epics Channel Access for Python" +optional = true +python-versions = ">=3.7" +files = [ + {file = "pyepics-3.5.2-py3-none-any.whl", hash = "sha256:f1425d31935ad176f6c6db0726f6d7dc3e9632c07a62a803a21a710978ba9f45"}, + {file = "pyepics-3.5.2.tar.gz", hash = "sha256:9680af5970c3f4714dd97d33fe13a833d79ae370f69f774889df51c0e4790187"}, +] + +[package.dependencies] +numpy = "*" +pyparsing = "*" +setuptools = "*" + +[package.extras] +all = ["Sphinx", "coverage", "pytest", "pytest-cov"] +doc = ["Sphinx"] +test = ["coverage", "pytest", "pytest-cov"] + [[package]] name = "pygments" version = "2.16.1" @@ -1734,6 +1849,20 @@ typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\"" spelling = ["pyenchant (>=3.2,<4.0)"] testutils = ["gitpython (>3)"] +[[package]] +name = "pymba" +version = "0.3.7" +description = "Pymba is a Python wrapper for Allied Vision's Vimba C API." +optional = true +python-versions = "*" +files = [ + {file = "pymba-0.3.7-py3-none-any.whl", hash = "sha256:347162606cfa0f8c089ca1e50d8fc06264f9236c5e6e36b208d2eb70e490553d"}, + {file = "pymba-0.3.7.tar.gz", hash = "sha256:cce5265c204988de6e0383724cd49ffa1a9765d0b9cceee382cbf5e5fa94a311"}, +] + +[package.dependencies] +numpy = "*" + [[package]] name = "pyparsing" version = "3.0.9" @@ -1984,6 +2113,24 @@ files = [ {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, ] +[[package]] +name = "redis" +version = "4.6.0" +description = "Python client for Redis database and key-value store" +optional = false +python-versions = ">=3.7" +files = [ + {file = "redis-4.6.0-py3-none-any.whl", hash = "sha256:e2b03db868160ee4591de3cb90d40ebb50a90dd302138775937f6a42b7ed183c"}, + {file = "redis-4.6.0.tar.gz", hash = "sha256:585dc516b9eb042a619ef0a39c3d7d55fe81bdb4df09a52c9cdde0d07bf1aa7d"}, +] + +[package.dependencies] +async-timeout = {version = ">=4.0.2", markers = "python_full_version <= \"3.11.2\""} + +[package.extras] +hiredis = ["hiredis (>=1.0.0)"] +ocsp = ["cryptography (>=36.0.1)", "pyopenssl (==20.0.1)", "requests (>=2.26.0)"] + [[package]] name = "requests" version = "2.31.0" @@ -2069,6 +2216,29 @@ files = [ {file = "ruamel.yaml.clib-0.2.7.tar.gz", hash = "sha256:1f08fd5a2bea9c4180db71678e850b995d2a5f4537be0e94557668cf0f5f9497"}, ] +[[package]] +name = "sardana" +version = "3.4.3" +description = "instrument control and data acquisition system" +optional = true +python-versions = "*" +files = [ + {file = "sardana-3.4.3-py3-none-any.whl", hash = "sha256:f4eb35e029dbd9e9335ad8ce36652486110693ce73dd4fe7a909f235ced7c492"}, + {file = "sardana-3.4.3.tar.gz", hash = "sha256:3ea6d13ca8c642bafa602c61a018ea52ac1c826a3c4f54e420eeada24d274704"}, +] + +[package.dependencies] +click = "*" +lxml = ">=2.3" +PyTango = ">=9.2.5" +taurus = ">=5.0.0" + +[package.extras] +all = ["PyYAML", "dsconfig (>=1.6.7)", "itango (>=0.1.6)", "jsonpatch", "pydantic (<2.0)", "ruamel.yaml", "taurus[taurus-qt]"] +config = ["PyYAML", "dsconfig (>=1.6.7)", "jsonpatch", "pydantic (<2.0)", "ruamel.yaml"] +qt = ["taurus[taurus-qt]"] +spock = ["itango (>=0.1.6)"] + [[package]] name = "scipy" version = "1.10.1" @@ -2156,6 +2326,21 @@ files = [ {file = "soupsieve-2.5.tar.gz", hash = "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690"}, ] +[[package]] +name = "SpecClient" +version = "1.0" +description = "Python package for communicating with spec" +optional = true +python-versions = "*" +files = [] +develop = false + +[package.source] +type = "git" +url = "https://github.com/mxcube/specclient.git" +reference = "HEAD" +resolved_reference = "767b0d3910a26905c30c413b101fcb886b29ae50" + [[package]] name = "sphinx" version = "7.1.2" @@ -2308,6 +2493,30 @@ files = [ {file = "suds_py3-1.4.5.0-py3-none-any.whl", hash = "sha256:0915a7f825c80fa2f0593e040e046bcbc156dd24ba988bb9da6c6604d70155b9"}, ] +[[package]] +name = "taurus" +version = "5.1.8" +description = "A framework for scientific/industrial CLIs and GUIs" +optional = true +python-versions = ">=3.5" +files = [ + {file = "taurus-5.1.8-py3-none-any.whl", hash = "sha256:26fdaf88a7ada3c3ce26ca8f0685aa1527bc70eab7a7545e71e4b3f727a77735"}, + {file = "taurus-5.1.8.tar.gz", hash = "sha256:6a9f7bbb785e7d00e0d4d463810a4da1ff9648fafa443c9306f7057c86c95c90"}, +] + +[package.dependencies] +click = "*" +numpy = ">=1.1" +packaging = "*" +pint = ">=0.8" + +[package.extras] +taurus-epics = ["pyepics (>=3.2.4)"] +taurus-h5file = ["h5file"] +taurus-qt = ["guiqwt (>=3)", "lxml (>=2.1)", "ply (>=2.3)"] +taurus-qt-editor = ["spyder (>=3)"] +taurus-tango = ["PyTango (>=7.1)"] + [[package]] name = "tomli" version = "2.0.1" @@ -2357,6 +2566,17 @@ brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] +[[package]] +name = "vapory" +version = "0.1.2" +description = "3D rendering with Python and POV-Ray" +optional = true +python-versions = "*" +files = [ + {file = "Vapory-0.1.2-py3-none-any.whl", hash = "sha256:58e4c09f6ab689e812cdf57e5a46056c8fb466af6d95395e9ffc565ac17806c5"}, + {file = "Vapory-0.1.2.tar.gz", hash = "sha256:e0213caaac5cbb1d336ef7455a18e7ffcc8b864093040958ef45bddac8204231"}, +] + [[package]] name = "virtualenv" version = "20.21.1" @@ -2542,9 +2762,17 @@ test = ["coverage (>=5.0.3)", "zope.event", "zope.testing"] testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"] [extras] -tango = ["PyTango"] +alba = ["sardana"] +bessy = ["specclient"] +desy = ["pymba"] +embl = ["pymba", "vapory"] +epics = ["pyepics"] +esrf = ["devtools"] +maxiv = ["PyTango", "sardana"] +soleil = ["vapory"] +tango = ["PyTango", "sardana"] [metadata] lock-version = "2.0" python-versions = ">=3.8,<3.11" -content-hash = "32153909850af238b4a54263fc6be10c05e73fa25c3129cb264468100bce86f9" +content-hash = "a34d5641e8e89b5b59c415c1073eb148abdec3df644ec971a20c9dfbc2ffae21" diff --git a/pyproject.toml b/pyproject.toml index 90bf8176f4..7e21f97fdf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,8 +25,18 @@ classifiers = [ [tool.poetry.dependencies] python = ">=3.8,<3.11" + +#bliss = { version = "*", optional = true , python = "<3.10" } +devtools = { version = "^0.12.2", optional = true } +pyepics = {version = "^3.5.2", optional = true} +pymba = {version = "^0.3.7", optional = true} +redis = "^4.3.5" +sardana = { version = "^3.4.3", optional = true } +# This version of specclient does not import correctly, so: pointless to have it here (?) +specclient = {git = "https://github.com/mxcube/specclient.git", optional = true} typing-extensions = "^4.3.0" tomli = { version = "^2.0.1", python = "<=3.10" } +vapory = { version = "^0.1.2", optional = true } gevent = "^21.12.0" greenlet = "^1.1.3" jsonpickle = "^2.2.0" @@ -63,7 +73,47 @@ sphinx = "<7.2" furo = "^2023.9.10" [tool.poetry.extras] -tango = ["PyTango"] +# Still missing: +# bliss +# grob +# qt Which binding? +# tine +# v4l2 + +#bliss = ["bliss"] +epics = ["pyepics"] +tango = ["pytango", "sardana"] + +alba = [ + "sardana", +] +bessy = [ + #"grob", + "specclient", + #"tine", +] +desy = [ + "pymba", + #"tine", +] +embl = [ + "pymba", + "vapory", + #"tine", +] +esrf = [ + #"bliss", + "devtools", + #"lima2", +] +maxiv = [ + "pytango", + "sardana", +] +soleil = [ + "vapory", +] + [tool.autoflake] #