git: 17b6e6b29c43 - main - math/py-formulaic: New port: Implementation of Wilkinson formulas

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Wed, 28 Dec 2022 23:06:25 UTC
The branch main has been updated by yuri:

URL: https://cgit.FreeBSD.org/ports/commit/?id=17b6e6b29c43644d908e93c83ce4297276e6be2a

commit 17b6e6b29c43644d908e93c83ce4297276e6be2a
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2022-12-28 22:30:03 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2022-12-28 23:06:22 +0000

    math/py-formulaic: New port: Implementation of Wilkinson formulas
---
 math/Makefile               |   1 +
 math/py-formulaic/Makefile  |  41 ++++++++++++
 math/py-formulaic/distinfo  |   3 +
 math/py-formulaic/pkg-descr |  16 +++++
 math/py-formulaic/pkg-plist | 148 ++++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 209 insertions(+)

diff --git a/math/Makefile b/math/Makefile
index 4c59c69777fc..442c1af203e8 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -905,6 +905,7 @@
     SUBDIR += py-fenics-ffcx
     SUBDIR += py-fenics-ufl
     SUBDIR += py-flax
+    SUBDIR += py-formulaic
     SUBDIR += py-fpylll
     SUBDIR += py-fraction
     SUBDIR += py-fvcore
