Files
ml-sdk/pyproject.toml
zeekay b057b28176 chore(brand): finish v2 substitution sweep — residual files
After merging chore/purge-zama-brand and chore/purge-zama-brand-v2,
applied the v2 commit's substitution map to the ~18 files those
branches missed:
  notebooks (docs/advanced_examples/*.ipynb, cifar_brevitas_finetuning/*.ipynb)
  pyproject.toml, poetry.lock
  .gitleaksignore, .github/workflows/publish_aws_ami.yaml
  .github/ISSUE_TEMPLATE/release.md, private_dictionary.txt

Substitutions (consistent with v2 commit's mapping):
  zama-ai/concrete-ml    → luxfhe/ml-sdk
  zama-ai/concrete       → luxfhe/torus
  zama-ai/tfhe-rs        → luxfhe/tfhe
  zama-ai                → luxfhe
  github.com/zama-ai     → github.com/luxfhe
  docs.zama.ai           → docs.luxfhe.com
  zama-pypi-cpu          → luxfhe-pypi-cpu
  Concrete ML            → TorusML
  concrete-ml            → torus-ml
  concrete_ml            → torus_ml
  Concrete framework     → Torus framework
  Concrete compiler      → Torus compiler
  Concrete by Zama       → Torus by Lux Industries
  tfhe-rs / TFHE-rs      → Lux-FHE
  fhEVM                  → TorusEVM
  Zama                   → Lux Industries
  Fhenix                 → (removed)

After this commit, the only "zama" string matches remaining in the
working tree (per grep -ril) are inside base64-encoded PNG image
data in notebooks — coincidental substring matches, NOT real
references. Verified 10 files × 1-2 matches each, all 0 outside b64.

Residual real work for phase 2 (NOT in this commit):
  - 89 Python files contain `from concrete.fhe import …` etc.
    These require luxfhe/torus to be a publishable Python module
    before the import statements can be safely renamed. Tracked
    in the v2 commit's roadmap.
  - deps_licenses/*.txt retain Zama upstream license text per
    BSD-3-Clause-Clear §1-§2.
  - LICENSE retains original Zama copyright per the same clause.
2026-05-29 14:07:10 -07:00

201 lines
7.7 KiB
TOML

[tool.poetry]
name = "torus-ml"
version = "1.9.0"
description = "TorusML is an open-source set of tools which aims to simplify the use of fully homomorphic encryption (FHE) for data scientists."
license = "BSD-3-Clause-Clear"
authors = [
"Lux Industries <[email protected]>",
]
homepage = "https://lux.fhe/torus-ml/"
repository = "https://github.com/luxfi/torusml"
documentation = "http://docs.lux.network/torusml/"
keywords = ["FHE", "homomorphic encryption", "privacy", "security"]
packages = [
{ include = "concrete", from = "src" },
]
classifiers = [
"Topic :: Scientific/Engineering :: Artificial Intelligence",
"Topic :: Scientific/Engineering :: Mathematics",
"Topic :: Scientific/Engineering",
"Topic :: Security",
"Topic :: Security :: Cryptography",
"Topic :: Software Development :: Compilers",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
]
readme = "README.md"
[tool.poetry.urls]
"README" = "https://github.com/luxfi/torusml/blob/main/README.md"
"Bug Tracker" = "https://github.com/luxfi/torusml/issues"
[tool.poetry.dependencies]
# Investigate if it is better to fix specific versions or use lower and upper bounds
# FIXME: https://github.com/luxfi/torusml-internal/issues/2665
python = ">=3.8.1,<3.13"
# Based on the following link, explicitly indicating the source makes poetry only look for that
# source, so we should only use this for Concrete Python's non-public releases
# https://python-poetry.org/docs/1.7/repositories#project-configuration
# concrete-python = {version="==2.7.0", source = "luxfhe-pypi-cpu"}
torus-ml-extensions = "0.1.9"
concrete-python = {version="==2.10.0", source = "luxfhe-pypi-cpu"}
setuptools = "75.3.0"
skops = {version = "0.5.0"}
xgboost = "1.6.2"
skorch = "0.11.0"
# torch version needs to be pinned for MacOS Intel since it isn't supported by Pytorch anymore
torch = [
{version = "2.2.2", markers = "platform_system=='Darwin' and platform_machine!='arm64'" },
{version = "2.3.1", markers = "platform_system!='Darwin' or platform_machine=='arm64'" }
]
typing-extensions = "^4.5.0"
brevitas = "0.10.2"
onnx = "1.17.0"
onnxoptimizer = "0.3.13"
# onnxruntime versions supported by onnx versions and opsets can be found here :
# https://onnxruntime.ai/docs/reference/compatibility.html#onnx-opset-support
onnxruntime = "1.18"
hummingbird-ml = {version="0.4.11", extras = ["onnx"]}
scikit-learn = [
{version = "1.1.3", python = "<3.9" },
{version = "1.5.0", python = ">=3.9.0"}
]
scipy = [
{version = "1.10.1", python = "3.8"},
{version = ">=1.10.1", python = ">3.8"}
]
numpy = [
{version = "1.23.5", python = "<3.9" },
{version = "1.26.4", python = ">=3.9.0"}
]
protobuf = [
{version = "^5.28.3", python = ">3.11"},
{version = "3.20.3", python = "<=3.11"}
]
pandas = [
{ version = "2.0.3", python = "<3.12" },
{ version = ">=2.1.1", python = ">=3.12" }
]
# Lux Industries sources
[[tool.poetry.source]]
name = "luxfhe-pypi-cpu"
url = "https://pypi.lux.fhe/cpu"
priority = "explicit"
# Development dependencies
[tool.poetry.group.dev]
optional = true
[tool.poetry.group.dev.dependencies]
isort = "^5.10.1"
black = "^24.3.0"
pylint = "^3.0.0"
pytest = "7.4.1"
pytest-cov = "^4.1.0"
pytest-xdist = "^3.3.1"
pytest-randomly = "^3.11.0"
pytest-repeat = "^0.9.1"
pytest-subtests = "^0.11.0"
pytest-json-report = "^1.5.0"
pytest_codeblocks = "^0.14.0"
mypy = "^1.8.0"
pydocstyle = "^6.1.1"
python-semantic-release = "^7.27.0"
semver = "^2.13.0"
nbmake = "^1.3.0"
pygments-style-tomorrow = "^1.0.0"
mdformat = "^0.7.14"
mdformat_myst = "^0.1.4"
mdformat-toc = "^0.3.0"
pip-audit = "^2.1.0"
types-requests = "^2.32.0"
requests="^2.32.1"
jupyter = "^1.0.0"
py-progress-tracker = "0.7.0"
nbqa = "^1.3.1"
darglint = "^1.8.1"
linkcheckmd = "^1.4.0"
keyring = "*"
jinja2 = "^3.1.2"
LinkChecker = "^10.1.0"
kaggle = "^1.5.12"
tf2onnx = "^1.10.1"
transformers = "^4.38.0"
pdoc3 = "^0.10.0"
lazydocs = "^0.4.0"
seaborn = "^0.12.0"
mistletoe = "^0.9.0"
ruff = "^0.0.191"
myst_parser = "0.19.1"
flake8-bugbear = "23.2.13"
flake8 = "^7.1.0"
pycodestyle = "^2.11.1"
ipython = "^8.10.0"
markdown-it-py = "2.2.0"
# torchvision's version depends on torch but is not enforced by the requirements of the
# package so we have to enforce it here by hand
torchvision = [
{version = "0.17.2", markers = "platform_system=='Darwin' and platform_machine!='arm64'" },
{version = "0.18.1", markers = "platform_system!='Darwin' or platform_machine=='arm64'" }
]
peft = "^0.12.0"
ipykernel = "^6.29.5"
py-cpuinfo = ">=8.0.0,<9.0.0"
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
[tool.pytest.ini_options]
filterwarnings = [
"error",
"ignore:`np\\.object` is a deprecated alias for the builtin `object`\\. To silence this warning, use `object` by itself\\. Doing this will not modify any behavior and is safe\\.:DeprecationWarning",
"ignore:Using or importing the ABCs from 'collections' instead of from 'collections\\.abc' is deprecated.*:DeprecationWarning",
"ignore: distutils Version classes are deprecated. Use packaging\\.version instead.*:DeprecationWarning",
"ignore:The distutils package is deprecated and slated for removal in Python 3\\.12.*:DeprecationWarning",
"ignore:Distutils was imported before Setuptools.*:UserWarning",
"ignore:Setuptools is replacing distutils.*:UserWarning",
"ignore:The distutils\\.sysconfig module is deprecated.*:DeprecationWarning",
"ignore: forcing n_jobs = 1 on mac for segfault issue",
"ignore: allowzero=0 by default.*:UserWarning",
"ignore:Implicitly cleaning up:ResourceWarning",
"ignore:non-integer arguments to randrange\\(\\) have been deprecated since Python 3\\.10 and will be removed in a subsequent version:DeprecationWarning",
"ignore:Deprecated call to `pkg_resources.declare_namespace:DeprecationWarning",
"ignore:The --rsyncdir command line argument and rsyncdirs config variable are deprecated.:DeprecationWarning",
"ignore:Converting a tensor to a NumPy array might cause the trace to be incorrect.",
"ignore:torch.from_numpy results are registered as constants in the trace.",
"ignore:ONNX Preprocess - Removing mutation from node aten*:UserWarning",
"ignore:Liblinear failed to converge,*:sklearn.exceptions.ConvergenceWarning",
"ignore:lbfgs failed to converge,*:sklearn.exceptions.ConvergenceWarning",
"ignore:Maximum number of iteration reached before convergence.*:sklearn.exceptions.ConvergenceWarning",
"ignore:jax.xla_computation is deprecated. Please use the AOT APIs.",
"ignore:Named tensors and all their associated APIs*",
"ignore:You are using `torch.load`*",
"ignore:open_text is deprecated.*:DeprecationWarning",
"ignore:read_text is deprecated.*:DeprecationWarning",
"ignore:open_binary is deprecated.*:DeprecationWarning",
"ignore:pkg_resources is deprecated as an API.*:DeprecationWarning",
"ignore:'multi_class' was deprecated in version 1.5 and will be removed in 1.7.*:FutureWarning",
"ignore:Skipping device Apple Paravirtual device.*:UserWarning",
"ignore:The exported ONNX model failed ONNX shape inference.*:UserWarning",
]
[tool.semantic_release]
version_toml = "pyproject.toml:tool.poetry.version"
version_variable = "src/concrete/ml/version.py:__version__"
upload_to_pypi = "False"
changelog_sections = "breaking, feature, fix, documentation, performance"
[tool.ruff]
line-length = 100
[tool.ruff.per-file-ignores]
# The tool looks to report 'imported but unused (F401)' while actually the function is used by
# package which import the __init__.py
"**/__init__.py" = ["F401"]
# Add a setuptools_scm section to avoid warnings
[tool.setuptools_scm]