Adding kwargs to gazelle_python_manifest (#1289)

Adding kwargs to gazelle_python_manifest, so we can set the tags and
size to the test. This is similar to:


https://github.com/bazelbuild/rules_python/blob/5b8fa22a2f22501b18b4aea97c5dbfe3a6913a0c/python/pip_install/requirements.bzl#L20-L62

Alternatively, we can add individual `go_test` attributes as needed.
Please advice which way is preferred.
diff --git a/examples/bzlmod_build_file_generation/BUILD.bazel b/examples/bzlmod_build_file_generation/BUILD.bazel
index c5e27c2..bd2fc80 100644
--- a/examples/bzlmod_build_file_generation/BUILD.bazel
+++ b/examples/bzlmod_build_file_generation/BUILD.bazel
@@ -53,6 +53,7 @@
         "//:requirements_lock.txt",
         "//:requirements_windows.txt",
     ],
+    tags = ["exclusive"],
     # NOTE: we can use this flag in order to make our setup compatible with
     # bzlmod.
     use_pip_repository_aliases = True,
diff --git a/gazelle/manifest/defs.bzl b/gazelle/manifest/defs.bzl
index f1266a0..d5afe7c 100644
--- a/gazelle/manifest/defs.bzl
+++ b/gazelle/manifest/defs.bzl
@@ -25,7 +25,8 @@
         pip_repository_name = "",
         pip_deps_repository_name = "",
         manifest = ":gazelle_python.yaml",
-        use_pip_repository_aliases = False):
+        use_pip_repository_aliases = False,
+        **kwargs):
     """A macro for defining the updating and testing targets for the Gazelle manifest file.
 
     Args:
@@ -39,6 +40,8 @@
         pip_deps_repository_name: deprecated - the old pip_install target name.
         modules_mapping: the target for the generated modules_mapping.json file.
         manifest: the target for the Gazelle manifest file.
+        **kwargs: other bazel attributes passed to the target target generated by
+            this macro.
     """
     if pip_deps_repository_name != "":
         # buildifier: disable=print
@@ -102,6 +105,14 @@
         tags = ["manual"],
     )
 
+    attrs = {
+        "env": {
+            "_TEST_MANIFEST": "$(rootpath {})".format(manifest),
+            "_TEST_MANIFEST_GENERATOR_HASH": "$(rootpath {})".format(manifest_generator_hash),
+            "_TEST_REQUIREMENTS": "$(rootpath {})".format(requirements),
+        },
+        "size": "small",
+    }
     go_test(
         name = "{}.test".format(name),
         srcs = [Label("//manifest/test:test.go")],
@@ -110,14 +121,10 @@
             requirements,
             manifest_generator_hash,
         ],
-        env = {
-            "_TEST_MANIFEST": "$(rootpath {})".format(manifest),
-            "_TEST_MANIFEST_GENERATOR_HASH": "$(rootpath {})".format(manifest_generator_hash),
-            "_TEST_REQUIREMENTS": "$(rootpath {})".format(requirements),
-        },
         rundir = ".",
         deps = [Label("//manifest")],
-        size = "small",
+        # kwargs could contain test-specific attributes like size or timeout
+        **dict(attrs, **kwargs)
     )
 
     native.filegroup(