diff --git a/pyscicat/__init__.py b/pyscicat/__init__.py index 80edaf0..4f9eb34 100644 --- a/pyscicat/__init__.py +++ b/pyscicat/__init__.py @@ -2,3 +2,5 @@ __version__ = get_versions()["version"] del get_versions +from . import hdf5 +from . import ingest \ No newline at end of file diff --git a/setup.cfg b/setup.cfg index c80108f..4a3f8f1 100644 --- a/setup.cfg +++ b/setup.cfg @@ -4,3 +4,54 @@ style = pep440-post versionfile_source = pyscicat/_version.py versionfile_build = pyscicat/_version.py tag_prefix = v + +[metadata] + +name = pyscicat +version = 1.0.0 +description = a python API to communicate with the Scicat API +long_description = file: README.md +long_description_content_type = text/markdown +author = Dylan McReynolds +author_email = "dmcreynolds@lbl.gov", +url = "https://github.com/scicatproject/pyscicat" +license_file = LICENSE +license="BSD (3-clause)" +classifiers= + "Development Status :: 2 - Pre-Alpha" + "Natural Language :: English" + "Programming Language :: Python :: 3" + + +[options] +include_package_data = True +install_requires = + pydantic + requests +packages = find: +python_requires = >=3.8 + + +[options.extras_require] +hdf5 = + hdf5plugin + h5py +dev = + codecov + coverage + flake8 + pytest + sphinx + twine + black + requests_mock +docs = + ipython + matplotlib + mistune <2.0.0 # temporary while sphinx sorts this out + myst-parser + numpydoc + sphinx-click + sphinx-copybutton + sphinxcontrib.openapi + sphinx_rtd_theme \ No newline at end of file diff --git a/setup.py b/setup.py index 9e430c0..9709c4e 100644 --- a/setup.py +++ b/setup.py @@ -1,68 +1,6 @@ from pathlib import Path from setuptools import setup, find_packages import sys -import versioneer -min_version = (3, 7) -if sys.version_info < min_version: - error = """ -pyscicat does not support Python {0}.{1}. -Python {2}.{3} and above is required. Check your Python version like so: +setup() -python3 --version - -This may be due to an out-of-date pip. Make sure you have pip >= 9.0.1. -Upgrade pip like so: - -pip install --upgrade pip -""".format( - *(sys.version_info[:2] + min_version) - ) - sys.exit(error) - -here = Path(__file__).absolute() - -with open(here.with_name("README.md"), encoding="utf-8") as readme_file: - readme = readme_file.read() - - -def read_requirements_from_here(here: Path, filename: str = None) -> list: - assert filename is not None, "filename as string must be provided" - assert here.with_name( - filename - ).exists(), f"requirements filename {filename} does not exist" - with open(here.with_name(filename)) as requirements_file: - # Parse requirements.txt, ignoring any commented-out lines. - requirements = [ - line - for line in requirements_file.read().splitlines() - if not line.startswith("#") - ] - return requirements - - -extras_require = {} -extras_require["base"] = read_requirements_from_here(here, "requirements.txt") -extras_require["h5tools"] = read_requirements_from_here(here, "requirements-hdf5.txt") - -setup( - name="pyscicat", - version=versioneer.get_version(), - cmdclass=versioneer.get_cmdclass(), - description="Code for communicating to a SciCat backend server python", - long_description=readme, - author="Dylan McReynolds", - author_email="dmcreynolds@lbl.gov", - url="https://github.com/scicatproject/pyscicat", - python_requires=">={}".format(".".join(str(n) for n in min_version)), - packages=find_packages(exclude=["docs", "tests"]), - include_package_data=True, - extras_require=extras_require, - install_requires=extras_require["base"], - license="BSD (3-clause)", - classifiers=[ - "Development Status :: 2 - Pre-Alpha", - "Natural Language :: English", - "Programming Language :: Python :: 3", - ], -) diff --git a/pyscicat/hdf5/_tests/testdata/cylinderHex_r5_s12_T50_large_ranW_0p5.nxs b/tests/test_hdf5/data/cylinderHex_r5_s12_T50_large_ranW_0p5.nxs similarity index 100% rename from pyscicat/hdf5/_tests/testdata/cylinderHex_r5_s12_T50_large_ranW_0p5.nxs rename to tests/test_hdf5/data/cylinderHex_r5_s12_T50_large_ranW_0p5.nxs diff --git a/pyscicat/hdf5/_tests/test_hdf5sct.py b/tests/test_hdf5/test_hdf5sct.py similarity index 83% rename from pyscicat/hdf5/_tests/test_hdf5sct.py rename to tests/test_hdf5/test_hdf5sct.py index 466e190..3f3af64 100644 --- a/pyscicat/hdf5/_tests/test_hdf5sct.py +++ b/tests/test_hdf5/test_hdf5sct.py @@ -9,19 +9,19 @@ def test_readValue(): # more intelligent path finding: - p = sorted(Path(".").glob("**/cylinderHex_r5_s12_T50_large_ranW_0p5.nxs"))[0] + p = sorted(Path("").glob("**/cylinderHex_r5_s12_T50_large_ranW_0p5.nxs"))[0] v = h5Get(p, "/sasentry1/sasdata1/I") assert v != "none", "Did not extract value" def test_readAttribute(): - p = sorted(Path(".").glob("**/cylinderHex_r5_s12_T50_large_ranW_0p5.nxs"))[0] + p = sorted(Path("").glob("**/cylinderHex_r5_s12_T50_large_ranW_0p5.nxs"))[0] v = h5Get(p, "/sasentry1/sasdata1@timestamp") assert v != "none", "Did not extract attribute" def test_readMixedDict(): - p = sorted(Path(".").glob("**/cylinderHex_r5_s12_T50_large_ranW_0p5.nxs"))[0] + p = sorted(Path("").glob("**/cylinderHex_r5_s12_T50_large_ranW_0p5.nxs"))[0] v = h5GetDict( p, { @@ -38,7 +38,7 @@ def test_readMixedDict(): def test_readMetadata_withroot(): - p = sorted(Path(".").glob("**/cylinderHex_r5_s12_T50_large_ranW_0p5.nxs"))[0] + p = sorted(Path("").glob("**/cylinderHex_r5_s12_T50_large_ranW_0p5.nxs"))[0] assert p.exists(), f"HDF5/NeXus test file: {p.as_posix()} cannot be found" resultDict = scientific_metadata(p, excludeRootEntry=True, skipKeyList=["sasdata1"]) assert resultDict is not None, "scientific_metadata has not returned anything" diff --git a/pyscicat/tests/__init__.py b/tests/test_pyscicat/__init__.py similarity index 100% rename from pyscicat/tests/__init__.py rename to tests/test_pyscicat/__init__.py diff --git a/pyscicat/tests/conftest.py b/tests/test_pyscicat/conftest.py similarity index 100% rename from pyscicat/tests/conftest.py rename to tests/test_pyscicat/conftest.py diff --git a/pyscicat/tests/data/SciCatLogo.png b/tests/test_pyscicat/data/SciCatLogo.png similarity index 100% rename from pyscicat/tests/data/SciCatLogo.png rename to tests/test_pyscicat/data/SciCatLogo.png diff --git a/pyscicat/tests/test_client.py b/tests/test_pyscicat/test_client.py similarity index 99% rename from pyscicat/tests/test_client.py rename to tests/test_pyscicat/test_client.py index 6d036f0..c165007 100644 --- a/pyscicat/tests/test_client.py +++ b/tests/test_pyscicat/test_client.py @@ -3,7 +3,7 @@ import pytest import requests_mock -from ..client import ( +from pyscicat.client import ( from_credentials, from_token, encode_thumbnail, @@ -12,7 +12,7 @@ ScicatCommError, ) -from ..model import ( +from pyscicat.model import ( Attachment, Datablock, DataFile,