In my python monorepo, I have a library at `libs/g...
# general
l
In my python monorepo, I have a library at
libs/geometry
with code in
libs/geometry/kaiko/geometry
and
libs/geometry/pyproject.toml
looks like this:
Copy code
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"

[tool.poetry]
name = "kaiko-geometry"
version = "0.0.1"
description = "Kaiko's shared library to help manipulating shape and geometric primitives."
authors = [
    "Axel Lagre <axel@kaiko.ai>"
]
packages = [
  { include = "kaiko" }
]
When I package the library with
./pants package libs/geometry
, I get a wheel whose python code is in directory
libs/geometry/kaiko/geometry
in the wheel. Whereas the code should be in
kaiko/geometry
(because that's the package name). If I
poetry build
instead of
pants
I get the expected behavior. Any clue as to what I am missing in
libs/geometry/BUILD
? Here is its content:
Copy code
python_requirements(name="kaiko-geometry-reqs") # Used for local sandboxes, dependencies are pinned

poetry_requirements(name="kaiko-geometry-poetry-reqs") # Used for deployment, dependencies are loose

python_sources(
  name="kaiko-geometry",
  sources=["kaiko/geometry/**/*.py"],
  dependencies=[
      ":kaiko-geometry-reqs#numpy",
    ]
)

python_distribution( # <https://www.pantsbuild.org/docs/python-distributions>
  name="kaiko-geometry-dist",
  dependencies=[":kaiko-geometry-poetry-reqs", ":kaiko-geometry"],
  provides=python_artifact(
    name="kaiko-geometry-dist",
    version="0.0.1"
  ),
  sdist = False # only use wheel
)
1
r
How have you defined your source roots?
l
I have this in the top-level `pants.toml`:
Copy code
[source]
root_patterns = ["/"]
Is this what you mean?
r
yeah! And what does your import statement looks like? If you are doing
Copy code
from  kaiko.gemotry import ..
Then your root pattern should have
Copy code
root_patterns = ["/", "/lib/geometry]
l
Yep that's how the imports look like. Thanks for the help!
👍 1
Have to log off now, but will tell you tomorrow if this fixed it 😉
👋 1
Yes that was it 🙏 Changed to:
Copy code
[source]
marker_filenames = ["pyproject.toml"]