diff --git a/math/py-formulaic/Makefile b/math/py-formulaic/Makefile
new file mode 100644
index 000000000000..b9f2463bb499
--- /dev/null
+++ b/math/py-formulaic/Makefile
@@ -0,0 +1,41 @@
+PORTNAME=	formulaic
+PORTVERSION=	0.5.2
+CATEGORIES=	math python # statistics
+MASTER_SITES=	CHEESESHOP
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER=	yuri@FreeBSD.org
+COMMENT=	Implementation of Wilkinson formulas
+WWW=		https://github.com/matthewwardrop/formulaic
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+PY_DEPENDS=	${PYTHON_PKGNAMEPREFIX}astor>=0.8:devel/py-astor@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}cached-property>=1.3.0:devel/py-cached-property@${PY_FLAVOR} \
+		${PYNUMY} \
+		${PYTHON_PKGNAMEPREFIX}pandas>=1.0:math/py-pandas@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}scipy>=1.6:science/py-scipy@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}typing-extensions>=4.2.0:devel/py-typing-extensions@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}wrapt>=1.0:devel/py-wrapt@${PY_FLAVOR}
+BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}build>0:devel/py-build@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}installer>0:devel/py-installer@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}hatch-vcs>0:devel/py-hatch-vcs@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}hatchling>0:devel/py-hatchling@${PY_FLAVOR} \
+		${PY_DEPENDS}
+RUN_DEPENDS=	${PY_DEPENDS}
+
+USES=		python:3.7+
+USE_PYTHON=	flavors pytest
+
+NO_ARCH=	yes
+
+TEST_ENV=	${MAKE_ENV} PYTHONPATH=${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}
+
+do-build:
+	@cd ${BUILD_WRKSRC} && ${SETENV} ${MAKE_ENV} ${PYTHON_CMD} -m build --wheel --no-isolation --outdir ${WRKDIR}
+
+do-install:
+	@cd ${INSTALL_WRKSRC} && ${SETENV} ${MAKE_ENV} ${PYTHON_CMD} -m installer ${WRKDIR}/*.whl --destdir ${STAGEDIR}
+
+.include <bsd.port.mk>
diff --git a/math/py-formulaic/distinfo b/math/py-formulaic/distinfo
new file mode 100644
index 000000000000..e7a9bac3b6de
--- /dev/null
+++ b/math/py-formulaic/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1672264736
+SHA256 (formulaic-0.5.2.tar.gz) = 25b1e1c8dff73f0b11c0028a6ab350222de6bbc47b316ccb770cec16189cef53
+SIZE (formulaic-0.5.2.tar.gz) = 259138
diff --git a/math/py-formulaic/pkg-descr b/math/py-formulaic/pkg-descr
new file mode 100644
index 000000000000..28318f1e5ed7
--- /dev/null
+++ b/math/py-formulaic/pkg-descr
@@ -0,0 +1,16 @@
+Formulaic is a high-performance implementation of Wilkinson formulas for Python.
+
+It provides:
+* high-performance dataframe to model-matrix conversions.
+* support for reusing the encoding choices made during conversion of one
+  data-set on other datasets.
+* extensible formula parsing.
+* extensible data input/output plugins, with implementations for:
+  * input:
+    * pandas.DataFrame
+    * pyarrow.Table
+  * output:
+    * pandas.DataFrame
+    * numpy.ndarray
+    * scipy.sparse.CSCMatrix
+* support for symbolic differentiation of formulas (and hence model matrices).
diff --git a/math/py-formulaic/pkg-plist b/math/py-formulaic/pkg-plist
new file mode 100644
index 000000000000..a5eb7e6497e4
--- /dev/null
+++ b/math/py-formulaic/pkg-plist
@@ -0,0 +1,148 @@
+%%PYTHON_SITELIBDIR%%/formulaic-0.5.2.dist-info/METADATA
+%%PYTHON_SITELIBDIR%%/formulaic-0.5.2.dist-info/RECORD
+%%PYTHON_SITELIBDIR%%/formulaic-0.5.2.dist-info/WHEEL
+%%PYTHON_SITELIBDIR%%/formulaic-0.5.2.dist-info/licenses/LICENSE
+%%PYTHON_SITELIBDIR%%/formulaic/__init__.py
+%%PYTHON_SITELIBDIR%%/formulaic/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/__pycache__/_version%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/__pycache__/_version%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/__pycache__/errors%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/__pycache__/errors%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/__pycache__/formula%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/__pycache__/formula%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/__pycache__/model_matrix%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/__pycache__/model_matrix%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/__pycache__/model_spec%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/__pycache__/model_spec%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/__pycache__/sugar%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/__pycache__/sugar%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/_version.py
+%%PYTHON_SITELIBDIR%%/formulaic/errors.py
+%%PYTHON_SITELIBDIR%%/formulaic/formula.py
+%%PYTHON_SITELIBDIR%%/formulaic/materializers/__init__.py
+%%PYTHON_SITELIBDIR%%/formulaic/materializers/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/materializers/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/materializers/__pycache__/arrow%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/materializers/__pycache__/arrow%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/materializers/__pycache__/base%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/materializers/__pycache__/base%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/materializers/__pycache__/pandas%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/materializers/__pycache__/pandas%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/materializers/arrow.py
+%%PYTHON_SITELIBDIR%%/formulaic/materializers/base.py
+%%PYTHON_SITELIBDIR%%/formulaic/materializers/pandas.py
+%%PYTHON_SITELIBDIR%%/formulaic/materializers/types/__init__.py
+%%PYTHON_SITELIBDIR%%/formulaic/materializers/types/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/materializers/types/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/materializers/types/__pycache__/enums%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/materializers/types/__pycache__/enums%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/materializers/types/__pycache__/evaluated_factor%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/materializers/types/__pycache__/evaluated_factor%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/materializers/types/__pycache__/factor_values%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/materializers/types/__pycache__/factor_values%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/materializers/types/__pycache__/scoped_factor%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/materializers/types/__pycache__/scoped_factor%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/materializers/types/__pycache__/scoped_term%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/materializers/types/__pycache__/scoped_term%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/materializers/types/enums.py
+%%PYTHON_SITELIBDIR%%/formulaic/materializers/types/evaluated_factor.py
+%%PYTHON_SITELIBDIR%%/formulaic/materializers/types/factor_values.py
+%%PYTHON_SITELIBDIR%%/formulaic/materializers/types/scoped_factor.py
+%%PYTHON_SITELIBDIR%%/formulaic/materializers/types/scoped_term.py
+%%PYTHON_SITELIBDIR%%/formulaic/model_matrix.py
+%%PYTHON_SITELIBDIR%%/formulaic/model_spec.py
+%%PYTHON_SITELIBDIR%%/formulaic/parser/__init__.py
+%%PYTHON_SITELIBDIR%%/formulaic/parser/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/parser/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/parser/__pycache__/parser%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/parser/__pycache__/parser%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/parser/__pycache__/utils%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/parser/__pycache__/utils%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/parser/algos/__init__.py
+%%PYTHON_SITELIBDIR%%/formulaic/parser/algos/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/parser/algos/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/parser/algos/__pycache__/tokenize%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/parser/algos/__pycache__/tokenize%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/parser/algos/__pycache__/tokens_to_ast%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/parser/algos/__pycache__/tokens_to_ast%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/parser/algos/tokenize.py
+%%PYTHON_SITELIBDIR%%/formulaic/parser/algos/tokens_to_ast.py
+%%PYTHON_SITELIBDIR%%/formulaic/parser/parser.py
+%%PYTHON_SITELIBDIR%%/formulaic/parser/types/__init__.py
+%%PYTHON_SITELIBDIR%%/formulaic/parser/types/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/parser/types/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/parser/types/__pycache__/ast_node%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/parser/types/__pycache__/ast_node%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/parser/types/__pycache__/factor%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/parser/types/__pycache__/factor%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/parser/types/__pycache__/formula_parser%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/parser/types/__pycache__/formula_parser%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/parser/types/__pycache__/operator%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/parser/types/__pycache__/operator%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/parser/types/__pycache__/operator_resolver%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/parser/types/__pycache__/operator_resolver%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/parser/types/__pycache__/structured%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/parser/types/__pycache__/structured%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/parser/types/__pycache__/term%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/parser/types/__pycache__/term%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/parser/types/__pycache__/token%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/parser/types/__pycache__/token%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/parser/types/ast_node.py
+%%PYTHON_SITELIBDIR%%/formulaic/parser/types/factor.py
+%%PYTHON_SITELIBDIR%%/formulaic/parser/types/formula_parser.py
+%%PYTHON_SITELIBDIR%%/formulaic/parser/types/operator.py
+%%PYTHON_SITELIBDIR%%/formulaic/parser/types/operator_resolver.py
+%%PYTHON_SITELIBDIR%%/formulaic/parser/types/structured.py
+%%PYTHON_SITELIBDIR%%/formulaic/parser/types/term.py
+%%PYTHON_SITELIBDIR%%/formulaic/parser/types/token.py
+%%PYTHON_SITELIBDIR%%/formulaic/parser/utils.py
+%%PYTHON_SITELIBDIR%%/formulaic/sugar.py
+%%PYTHON_SITELIBDIR%%/formulaic/transforms/__init__.py
+%%PYTHON_SITELIBDIR%%/formulaic/transforms/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/transforms/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/transforms/__pycache__/basis_spline%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/transforms/__pycache__/basis_spline%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/transforms/__pycache__/contrasts%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/transforms/__pycache__/contrasts%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/transforms/__pycache__/identity%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/transforms/__pycache__/identity%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/transforms/__pycache__/poly%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/transforms/__pycache__/poly%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/transforms/__pycache__/scale%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/transforms/__pycache__/scale%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/transforms/basis_spline.py
+%%PYTHON_SITELIBDIR%%/formulaic/transforms/contrasts.py
+%%PYTHON_SITELIBDIR%%/formulaic/transforms/identity.py
+%%PYTHON_SITELIBDIR%%/formulaic/transforms/poly.py
+%%PYTHON_SITELIBDIR%%/formulaic/transforms/scale.py
+%%PYTHON_SITELIBDIR%%/formulaic/utils/__init__.py
+%%PYTHON_SITELIBDIR%%/formulaic/utils/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/utils/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/utils/__pycache__/calculus%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/utils/__pycache__/calculus%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/utils/__pycache__/cast%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/utils/__pycache__/cast%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/utils/__pycache__/constraints%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/utils/__pycache__/constraints%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/utils/__pycache__/context%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/utils/__pycache__/context%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/utils/__pycache__/iterators%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/utils/__pycache__/iterators%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/utils/__pycache__/layered_mapping%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/utils/__pycache__/layered_mapping%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/utils/__pycache__/sentinels%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/utils/__pycache__/sentinels%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/utils/__pycache__/sparse%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/utils/__pycache__/sparse%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/utils/__pycache__/stateful_transforms%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/utils/__pycache__/stateful_transforms%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/formulaic/utils/calculus.py
+%%PYTHON_SITELIBDIR%%/formulaic/utils/cast.py
+%%PYTHON_SITELIBDIR%%/formulaic/utils/constraints.py
+%%PYTHON_SITELIBDIR%%/formulaic/utils/context.py
+%%PYTHON_SITELIBDIR%%/formulaic/utils/iterators.py
+%%PYTHON_SITELIBDIR%%/formulaic/utils/layered_mapping.py
+%%PYTHON_SITELIBDIR%%/formulaic/utils/sentinels.py
+%%PYTHON_SITELIBDIR%%/formulaic/utils/sparse.py
+%%PYTHON_SITELIBDIR%%/formulaic/utils/stateful_transforms.py