[project] name = "openflexure-microscope-server" version = "3.0.0.dev0" authors = [ { name="Richard Bowman", email="richard.bowman@cantab.net" }, { name="Joel Collins" }, { name="Julian Stirling" }, ] description = "Back-end code for the OpenFlexure Microscope" readme = "README.md" requires-python = ">=3.9" classifiers = [ "Programming Language :: Python :: 3", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Operating System :: OS Independent", ] dependencies = [ "labthings-fastapi[server]", "labthings-sangaboard", "camera-stage-mapping ~= 0.1.6", "numpy ~= 1.20", "piexif", "scipy ~= 1.6", "opencv-python ~= 4.7.0", "pillow ~= 10.4", "anyio ~= 4.0", ] [project.optional-dependencies] dev = [ "labthings-fastapi[dev]", ] pi = [ "labthings-picamera2", ] [project.scripts] openflexure-microscope-server = "openflexure_microscope_server.server:serve_from_cli" [project.urls] "Homepage" = "https://openflexure.org/" "Bug Tracker" = "https://gitlab.com/openflexure/openflexure-microscope-server/-/issues" "Source" = "https://gitlab.com/openflexure/openflexure-microscope-server/" [build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" # The [tool.poetry] metadata has been removed from this file, because # we have switched to Pipenv for dependency management and setuptools # for the build system. All metadata has been moved either to # Pipfile or setup.py. # The one key that doesn't map over nicely is the exclusion of # the node_modules folder, i.e. the line below: #exclude = ["**/node_modules/"] # I've tried to put this in the "packages" key but not sure it works. # I have left it here in case we ever switch back to Poetry, but I # don't believe it's critical at present, because we don't use # the Python package - we distribute a tarball directly. [tool.black] exclude = '(\.eggs|\.git|\.venv|\venv|node_modules/)' [tool.isort] multi_line_output = 3 include_trailing_comma = true force_grid_wrap = 0 use_parentheses = true ensure_newline_before_comments = true line_length = 88 [tool.pylint.'MESSAGES CONTROL'] # W1203 warns about using f strings in logging statements. # I'm really not concerned about the performance implications of this, # particularly as we often have the log level set quite high. I think # for our current purposes, using f strings in logging statements is # more readable and thus a good idea in many places - I've disabled # this warning code globally for that reason. disable = "fixme,C,R,W1203" max-line-length = 88 [tool.mypy] plugins = ["pydantic.mypy"] [tool.ruff] target-version = "py39" [tool.poe.executor] type = "virtualenv" location = ".venv" [tool.poe.tasks] black = "black ." black_check = "black --check ." ruff = "ruff . --fix" ruff_check = "ruff ." isort = "isort openflexure_microscope" pylint = "pylint openflexure_microscope" mypy = "mypy --cobertura-xml-report openflexure_microscope openflexure_microscope" test = "pytest . --junitxml=pytest_report.xml" serve = "python -m openflexure_microscope.api.app" format = ["black", "isort", "ruff"] lint = ["ruff_check", "pylint", "mypy"] check = ["format", "lint", "test"]