Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 2 additions & 7 deletions .github/workflows/python.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,12 @@ on:

jobs:
build:
# `macOS-latest` is arm64 (macos-14+). PyTables only ships macOS arm64
# wheels from 3.10.1 (Python 3.10+); Python 3.8/3.9 use older `tables` with
# x86_64-only wheels, so route those to the Intel `macos-13` runner to avoid
# a source build. Python 3.10+ runs on arm64. Ubuntu and Windows keep
# `*-latest`.
runs-on: ${{ (matrix.os == 'macOS' && matrix.python-minor-version < 10) && 'macos-13' || format('{0}-latest', matrix.os) }}
runs-on: ${{ format('{0}-latest', matrix.os) }}
strategy:
fail-fast: false
matrix:
python-major-version: [3]
python-minor-version: [8, 9, 10, 11, 12]
python-minor-version: [10, 11, 12]
os: [ubuntu, macOS, windows]
env:
python-version: ${{ format('{0}.{1}', matrix.python-major-version, matrix.python-minor-version) }}
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ You describe a system as a set of **state transitions** (encoding differential e
* **Extensible**: [hooks](https://cadlabs.github.io/radCAD/how-to/use-hooks/), [iterable models](https://cadlabs.github.io/radCAD/how-to/iterate-over-a-model/), and typed [dataclass parameters](https://cadlabs.github.io/radCAD/how-to/use-dataclass-parameters/).
* **Robust exception handling**: failed runs return [partial results and tracebacks](https://cadlabs.github.io/radCAD/how-to/handle-exceptions/), so one error won't discard a long-running simulation.
* **Distributed execution**: parallel processing across [multiple backends](https://cadlabs.github.io/radCAD/how-to/choose-a-backend/), including [remote Ray clusters](https://cadlabs.github.io/radCAD/how-to/run-on-a-ray-cluster/).
* **Tested**: against Python 3.8–3.12 on Linux, macOS, and Windows.
* **Tested**: against Python 3.10–3.12 on Linux, macOS, and Windows.

## Installation

Expand Down
2 changes: 1 addition & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ df = pd.DataFrame(simulation.run())
- **Extensible**: [hooks](how-to/use-hooks.md), [iterable models](how-to/iterate-over-a-model.md), and typed [dataclass parameters](how-to/use-dataclass-parameters.md).
- **Robust exception handling**: failed runs return [partial results and tracebacks](how-to/handle-exceptions.md), so one error won't discard a long-running simulation.
- **Distributed execution**: parallel processing across [multiple backends](how-to/choose-a-backend.md), including [remote Ray clusters](how-to/run-on-a-ray-cluster.md).
- **Tested**: against Python 3.8–3.12 on Linux, macOS, and Windows.
- **Tested**: against Python 3.10–3.12 on Linux, macOS, and Windows.

## Open-source models using radCAD

Expand Down
2 changes: 1 addition & 1 deletion docs/tutorials/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ In this tutorial you will install radCAD and confirm it runs.

## Requirements

- Python **3.8 – 3.12**
- Python **3.10 – 3.12**
- A package manager such as `pip`

## Install from PyPI
Expand Down
132 changes: 6 additions & 126 deletions examples/streamlit/game_of_life/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,126 +1,6 @@
aiohttp==3.7.3
aiohttp-cors==0.7.0
aioredis==1.3.1
altair==4.1.0
appdirs==1.4.4
appnope==0.1.2
argon2-cffi==20.1.0
astor==0.8.1
async-generator==1.10
async-timeout==3.0.1
attrs==20.3.0
backcall==0.2.0
base58==2.1.0
black==20.8b1
bleach==3.2.1
blessings==1.7
blinker==1.4
boto3==1.16.54
botocore==1.19.54
cachetools==4.2.0
celluloid==0.2.0
certifi==2020.12.5
cffi==1.14.4
chardet==3.0.4
click==7.1.2
colorama==0.4.4
colorful==0.5.4
cycler==0.10.0
decorator==4.4.2
defusedxml==0.6.0
dill==0.3.3
entrypoints==0.3
filelock==3.0.12
gitdb==4.0.5
GitPython==3.1.12
google-api-core==1.24.1
google-auth==1.24.0
googleapis-common-protos==1.52.0
gpustat==0.6.0
grpcio==1.34.1
hiredis==1.1.0
idna==2.10
ipykernel==5.4.3
ipython==7.19.0
ipython-genutils==0.2.0
ipywidgets==7.6.3
jedi==0.18.0
Jinja2==2.11.3
jmespath==0.10.0
jsonschema==3.2.0
jupyter-client==6.1.11
jupyter-core==4.7.0
jupyterlab-pygments==0.1.2
jupyterlab-widgets==1.0.0
kiwisolver==1.3.1
MarkupSafe==1.1.1
matplotlib==3.3.3
mistune==0.8.4
msgpack==1.0.2
multidict==5.1.0
multiprocess==0.70.11.1
mypy-extensions==0.4.3
nbclient==0.5.1
nbconvert==6.0.7
nbformat==5.1.0
nest-asyncio==1.4.3
notebook==6.4.1
numpy==1.19.5
nvidia-ml-py3==7.352.0
opencensus==0.7.11
opencensus-context==0.1.2
packaging==20.8
pandas==1.2.0
pandocfilters==1.4.3
parso==0.8.1
pathos==0.2.7
pathspec==0.8.1
pexpect==4.8.0
pickleshare==0.7.5
Pillow==8.2.0
pox==0.2.9
ppft==1.6.6.3
prometheus-client==0.9.0
prompt-toolkit==3.0.10
protobuf==3.14.0
psutil==5.8.0
ptyprocess==0.7.0
py-spy==0.3.3
pyarrow==2.0.0
pyasn1==0.4.8
pyasn1-modules==0.2.8
pycparser==2.20
pydeck==0.5.0
Pygments==2.7.4
pyparsing==2.4.7
pyrsistent==0.17.3
python-dateutil==2.8.1
pytz==2020.5
PyYAML==5.4
pyzmq==20.0.0
radcad==0.5.3
ray==1.1.0
redis==3.5.3
regex==2020.11.13
requests==2.25.1
rsa==4.7
s3transfer==0.3.4
Send2Trash==1.5.0
six==1.15.0
smmap==3.0.4
streamlit==0.74.1
terminado==0.9.2
testpath==0.4.4
toml==0.10.2
toolz==0.11.1
tornado==6.1
traitlets==5.0.5
typed-ast==1.4.2
typing-extensions==3.7.4.3
tzlocal==2.1
urllib3==1.26.5
validators==0.18.2
wcwidth==0.2.5
webencodings==0.5.1
widgetsnbextension==3.5.1
yarl==1.6.3
# Runtime dependencies for the Streamlit Game of Life example
numpy
pandas
matplotlib
streamlit>=1.54.0
radcad==0.13.0
2 changes: 1 addition & 1 deletion noxfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import nox

# Select the Python versions to test against (these must be installed on the system)
python_versions = ['3.8', '3.9', '3.10', '3.11', '3.12']
python_versions = ['3.10', '3.11', '3.12']

# Configure radCAD for tests
if sys.platform.startswith('win'):
Expand Down
37 changes: 14 additions & 23 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,57 +5,48 @@ description = "A Python framework for designing, testing, and validating complex
authors = [
{name = "CADLabs", email = "benschza@users.noreply.github.com"},
]
requires-python = ">=3.8, <3.13"
requires-python = ">=3.10, <3.13"
dependencies = [
"pathos<1.0.0,>=0.2.7",
"pandas<=2.0.3; python_version < '3.9'",
"pandas>2.0.3; python_version >= '3.9'",
"pandas>2.0.3",
"py<2.0.0,>=1.11.0",
"numpy<1.25; python_version < '3.9'",
"numpy<1.26.4,>=1.25; python_version >= '3.9'",
"numpy<1.26.4,>=1.25",
"fn-py<1.0.0,>=0.6.0",
]

[project.optional-dependencies]
compat = [
"cadCAD<0.5.0; python_version < '3.9'",
"cadCAD>=0.5.0; python_version >= '3.9'",
"cadCAD>=0.5.0",
]
extension-backend-ray = [
"ray<3.0.0,>=2.0.0",
# Ray 2.54+ ships patched wheels, but no macOS x86_64 wheels.
"ray<3.0.0,>=2.54.0; platform_system != 'Darwin' or platform_machine != 'x86_64'",
"boto3<2.0.0,>=1.16.43",
]
docs = [
"mkdocs-material>=9.5.0",
"mkdocstrings[python]>=0.25.0",
"pymdown-extensions>=10.0",
"black>=24.0", # used by mkdocstrings to format rendered signatures
"pymdown-extensions>=10.16.1",
"black>=26.3.1", # used by mkdocstrings to format rendered signatures
]

[tool.uv]
dev-dependencies = [
"pytest==8.3.2",
"pytest>=9.0.3",
"coveralls<3.0.0,>=2.2.0",
"pytest-cov<3.0.0,>=2.10.1",
"pytest-benchmark==4.0.0",
"matplotlib<3.8.0; python_version < '3.9'",
"matplotlib>=3.8.0; python_version >= '3.9'",
"matplotlib>=3.8.0",
"plotly<5.0.0,>=4.14.1",
"ipykernel<7.0,>=6.14",
"celluloid<1.0.0,>=0.2.0",
"ipywidgets>=7.5",
"memory-profiler<1.0.0,>=0.58.0",
"black>=24.0",
"tables<=3.7.0; python_version < '3.9'",
# 3.9 has no macOS arm64 wheel at any version; 3.10.1+ ships arm64 wheels.
"tables>3.8.0,<3.10.0; python_version == '3.9'",
"tables>=3.10.1; python_version >= '3.10'",
# numexpr (a tables dependency) 2.8.6 is the last to support 3.8 but has no
# 3.12 wheels; 2.8.7+ ships 3.12 wheels but requires >=3.9.
"numexpr<=2.8.6; python_version < '3.9'",
"numexpr>=2.8.7; python_version >= '3.9'",
"black>=26.3.1",
"tables>=3.10.1",
"numexpr>=2.8.7",
"jupyter<2.0.0,>=1.0.0",
"jupyterlab>=4.0.0",
"jupyterlab>=4.5.7",
"jupyter-console<7.0.0,>=6.6.3",
]

Expand Down
6 changes: 3 additions & 3 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This file is used for Streamlit applications; this project is managed by PDM; see README for further guidance about using pip and generating a requirements.txt file (or just use PDM!)
# This file is used for Streamlit applications; the project itself is managed with uv.
numpy
radcad==0.5.3
radcad==0.13.0
matplotlib
streamlit
streamlit>=1.54.0
pandas
Loading
Loading