target 'library_pytest' not declared in package ''
Opened this issue · 6 comments
What I am doing:
I copied the WORKSPACE
setup verbatim and added a poetry dependency
to one of my targets. This configuration worked, then I worked on some other Bazel functionality for my project. When I tried running tests after I was done with my other functionality, the rules_poetry
seem to no longer work.
That other functionality has nothing to do with poetry or pip, but it does involve building wheels from my source code, it uses the standard python_rules
py_package
and py_wheel
for that.
What is the problem:
When I run bazel test ...
, I get this error:
bazel test ...
ERROR: /Users/me/Work/dialog_platform/_experimental_lib_for_bazel/BUILD.bazel:16:8: no such target '@poetry//:library_fastapi': target 'library_fastapi' not declared in package '' defined by /private/var/tmp/_bazel_me/69e3e7ed8e1fbf19ba79afe448a27e50/external/poetry/BUILD and referenced by '//_experimental_lib_for_bazel:test_experimental_lib_for_bazel'
ERROR: /Users/me/Work/dialog_platform/_experimental_lib_for_bazel/BUILD.bazel:16:8: no such target '@poetry//:library_pytest': target 'library_pytest' not declared in package '' defined by /private/var/tmp/_bazel_me/69e3e7ed8e1fbf19ba79afe448a27e50/external/poetry/BUILD and referenced by '//_experimental_lib_for_bazel:test_experimental_lib_for_bazel'
ERROR: Analysis of target '//_experimental_lib_for_bazel:test_experimental_lib_for_bazel' failed; build aborted: Analysis failed
INFO: Elapsed time: 0.432s
INFO: 0 processes.
FAILED: Build did NOT complete successfully (0 packages loaded, 0 targets configured)
FAILED: Build did NOT complete successfully (0 packages loaded, 0 targets configured)
This is the complete output of the command.
I tried reproducing this problem on another computer, but couldn't.
I tried running bazel clean
and cleaning my poetry caches as well. It did not help
what is in the generated build file private/var/tmp/_bazel_me/69e3e7ed8e1fbf19ba79afe448a27e50/external/poetry/BUILD
?
Hello, sorry, I was off work.
Here are the contents of /private/var/tmp/_bazel_me/69e3e7ed8e1fbf19ba79afe448a27e50/external/poetry/BUILD
load("//:defs.bzl", "download_wheel")
load("//:defs.bzl", "noop")
load("//:defs.bzl", "pip_install")
@ibolit can you make a self contained repro? do you know if you have multiple repo rules named poetry
that could lead to one being overwritten?
@NathanHowell I am not sure I can, I will try some time later. I seriously suspect something "got broken" while I was working on my own rules, because, for one thing, the "regular" poetry stopped installing some packages (like, pytest), it just hung and did nothing, but that stopped when I cleaned poetry caches.
About other rules named poetry
— I did have that at some point. I am using an inhouse tool that seemed to require a poetry executable, which only checked that an executable named poetry existed and that it was indeed executable, but didn't use it, so I wrote an sh_binary
with the name poetry
to satisfy that. However, it turned out that I could use that inouse tool without it checking for poetry
, so I removed that sh_binary
altogether.
For now, I have replaced rules_poetry
with rules_python
/pip_parse
, but using poetry would be much more preferable. I will try and check if the commits with poetry_rules
work on my colleagues' machines.
Are there any more files I could check or caches I could clean besides bazel clean
?
@NathanHowell After I wrote the previous thing, I asked myself that last question and then googled it. I found this:
rm -r $(bazel info repository_cache)
After that, my commits that still have rule_poetry
in them, started working again.
In fact, you mentioning other targets named poetry
helped me a lot. Thank you for your patience.
Sorry, I checked again. It didn't start working
Some more information that might be useful:
Our poetry version is 1.2.2
When I try to run bazel test
on my py_test target, I get a lot of these lines in my bazel
stderr:
DEBUG: /private/var/tmp/_bazel_me/69e3e7ed8e1fbf19ba79afe448a27e50/external/com_sonia_rules_poetry/rules_poetry/poetry.bzl:80:18: Skipping pytest
Seemingly, for all of the dependencies in my pyproject.toml
, not just pytest