1load("@bazel_gazelle//:def.bzl", "gazelle_binary") 2load("@bazel_skylib//rules:copy_file.bzl", "copy_file") 3load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") 4load(":gazelle_test.bzl", "gazelle_test") 5 6go_library( 7 name = "python", 8 srcs = [ 9 "configure.go", 10 "file_parser.go", 11 "fix.go", 12 "generate.go", 13 "kinds.go", 14 "language.go", 15 "parser.go", 16 "resolve.go", 17 "std_modules.go", 18 "target.go", 19 ], 20 # NOTE @aignas 2023-12-03: currently gazelle does not support embedding 21 # generated files, but 3.11.txt is generated by a build rule. 22 # 23 # You will get a benign error like when running gazelle locally: 24 # > 8 gazelle: .../rules_python/gazelle/python/std_modules.go:24:3: pattern 3.11.txt: matched no files 25 # 26 # See following for more info: 27 # https://github.com/bazelbuild/bazel-gazelle/issues/1513 28 embedsrcs = ["stdlib_list.txt"], # keep # TODO: use user-defined version? 29 importpath = "github.com/bazelbuild/rules_python/gazelle/python", 30 visibility = ["//visibility:public"], 31 deps = [ 32 "//manifest", 33 "//pythonconfig", 34 "@bazel_gazelle//config:go_default_library", 35 "@bazel_gazelle//label:go_default_library", 36 "@bazel_gazelle//language:go_default_library", 37 "@bazel_gazelle//repo:go_default_library", 38 "@bazel_gazelle//resolve:go_default_library", 39 "@bazel_gazelle//rule:go_default_library", 40 "@com_github_bazelbuild_buildtools//build:go_default_library", 41 "@com_github_bmatcuk_doublestar_v4//:doublestar", 42 "@com_github_emirpasic_gods//lists/singlylinkedlist", 43 "@com_github_emirpasic_gods//sets/treeset", 44 "@com_github_emirpasic_gods//utils", 45 "@com_github_smacker_go_tree_sitter//:go-tree-sitter", 46 "@com_github_smacker_go_tree_sitter//python", 47 "@org_golang_x_sync//errgroup", 48 ], 49) 50 51copy_file( 52 name = "stdlib_list", 53 src = select( 54 { 55 "@rules_python//python/config_settings:is_python_3.10": "@python_stdlib_list//:stdlib_list/lists/3.10.txt", 56 "@rules_python//python/config_settings:is_python_3.11": "@python_stdlib_list//:stdlib_list/lists/3.11.txt", 57 "@rules_python//python/config_settings:is_python_3.12": "@python_stdlib_list//:stdlib_list/lists/3.12.txt", 58 "@rules_python//python/config_settings:is_python_3.8": "@python_stdlib_list//:stdlib_list/lists/3.8.txt", 59 "@rules_python//python/config_settings:is_python_3.9": "@python_stdlib_list//:stdlib_list/lists/3.9.txt", 60 # This is the same behaviour as previously 61 "//conditions:default": "@python_stdlib_list//:stdlib_list/lists/3.11.txt", 62 }, 63 ), 64 out = "stdlib_list.txt", 65 allow_symlink = True, 66) 67 68# gazelle:exclude testdata/ 69 70gazelle_test( 71 name = "python_test", 72 srcs = ["python_test.go"], 73 data = [ 74 ":gazelle_binary", 75 ], 76 test_dirs = glob( 77 # Use this so that we don't need to manually maintain the list. 78 ["testdata/*"], 79 exclude = ["testdata/*.md"], 80 # The directories aren't inputs themselves; we just want their 81 # names. 82 exclude_directories = 0, 83 ), 84 deps = [ 85 "@bazel_gazelle//testtools:go_default_library", 86 "@com_github_ghodss_yaml//:yaml", 87 "@io_bazel_rules_go//go/runfiles:go_default_library", 88 "@io_bazel_rules_go//go/tools/bazel:go_default_library", 89 ], 90) 91 92gazelle_binary( 93 name = "gazelle_binary", 94 languages = [":python"], 95 visibility = ["//visibility:public"], 96) 97 98filegroup( 99 name = "distribution", 100 srcs = glob(["**"]), 101 visibility = ["//:__pkg__"], 102) 103 104go_test( 105 name = "default_test", 106 srcs = [ 107 "file_parser_test.go", 108 "std_modules_test.go", 109 ], 110 embed = [":python"], 111 deps = [ 112 "@com_github_stretchr_testify//assert", 113 ], 114) 115