proud-planet-36170
05/31/2024, 9:37 PMpython-app
should pull in python-lib
in pants but it's not
3rdparty
python
default.lock
python-lib
BUILD
pyproject.toml
poetry.lock
python_lib
BUILD
__init__.py
file.py
test_file.py
python-app
BUILD
pants.lock
pyproject.toml
poetry.lock
python_app
BUILD
file.py
test_file.py
proud-planet-36170
05/31/2024, 9:37 PMpoetry_requirements(
name="poetry",
module_mapping={"boto3-stubs": ["mypy_boto3_dms"]},
)
python_distribution(
name="python_lib",
provides=python_artifact(
name="python-lib",
version="0.2.0",
),
sdist=False,
interpreter_constraints=[">=3.9,<4.0"],
dependencies=[
"python-lib/python_lib:python_lib"
],
)
proud-planet-36170
05/31/2024, 9:38 PM__defaults__(all=dict(resolve="python-app"))
poetry_requirements(
name="poetry",
module_mapping={
"psycopg2-binary": ["psycopg2"],
},
)
python_aws_lambda_function(
name="lambda",
runtime="python3.11",
# Pants will convert this to `project.lambda_example:example_handler`.
handler="python_app/handler.py:lambda_handler",
dependencies=[
"python-app/python_app:python_app",
],
)
proud-planet-36170
05/31/2024, 9:38 PM[GLOBAL]
pants_version = "2.19.1"
backend_packages = [
"pants.backend.awslambda.python",
"pants.backend.docker",
"pants.backend.docker.lint.hadolint",
"pants.backend.python",
"pants.backend.python.lint.black",
]
pants_ignore.add = ["venv"]
[docker]
# Requires "HOME" in build_args for macOS <https://github.com/pantsbuild/pants/issues/20605#issuecomment-2020309567>
use_buildx = true
# Pants doesn't currently supply git metadata (there's an open GH issue somewhere...), however,
# it can utilize environment variables. It also has an "init" script hook (.pants.bootstrap)
# where arbitrary environment variables can be set.
# See <https://pantsbuild.slack.com/archives/C046T6T9U/p1676292672358099>
build_args = ["GIT_COMMIT", "HOME"]
[hadolint]
config_discovery = true
[python]
enable_resolves = true
interpreter_constraints = ['>=3.11']
[python-repos]
find_links = ["%(pants_distdir)s"]
# This makes pants put relative paths in pants.lock instead of absolute
path_mappings = ["WHEELS_DIR|%(pants_distdir)s"]
[python.resolves]
python-default = "3rdparty/python/default.lock"
python-app = "python-app/pants.lock"
[source]
marker_filenames = ["pyproject.toml"]
proud-planet-36170
05/31/2024, 9:39 PMpython-app2
later with a different resolve and also reference python-lib
under the assumption python-app and python-app2 run independently and may have overlapping or conflicting dependenciesproud-planet-36170
05/31/2024, 9:43 PMpants generate-lockfiles --resolve=python-app
I get No matching distribution found for python-lib
unless I run pants package python-lib:
first (this makes sense because the find_links config picks up the wheel), but I thought pants should handle resolving dependencies for me?proud-planet-36170
05/31/2024, 9:48 PMpants package python-lib: ; pants generate-lockfiles --resolve=python-app
this works fine, but if I run pants test ::
on a fresh clone of the repo, it fails in python-app
No such file or directory: '/home/user/repo/dist/python_lib-0.1.0-py3-none-any.whl
(since the artifact/wheel dep isn't built first/automatically)careful-address-89803
06/02/2024, 4:11 AMcareful-address-89803
06/02/2024, 4:14 AMcareful-address-89803
06/02/2024, 4:22 AMproud-planet-36170
06/03/2024, 11:28 AMproud-planet-36170
06/03/2024, 11:29 AMcareful-address-89803
06/03/2024, 2:12 PMpython_sources
, not packages. You can manually specify dependencies on the python_distribution
itself, although again they'd have to be in the same resolve (so, probably using parametrisation).careful-address-89803
06/03/2024, 2:17 PMproud-planet-36170
06/03/2024, 5:02 PMproud-planet-36170
06/03/2024, 5:03 PMproud-planet-36170
06/03/2024, 5:04 PMpants
is working really well for Docker/Lambda packaging--just not sure the optimal approach given the majority of the code is independentproud-planet-36170
06/03/2024, 5:05 PMproud-planet-36170
06/03/2024, 5:08 PMpsycopg2
is also somewhat annoying given psycopg2
source dist vs psycopg2-binary
bin dist although that and urllib3-future are arguably problems with Python's lack of "provides" functionality with packages (so I don't expect pants to magically solve that for me)proud-planet-36170
06/03/2024, 5:45 PMcareful-address-89803
06/04/2024, 3:03 AMpython_sources
, is that not working?)