Skip to content

Commit

Permalink
feat: ✨ Introduce UV instead of poetry
Browse files Browse the repository at this point in the history
  • Loading branch information
Anselmoo committed Jan 22, 2025
1 parent 4011a88 commit df33ea3
Show file tree
Hide file tree
Showing 2 changed files with 7,258 additions and 127 deletions.
237 changes: 110 additions & 127 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
[tool.poetry]
[project]
name = "SpectraFit"
version = "1.1.0"
version = "1.2.0"
description = "Fast fitting of 2D- and 3D-Spectra with established routines"
authors = [{ name = "Anselm Hahn", email = "[email protected]" }]
requires-python = ">=3.8,<3.13"
readme = "README.md"
authors = ["Anselm Hahn <[email protected]>"]
maintainers = ["Anselm Hahn <[email protected]>"]
license = "BSD-3-Clause"
repository = "https://github.com/Anselmoo/spectrafit"
documentation = "https://anselmoo.github.io/spectrafit/"
homepage = "https://pypi.org/project/spectrafit/"
maintainers = [{ name = "Anselm Hahn", email = "[email protected]" }]
keywords = [
"2D-Spectra",
"3D-Spectra",
Expand All @@ -30,114 +28,73 @@ classifiers = [
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
# "Programming Language :: Python :: 3.13",
"Programming Language :: Python :: Implementation :: CPython",
"Topic :: Scientific/Engineering :: Physics",
"Topic :: Scientific/Engineering :: Chemistry",
"Topic :: Scientific/Engineering :: Information Analysis",
]
include = [
# { path = "spectrafit/test/", format = "sdist" },
{ path = "examples/", format = "sdist" },
{ path = "spectrafit/plugins/img/SpectraFit.png", format = "sdist" },
dependencies = [
"lmfit>=1.2.2,<2",
"pandas<2.2.1 ; python_version < '3.9'",
"pandas>=2.2.2,<3 ; python_version >= '3.9'",
"numpy<1.26.4 ; python_version < '3.9'",
"numpy>=1.26.4,<2 ; python_version >= '3.9'",
"emcee>=3.1.2,<4",
"tabulate>=0.9.0,<0.10",
"PyYAML~=6.0",
"openpyxl>=3.0.9,<4",
"seaborn>=0.13.0,<0.14",
"numdifftools>=0.9.41,<0.10",
"tqdm>=4.64.0,<5",
"scikit-learn<1.5.0 ; python_version < '3.9'",
"scikit-learn>=1.5.0,<2 ; python_version >= '3.9'",
"art>=5.8,<7.0",
"tomli>=2.0.1,<3",
"tomli-w>=1.0.0,<2",
"pydantic>=2.7.0,<3",
"scipy>=1.10.1,<2 ; python_version < '3.9'",
"scipy>=1.13.0,<2 ; python_version >= '3.9'",
]
exclude = ["docs/", "tools/", "spectrafit/test/", "spectrafit/**/test/"]


[tool.poetry.dependencies]
python = ">=3.8,<3.13"
lmfit = "^1.2.2"
pandas = [
{ version = "<2.2.1", markers = "python_version < '3.9'" },
{ version = "^2.2.2", markers = "python_version >= '3.9'" },
]
numpy = [
{ version = "<1.26.4", markers = "python_version < '3.9'" },
{ version = "^1.26.4", markers = "python_version >= '3.9'" },
]
emcee = "^3.1.2"
tabulate = "^0.9.0"
PyYAML = "^6.0"
openpyxl = "^3.0.9"
seaborn = "^0.13.0"
numdifftools = "^0.9.41"
tqdm = "^4.64.0"
scikit-learn = [
{ version = "<1.5.0", markers = "python_version < '3.9'" },
{ version = "^1.5.0", markers = "python_version >= '3.9'" },
[project.optional-dependencies]
jupyter = [
"jupyterlab>=3.5.2,<5.0.0",
"plotly>=5.21.0,<6",
"itables>=2.1.1,<3",
"kaleido==0.2.1",
"dtale>=3.9.0,<4",
"python-pptx>=0.6.22,<1.1.0",
]
art = ">=5.8,<7.0"
tomli = "^2.0.1"
tomli-w = "^1.0.0"
pydantic = "^2.7.0"
scipy = [
{ version = "^1.10.1", markers = "python_version < '3.9'" },
{ version = "^1.13.0", markers = "python_version >= '3.9'" },
]
jupyterlab = { version = ">=3.5.2,<5.0.0", optional = true }
plotly = { version = "^5.21.0", optional = true }
itables = { version = "^2.1.1", optional = true }
kaleido = [
{ version = "^0.2.1", markers = "python_version < '3.9'" },
{ version = "^0.4.1", markers = "python_version >= '3.9'" },
]
dtale = { version = "^3.9.0", optional = true }
networkx = { extras = ["all"], version = "^3.0", optional = true }
pydot = { version = "^3.0.0", optional = true }
jupyter-dash = { version = "^0.4.2", optional = true }
ipywidgets = { version = "^8.0.4", optional = true }
dash-bootstrap-components = { version = "^1.3.0", optional = true }
dash-bootstrap-templates = [
{ version = "<=1.1.2", markers = "python_version < '3.10'" },
{ version = "^1.2.0", markers = "python_version >= '3.10'" },
]
python-pptx = { version = ">=0.6.22,<1.1.0", optional = true }

[tool.poetry.group.dev.dependencies]
mypy = "^1.9.0"
black = { extras = ["jupyter"], version = "^24.0" }
pre-commit = [
{ version = "<=3.7.1", markers = "python_version < '3.9'" },
{ version = "^3.7.1", markers = "python_version >= '3.9'" },
jupyter-dash = [
"jupyter-dash>=0.4.2,<0.5",
"ipywidgets>=8.0.4,<9",
"dash-bootstrap-components>=1.3.0,<2",
"dash-bootstrap-templates",
]
pytest = ">=7.1.3,<9.0.0"
pytest-clarity = "^1.0.1"
pytest-cov = ">=3,<7"
pytest-console-scripts = "^1.3.1"
pytest-xdist = ">=2.5,<4.0"
pytest-plt = "^1.1.0"
pytest-mock = "^3.10.0"
types-toml = "^0.10.8"
types-PyYAML = "^6.0.11"
types-tabulate = ">=0.8.11,<0.10.0"
types-mock = ">=4.0.15,<6.0.0"
dash = { extras = ["testing"], version = "^2.7.1" }
bandit = "^1.7.5"
bump-pydantic = "^0.8.0"
types-setuptools = ">=75.8.0.20250110,<75.9.0.0"
ruff = "^0.9.0"

[tool.poetry.group.docs.dependencies]
mkdocs-material = "^9.5.0"
mkdocstrings = { extras = ["python"], version = ">=0.26.0,<0.28.0" }
mkdocs-literate-nav = ">=0.4.1,<0.7.0"
mkdocs-section-index = "^0.3.4"
mkdocs-autorefs = "^1.0.1"
mkdocs-minify-plugin = "^0.8.0"
mkdocs-jupyter = [
{ version = "<=0.25.0", markers = "python_version < '3.9'" },
{ version = "^0.25.0", markers = "python_version >= '3.9'" },
graph = ["networkx>=3.0.0,<4", "pydot>=3.0.0,<4"]
all = [
"jupyterlab>=3.5.2,<5.0.0",
"plotly>=5.21.0,<6",
"itables>=2.1.1,<3",
"kaleido==0.2.1",
"dtale>=3.9.0,<4",
"networkx[all]~=3.0",
"pydot>=3.0.0,<4",
"jupyter-dash>=0.4.2,<0.5",
"ipywidgets>=8.0.4,<9",
"dash-bootstrap-components>=1.3.0,<2",
"dash-bootstrap-templates",
"python-pptx>=0.6.22,<1.1.0",
]
mkdocs-table-reader-plugin = "^3.0.0"
mike = "^2.0.0"
jupytext = "^1.14.5"
mathjax = "^0.1.2"

[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
[project.urls]
Homepage = "https://pypi.org/project/spectrafit/"
Repository = "https://github.com/Anselmoo/spectrafit"
Documentation = "https://anselmoo.github.io/spectrafit/"
Changelog = "https://github.com/Anselmoo/spectrafit/blob/main/CHANGELOG.md"
Issues = "https://github.com/Anselmoo/spectrafit/issues"

[tool.poetry.scripts]
[project.scripts]
spectrafit = "spectrafit.spectrafit:command_line_runner"
spectrafit-file-converter = "spectrafit.plugins.file_converter:command_line_runner"
spectrafit-data-converter = "spectrafit.plugins.data_converter:command_line_runner"
Expand All @@ -148,44 +105,70 @@ spectrafit-rixs-visualizer = "spectrafit.plugins.rixs_visualizer:command_line_ru
spectrafit-jupyter = "spectrafit.app.app:jupyter"
spectrafit-pptx-converter = "spectrafit.plugins.pptx_converter:command_line_runner"


[tool.poetry.extras]
jupyter = ["jupyterlab", "plotly", "itables", "kaleido", "dtale", "python-pptx"]
jupyter-dash = [
"jupyter-dash",
"ipywidgets",
"dash-bootstrap-components",
"dash-bootstrap-templates",
[dependency-groups]
dev = [
"mypy>=1.9.0,<2",
"black[jupyter]~=24.0",
"pre-commit<=3.7.1 ; python_version < '3.9'",
"pre-commit>=3.7.1,<4 ; python_version >= '3.9'",
"pytest>=7.1.3,<9.0.0",
"pytest-clarity>=1.0.1,<2",
"pytest-cov>=3,<7",
"pytest-console-scripts>=1.3.1,<2",
"pytest-xdist>=2.5,<4.0",
"pytest-plt>=1.1.0,<2",
"pytest-mock>=3.10.0,<4",
"types-toml>=0.10.8,<0.11",
"types-PyYAML>=6.0.11,<7",
"types-tabulate>=0.8.11,<0.10.0",
"types-mock>=4.0.15,<6.0.0",
"dash[testing]>=2.7.1,<3",
"bandit>=1.7.5,<2",
"bump-pydantic>=0.8.0,<0.9",
"types-setuptools>=75.5.0.20241116,<75.7.0.0",
"ruff>=0.8.0,<0.9",
]
graph = ["networkx", "pydot"]
all = [
"jupyterlab",
"plotly",
"itables",
"kaleido",
"dtale",
"networkx",
"pydot",
"jupyter-dash",
"ipywidgets",
"dash-bootstrap-components",
"dash-bootstrap-templates",
"python-pptx",
docs = [
"mkdocs-material>=9.5.0,<10",
"mkdocstrings[python]>=0.26.0,<0.28.0",
"mkdocs-literate-nav>=0.4.1,<0.7.0",
"mkdocs-section-index>=0.3.4,<0.4",
"mkdocs-autorefs>=1.0.1,<2",
"mkdocs-minify-plugin>=0.8.0,<0.9",
"mkdocs-jupyter<=0.25.0 ; python_version < '3.9'",
"mkdocs-jupyter>=0.25.0,<0.26 ; python_version >= '3.9'",
"mkdocs-table-reader-plugin>=3.0.0,<4",
"mike>=2.0.0,<3",
"jupytext>=1.14.5,<2",
"mathjax>=0.1.2,<0.2",
]

[tool.uv]
default-groups = ["dev", "docs"]

[tool.hatch.build.targets.sdist]
include = ["examples/", "spectrafit/plugins/img/SpectraFit.png"]
exclude = ["docs/", "tools/", "spectrafit/test/", "spectrafit/**/test/"]

[tool.hatch.build.targets.wheel]
exclude = ["docs/", "tools/", "spectrafit/test/", "spectrafit/**/test/"]

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[tool.ruff.lint]
fixable = ["ALL"]
extend-ignore = ["E721", "E731"]


[tool.pytest]
script_launch_mode = "subprocess"

[tool.pytest.ini_options]
minversion = "7.0"
addopts = "--cov=./spectrafit/ --cov-report=xml:coverage.xml --diff-symbols --plots -vv"
testpaths = ["spectrafit"]


[tool.mypy]
plugins = ["pydantic.mypy", "numpy.typing.mypy_plugin"]
follow_imports = "silent"
Expand Down
Loading

0 comments on commit df33ea3

Please sign in to comment.