add prefix back
diff --git a/README.md b/README.md index 5c53ea8..b524b15 100644 --- a/README.md +++ b/README.md
@@ -12,7 +12,7 @@ In `WORKSPACE` ``` -rules_python_external_version = "37dad8910495ad71bae391db7a843a0f7a3ea902" +rules_python_external_version = "{COMMIT_SHA}" git_repository( name = "rules_python_external", @@ -32,14 +32,13 @@ In `BUILD` ``` +load("@py_deps//:requirements.bzl", "requirement") + py_binary( name = "main", srcs = ["main.py"], deps = [ - "@py_deps//boto3", + requirement("boto3"), # or @py_deps//pypi__boto3 ], ) ``` - -N.B package names are sanitized to `{package_name}.replace("-", "_").replace(".", "_").lower()`. You can use the macro -provided in `load("@py_deps//:requirements.bzl", "requirement")` to automatically transform the name.
diff --git a/src/extract_wheels.py b/src/extract_wheels.py index 30a9499..dbad34e 100644 --- a/src/extract_wheels.py +++ b/src/extract_wheels.py
@@ -24,7 +24,17 @@ def sanitise_name(name): - return name.replace("-", "_").replace(".", "_").lower() + """ + There are certain requirements around Bazel labels that we need to consider. + + rules-python automatically adds the repository root to the PYTHONPATH, meaning a package that has the same name as + a module is picked up. We workaround this by prefixing with `pypi__`. Alternatively we could require + `--noexperimental_python_import_all_repositories` be set, however this breaks rules_docker. + See: https://github.com/bazelbuild/bazel/issues/2636 + + Due to restrictions on Bazel labels we also cannot allow hyphens. See https://github.com/bazelbuild/bazel/issues/6841 + """ + return "pypi__" + name.replace("-", "_").replace(".", "_").lower() def extract_wheel(whl, directory, extras): @@ -90,7 +100,7 @@ def requirement(name): name_key = name.replace("-", "_").replace(".", "_").lower() - return "{repo}//" + name_key + return "{repo}//pypi__" + name_key """.format( requirement_labels=",".join(targets), repo=args.repo )