Skip to content

Commit

Permalink
Restructured the code so that we can install the optional requiments …
Browse files Browse the repository at this point in the history
…using `pip install -e ".[option]"`. To add optional requirements add to the [optional.extras_require] in the setup config. All functions and imports work the same way. Restructured the testing suite so it follows a similar pattern. All tests pass.
  • Loading branch information
LAShemilt committed Mar 17, 2023
1 parent 9cd7379 commit 0e95628
Show file tree
Hide file tree
Showing 9 changed files with 60 additions and 69 deletions.
2 changes: 2 additions & 0 deletions pyscicat/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,5 @@

__version__ = get_versions()["version"]
del get_versions
from . import hdf5
from . import ingest
51 changes: 51 additions & 0 deletions setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -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 = "[email protected]",
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
64 changes: 1 addition & 63 deletions setup.py
Original file line number Diff line number Diff line change
@@ -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="[email protected]",
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",
],
)
Original file line number Diff line number Diff line change
Expand Up @@ -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,
{
Expand All @@ -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"
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

import pytest
import requests_mock
from ..client import (
from pyscicat.client import (
from_credentials,
from_token,
encode_thumbnail,
Expand All @@ -12,7 +12,7 @@
ScicatCommError,
)

from ..model import (
from pyscicat.model import (
Attachment,
Datablock,
DataFile,
Expand Down

0 comments on commit 0e95628

Please sign in to comment.