# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

[build-system]
requires = ["maturin>=1.6,<2.0"]
build-backend = "maturin"

[project]
name = "dfx_engine"
requires-python = ">=3.10"
classifiers = [
  "Programming Language :: Rust",
  "Programming Language :: Python :: Implementation :: CPython",
]
dynamic = ["version"]
# No `dependencies`, deliberately, though `dfx_engine.session` imports
# `dfx_storage` and `dfx_udfs` at module scope and `import dfx_engine` fails
# without them. Declaring them does not work: neither is published, so
# resolution fails before a wheel is built at all --
#
#   Because dfx-storage was not found in the package registry and your
#   project depends on dfx-storage, we can conclude that your project's
#   requirements are unsatisfiable.
#
# which would break the build rather than document the requirement. The
# requirement is in the README instead, next to the install command that
# satisfies it.

[tool.maturin]
features = ["pyo3/extension-module"]
python-source = "python"
module-name = "dfx_engine._internal"

# See the same block in `../storage-library/pyproject.toml`: this caps pytest's
# rootdir search so the suite does not inherit the repository root's pytest
# settings and its numpy-importing `conftest.py`.
[tool.pytest.ini_options]
testpaths = ["python/tests"]
python_files = ["_test_*.py"]
