전역

전역 환경에 등록된 객체, 함수, 모듈입니다.

회원

모두

bool all(elements)

모든 요소가 true로 평가되거나 컬렉션이 비어 있으면 true를 반환합니다. 요소는 bool 함수를 사용하여 불리언으로 변환됩니다.
all(["hello", 3, True]) == True
all([-1, 0, 1]) == False

매개변수

매개변수 설명
elements 필수
문자열 또는 요소 모음입니다.

analysis_test_transition

transition analysis_test_transition(settings)

분석 테스트 규칙의 종속 항목에 적용할 구성 전환을 만듭니다. 이 전환은 analysis_test = True이 있는 규칙의 속성에만 적용될 수 있습니다. 이러한 규칙은 기능이 제한되어 있으므로 (예: 종속 항목 트리의 크기가 제한됨) 이 함수를 사용하여 만든 전환은 transition을 사용하여 만든 전환에 비해 잠재적 범위가 제한됩니다.

이 함수는 주로 분석 테스트 프레임워크 핵심 라이브러리를 용이하게 하기 위해 설계되었습니다. 권장사항은 관련 문서 (또는 구현)를 참고하세요.

매개변수

매개변수 설명
settings required
이 구성 전환에서 설정해야 하는 구성 설정에 관한 정보가 포함된 사전입니다. 키는 빌드 설정 라벨이고 값은 전환 후의 새 값입니다. 다른 모든 설정은 변경되지 않습니다. 분석 테스트를 통과하기 위해 설정해야 하는 특정 구성 설정을 선언하는 데 사용합니다.

모두

bool any(elements)

하나 이상의 요소가 True로 평가되면 true를 반환합니다. 요소는 bool 함수를 사용하여 불리언으로 변환됩니다.
any([-1, 0, 1]) == True
any([False, 0, ""]) == False

매개변수

매개변수 설명
elements 필수
문자열 또는 요소 모음입니다.

archive_override

None archive_override(module_name, urls, integrity='', strip_prefix='', patches=[], patch_cmds=[], patch_strip=0)

이 종속 항목이 레지스트리가 아닌 특정 위치의 보관 파일(zip, gzip 등)에서 가져와야 함을 지정합니다. 이 디렉티브는 루트 모듈에서만 적용됩니다. 즉, 모듈이 다른 모듈의 종속 항목으로 사용되는 경우 자체 재정의는 무시됩니다.

매개변수

매개변수 설명
module_name required
이 재정의를 적용할 Bazel 모듈 종속 항목의 이름입니다.
urls string; or Iterable of strings; 필수
보관 파일의 URL입니다. http(s):// 또는 file:// URL일 수 있습니다.
integrity 기본값 = ''
보관 파일의 예상 체크섬으로, 하위 요소 무결성 형식입니다.
strip_prefix 기본값 = ''
추출된 파일에서 제거할 디렉터리 접두사입니다.
patches Iterable of strings; default = []
이 모듈에 적용할 패치 파일을 가리키는 라벨 목록입니다. 패치 파일은 최상위 프로젝트의 소스 트리에 있어야 합니다. 목록 순서대로 적용됩니다.
patch_cmds Iterable of strings; default = []
패치가 적용된 후 Linux/Macos에 적용할 Bash 명령어 시퀀스입니다.
patch_strip 기본값 = 0
Unix 패치의 --strip 인수와 동일합니다.

관점

Aspect aspect(implementation, attr_aspects=[], attrs=None, required_providers=[], required_aspect_providers=[], provides=[], requires=[], fragments=[], host_fragments=[], toolchains=[], incompatible_use_toolchain_transition=False, doc='', *, apply_to_generating_rules=False, exec_compatible_with=[], exec_groups=None)

새 측정기준을 만듭니다. 이 함수의 결과는 전역 값에 저장되어야 합니다. 자세한 내용은 관점 소개를 참고하세요.

매개변수

매개변수 설명
implementation 필수
이 측면을 구현하는 Starlark 함수로, 정확히 두 개의 매개변수(Target(측면이 적용되는 타겟) 및 ctx(타겟이 생성된 규칙 컨텍스트))가 있습니다. 타겟의 속성은 ctx.rule 필드를 통해 사용할 수 있습니다. 이 함수는 각 측정기준을 타겟에 적용할 때의 분석 단계에서 평가됩니다.
attr_aspects sequence of strings; default = []
속성 이름 목록입니다. 측면은 이러한 이름으로 대상의 속성에 지정된 종속 항목을 따라 전파됩니다. 여기서 일반적인 값에는 depsexports가 포함됩니다. 목록에 단일 문자열 "*"을 포함하여 타겟의 모든 종속 항목을 따라 전파할 수도 있습니다.
attrs dict; or None; default = None
측면의 모든 속성을 선언하는 사전입니다. 속성 이름에서 `attr.label` 또는 `attr.string`과 같은 속성 객체로 매핑합니다 (attr 모듈 참고). 측정기준 속성은 구현 함수에서 ctx 매개변수의 필드로 사용할 수 있습니다.

_로 시작하는 암시적 속성에는 기본값이 있어야 하며 유형은 label 또는 label_list여야 합니다.

명시적 속성은 유형이 string이어야 하며 values 제한을 사용해야 합니다. 명시적 속성은 제한사항에 따라 동일한 이름, 유형, 유효한 값의 속성이 있는 규칙에만 측정기준이 사용되도록 제한합니다.

required_providers default = []
이 속성을 사용하면 측면이 규칙에서 필요한 제공업체를 광고하는 타겟으로만 적용을 제한할 수 있습니다. 값은 개별 제공업체 또는 제공업체 목록이 포함된 목록이어야 하며 둘 다 포함되어서는 안 됩니다. 예를 들어 [[FooInfo], [BarInfo], [BazInfo, QuxInfo]]는 유효한 값이지만 [FooInfo, BarInfo, [BazInfo, QuxInfo]]는 유효하지 않습니다.

중첩되지 않은 제공업체 목록은 제공업체 목록 1개가 포함된 목록으로 자동 변환됩니다. 즉, [FooInfo, BarInfo]가 자동으로 [[FooInfo, BarInfo]]로 변환됩니다.

일부 규칙 (예: some_rule) 대상이 특정 관점에 표시되도록 하려면 some_rule에서 하나 이상의 필수 제공업체 목록에 있는 모든 제공업체를 광고해야 합니다. 예를 들어 측면의 required_providers[[FooInfo], [BarInfo], [BazInfo, QuxInfo]]인 경우 이 측면은 some_ruleFooInfo *또는* BarInfo *또는* BazInfo *및* QuxInfo을 모두 제공하는 경우에만 some_rule 타겟을 볼 수 있습니다.

required_aspect_providers default = []
이 속성을 사용하면 이 측면에서 다른 측면을 검사할 수 있습니다. 값은 개별 제공업체 또는 제공업체 목록이 포함된 목록이어야 하며 둘 다 포함되어서는 안 됩니다. 예를 들어 [[FooInfo], [BarInfo], [BazInfo, QuxInfo]]는 유효한 값이지만 [FooInfo, BarInfo, [BazInfo, QuxInfo]]는 유효하지 않습니다.

중첩되지 않은 제공업체 목록은 제공업체 목록 1개가 포함된 목록으로 자동 변환됩니다. 즉, [FooInfo, BarInfo]가 자동으로 [[FooInfo, BarInfo]]로 변환됩니다.

다른 측면(예: other_aspect)을 이 측면에 표시하려면 other_aspect가 하나 이상의 목록에서 모든 제공업체를 제공해야 합니다. [[FooInfo], [BarInfo], [BazInfo, QuxInfo]]의 예에서 이 측면은 other_aspectFooInfo *또는* BarInfo *또는* BazInfo *및* QuxInfo를 모두 제공하는 경우에만 other_aspect를 볼 수 있습니다.

provides default = []
구현 함수가 반환해야 하는 제공업체 목록입니다.

구현 함수가 여기에 나열된 제공자 유형 중 하나를 반환 값에서 생략하면 오류가 발생합니다. 그러나 구현 함수는 여기에 나열되지 않은 추가 제공업체를 반환할 수 있습니다.

목록의 각 요소는 provider()에서 반환된 *Info 객체입니다. 단, 기존 제공자는 문자열 이름으로 표시됩니다.

requires sequence of Aspects; default = []
이 측면 전에 전파해야 하는 측면 목록입니다.
fragments sequence of strings; default = []
측면이 타겟 구성에서 요구하는 구성 프래그먼트의 이름 목록입니다.
host_fragments sequence of strings; default = []
호스트 구성에서 관점에 필요한 구성 프래그먼트의 이름 목록입니다.
toolchains sequence; default = []
설정된 경우 이 규칙에 필요한 도구 모음 집합입니다. 목록에는 문자열, 라벨 또는 StarlarkToolchainTypeApi 객체가 어떤 조합으로든 포함될 수 있습니다. 도구 모음은 현재 플랫폼을 확인하여 찾고 ctx.toolchain를 통해 규칙 구현에 제공됩니다.
incompatible_use_toolchain_transition default = False
지원 중단됨. 더 이상 사용되지 않으며 삭제해야 합니다.
doc 기본값 = ''
문서 생성 도구로 추출할 수 있는 측면에 관한 설명입니다.
apply_to_generating_rules 기본값 = False
이 속성이 true이면 출력 파일에 적용될 때 대신 출력 파일의 생성 규칙에 적용됩니다.

예를 들어 측면이 `deps` 속성을 통해 전이적으로 전파되고 대상 `alpha`에 적용된다고 가정해 보겠습니다. `alpha`에 `deps = [':beta_output']`이 있다고 가정해 보겠습니다. 여기서 `beta_output`은 타겟 `beta`의 선언된 출력입니다. `beta`에 타겟 `charlie`가 `deps`인 경우 `alpha`는 관점으로 전파되고, `alpha`는 관점으로 전파됩니다.

기본값은 false입니다.

exec_compatible_with sequence of strings; default = []
이 측면의 모든 인스턴스에 적용되는 실행 플랫폼의 제약 조건 목록입니다.
exec_groups dict; or None; 기본값 = None
실행 그룹 이름 (문자열)과 exec_groups의 사전입니다. 설정하면 측정항목이 단일 인스턴스 내에서 여러 실행 플랫폼에서 작업을 실행할 수 있습니다. 자세한 내용은 실행 그룹 문서를 참고하세요.

bazel_dep

None bazel_dep(name, version='', max_compatibility_level=-1, repo_name='', dev_dependency=False)

다른 Bazel 모듈에 대한 직접 종속 항목을 선언합니다.

매개변수

매개변수 설명
name required
직접 종속 항목으로 추가할 모듈의 이름입니다.
version default = ''
direct dependency로 추가할 모듈의 버전입니다.
max_compatibility_level 기본값 = -1
모듈이 직접 종속 항목으로 추가될 때 지원되는 최대 compatibility_level입니다. 모듈의 버전은 지원되는 최소 compatibility_level과 이 속성이 지정되지 않은 경우 최대 값을 나타냅니다.
repo_name 기본값 = ''
이 종속 항목을 나타내는 외부 저장소의 이름입니다. 기본적으로 모듈의 이름입니다.
dev_dependency 기본값 = False
이 값이 true이면 현재 모듈이 루트 모듈이 아니거나 `--ignore_dev_dependency` 가 사용 설정된 경우 이 종속 항목이 무시됩니다.

바인드

None bind(name, actual=None)

경고: bind() 사용은 권장되지 않습니다. 문제와 대안을 자세히 알아보려면 bind 삭제 고려를 참고하세요.

//external 패키지에서 타겟에 별칭을 지정합니다.

매개변수

매개변수 설명
name 필수
별칭 이름으로 사용되는 '//external' 아래의 라벨
actual string; or None; 기본값 = None
별칭이 지정될 실제 라벨

bool

bool bool(x=False)

불리언 유형의 생성자입니다. 객체가 None, False, 빈 문자열(""), 숫자 0 또는 빈 컬렉션(예: (), [])인 경우 False를 반환합니다. 그 외의 경우에는 True을 반환합니다.

매개변수

매개변수 설명
x default = False
변환할 변수입니다.

configuration_field

LateBoundDefault configuration_field(fragment, name)

label 유형의 속성에 대한 지연 바인딩 기본값을 참조합니다. 값을 결정하기 전에 구성을 빌드해야 하는 값은 '지연 결합'됩니다. 이를 값으로 사용하는 모든 속성은 비공개여야 합니다.

사용 예:

규칙 속성 정의:

'_foo': attr.label(default=configuration_field(fragment='java', name='toolchain'))

규칙 구현에서 액세스:

  def _rule_impl(ctx):
    foo_info = ctx.attr._foo
    ...

매개변수

매개변수 설명
fragment required
지연 결합 값이 포함된 구성 프래그먼트의 이름입니다.
name 필수
구성 프래그먼트에서 가져올 값의 이름입니다.

Depset

depset depset(direct=None, order="default", *, transitive=None)

depset를 만듭니다. direct 매개변수는 depset의 직접 요소 목록이고 transitive 매개변수는 요소가 생성된 depset의 간접 요소가 되는 depset 목록입니다. depset이 목록으로 변환될 때 요소가 반환되는 순서는 order 매개변수로 지정됩니다. 자세한 내용은 Depset 개요를 참고하세요.

depset의 모든 요소(직접 및 간접)는 type(x) 표현식으로 얻은 것과 동일한 유형이어야 합니다.

해시 기반 세트는 반복 중에 중복을 제거하는 데 사용되므로 depset의 모든 요소는 해싱 가능해야 합니다. 그러나 이 불변식은 현재 모든 생성자에서 일관되게 검사되지 않습니다. 일관된 검사를 사용 설정하려면 --incompatible_always_check_depset_elements 플래그를 사용합니다. 이는 향후 릴리스의 기본 동작입니다. 문제 10313을 참조하세요.

또한 요소는 현재 변경할 수 없어야 하지만 향후 이 제한이 완화될 예정입니다.

생성된 depset의 순서는 transitive depset의 순서와 호환되어야 합니다. "default" 순서는 다른 순서와 호환되며 다른 모든 순서는 자체적으로만 호환됩니다.

이전/향후 호환성에 관한 참고사항 이 함수는 현재 위치 기반 items 매개변수를 허용합니다. 이 매개변수는 지원 중단되었으며 향후 삭제될 예정입니다. 삭제 후 directdepset 함수의 유일한 위치 매개변수가 됩니다. 따라서 다음 두 호출은 모두 동일하며 향후에도 사용할 수 있습니다.

depset(['a', 'b'], transitive = [...])
depset(direct = ['a', 'b'], transitive = [...])

매개변수

매개변수 설명
direct sequence; or None; default = None
depset의 직접 요소 목록입니다.
order default = "default"
새 depset의 탐색 전략입니다. 가능한 값은 여기를 참고하세요.
transitive sequence of depsets; or None; default = None
요소가 depset의 간접 요소가 되는 depset 목록입니다.

사전

dict dict(pairs=[], **kwargs)

선택적 위치 인수와 선택적 키워드 인수 집합에서 사전을 만듭니다. 동일한 키가 여러 번 제공되는 경우 마지막 값이 사용됩니다. 키워드 인수를 통해 제공된 항목은 위치 인수를 통해 제공된 항목 뒤에 오는 것으로 간주됩니다.

매개변수

매개변수 설명
pairs default = []
각 요소의 길이가 2인 사전 또는 반복 가능한 객체 (키, 값)입니다.
kwargs required
추가 항목의 사전입니다.

dir

list dir(x)

매개변수 객체의 속성 및 메서드 이름인 문자열 목록을 반환합니다.

매개변수

매개변수 설명
x 필수
확인할 객체입니다.

enumerate

list enumerate(list, start=0)

색인(int)과 입력 시퀀스의 항목이 포함된 쌍(2개 요소 튜플) 목록을 반환합니다.
enumerate([24, 21, 84]) == [(0, 24), (1, 21), (2, 84)]

매개변수

매개변수 설명
list 필수
입력 시퀀스
start 기본값 = 0
시작 색인입니다.

exec_group

exec_group exec_group(toolchains=[], exec_compatible_with=[], copy_from_rule=False)

규칙 구현 중에 특정 실행 플랫폼에 대한 작업을 만드는 데 사용할 수 있는 실행 그룹을 생성합니다.

매개변수

매개변수 설명
toolchains sequence; default = []
이 실행 그룹에 필요한 도구 모음입니다. 목록에는 String, Label, StarlarkToolchainTypeApi 객체가 어떤 조합으로든 포함될 수 있습니다.
exec_compatible_with sequence of strings; default = []
실행 플랫폼의 제약 조건 목록입니다.
copy_from_rule 기본값 = False
이 실행 그룹을 이 그룹이 연결된 규칙의 도구 모음 및 제약 조건을 상속하도록 설정합니다. 다른 문자열로 설정하면 오류가 발생합니다.

fail

None fail(msg=None, attr=None, *args)

실행이 오류와 함께 실패합니다.

매개변수

매개변수 설명
msg default = None
지원 중단됨: 대신 위치 인수를 사용하세요. 이 인수는 암시적 선행 위치 인수처럼 작동합니다.
attr string; or None; default = None
지원 중단되었습니다. 이 문자열을 포함하는 선택적 접두사가 오류 메시지에 추가되도록 합니다.
args 필수
오류 메시지에 표시되는 값 목록으로, str 형식이며 공백으로 연결됩니다.

float

float float(x=unbound)

x를 부동 소수점 값으로 반환합니다.
  • x가 이미 부동 소수점 수인 경우 float는 변경되지 않은 값을 반환합니다.
  • x가 불리언인 경우 float는 True의 경우 1.0을, False의 경우 0.0을 반환합니다.
  • x가 int인 경우 float는 x에 가장 가까운 유한 부동 소수점 값을 반환하거나 크기가 너무 큰 경우 오류를 반환합니다.
  • x가 문자열인 경우 유효한 부동 소수점 리터럴이거나 NaN, Inf 또는 Infinity와 같아야 하며 (대소문자 구분 안 함) 원하는 경우 + 또는 - 부호가 앞에 올 수 있습니다.
다른 값을 지정하면 오류가 발생합니다. 인수가 없으면 float()는 0.0을 반환합니다.

매개변수

매개변수 설명
x 기본값 = unbound
변환할 값입니다.

getattr

unknown getattr(x, name, default=unbound)

지정된 이름의 구조체 필드가 있는 경우 이를 반환합니다. 그렇지 않으면 default (지정된 경우)를 반환하거나 오류를 발생시킵니다. getattr(x, "foobar")x.foobar와 동일합니다.
getattr(ctx.attr, "myattr")
getattr(ctx.attr, "myattr", "mydefault")

매개변수

매개변수 설명
x required
속성에 액세스되는 구조체입니다.
name 필수
구조체 속성의 이름입니다.
default 기본값 = unbound
구조체에 지정된 이름의 속성이 없는 경우 반환할 기본값입니다.

git_override

None git_override(module_name, remote, commit='', patches=[], patch_cmds=[], patch_strip=0)

종속 항목이 Git 저장소의 특정 커밋에서 가져와야 함을 지정합니다. 이 디렉티브는 루트 모듈에서만 적용됩니다. 즉, 모듈이 다른 모듈의 종속 항목으로 사용되는 경우 자체 재정의는 무시됩니다.

매개변수

매개변수 설명
module_name required
이 재정의를 적용할 Bazel 모듈 종속 항목의 이름입니다.
remote 필수
원격 Git 저장소의 URL입니다.
commit default = ''
체크아웃해야 하는 커밋입니다.
patches Iterable of strings; default = []
이 모듈에 적용할 패치 파일을 가리키는 라벨 목록입니다. 패치 파일은 최상위 프로젝트의 소스 트리에 있어야 합니다. 목록 순서대로 적용됩니다.
patch_cmds Iterable of strings; default = []
패치가 적용된 후 Linux/Macos에 적용할 Bash 명령어 시퀀스입니다.
patch_strip 기본값 = 0
Unix 패치의 --strip 인수와 동일합니다.

hasattr

bool hasattr(x, name)

객체 x에 지정된 name의 속성 또는 메서드가 있는 경우 True를 반환하고, 그렇지 않으면 False를 반환합니다. 예:
hasattr(ctx.attr, "myattr")

매개변수

매개변수 설명
x 필수
확인할 객체입니다.
name required
속성의 이름입니다.

해시

int hash(value)

문자열의 해시 값을 반환합니다. 이는 Java의 String.hashCode()와 동일한 알고리즘을 사용하여 결정론적으로 계산됩니다. 즉,
s[0] * (31^(n-1)) + s[1] * (31^(n-2)) + ... + s[n-1]
현재 문자열 이외의 값 해싱은 지원되지 않습니다.

매개변수

매개변수 설명
value 필수
해싱할 문자열 값입니다.

int

int int(x, base=unbound)

x를 int 값으로 반환합니다.
  • x가 이미 int인 경우 int는 변경되지 않은 상태로 반환합니다.
  • x가 불리언인 경우 int는 True의 경우 1을, False의 경우 0을 반환합니다.
  • x이 문자열인 경우 <sign><prefix><digits> 형식이어야 합니다. <sign>"+", "-" 또는 비어 있습니다 (양수로 해석됨). <digits>는 0에서 base - 1까지의 숫자 시퀀스이며, 여기서 a~z(또는 A~Z) 문자가 10~35의 숫자로 사용됩니다. base가 2/8/16인 경우 <prefix>는 선택사항이며 각각 0b/0o/0x(또는 이에 상응하는 0B/0O/0X)일 수 있습니다. base가 이러한 기반 또는 특수 값 0 이외의 다른 값인 경우 접두사는 비어 있어야 합니다. base이 0인 경우 사용되는 접두사에 따라 밑 2/8/10/16 중 하나가 선택된다는 의미에서 문자열은 정수 리터럴로 해석됩니다. base가 0이면 접두사가 사용되지 않고 숫자가 두 개 이상인 경우 선행 자릿수는 0이 될 수 없습니다. 이는 8진수와 10진수 사이의 혼동을 방지하기 위함입니다. 문자열로 표현된 숫자의 크기는 int 유형에 허용되는 범위 내에 있어야 합니다.
  • x이 부동 소수점 수인 경우 int는 0으로 반올림하여 부동 소수점 수의 정수 값을 반환합니다. x가 유한하지 않은 경우 (NaN 또는 무한대) 오류가 발생합니다.
x가 다른 유형이거나 값이 위 형식을 충족하지 않는 문자열인 경우 이 함수는 실패합니다. Python의 int 함수와 달리 이 함수는 0 인수를 허용하지 않으며 문자열 인수에 관련 없는 공백을 허용하지 않습니다.

예:

int("123") == 123
int("-123") == -123
int("+123") == 123
int("FF", 16) == 255
int("0xFF", 16) == 255
int("10", 0) == 10
int("-0x10", 0) == -16
int("-0x10", 0) == -16
int("123.456") == 123

매개변수

매개변수 설명
x 필수
변환할 문자열입니다.
base default = unbound
문자열 값 해석에 사용되는 밑이며 기본값은 10입니다. 2~36 (양 끝값 포함)이거나 0이어야 합니다. 0이면 x가 정수 리터럴인 것처럼 베이스를 감지합니다. 값이 문자열이 아닌 경우 이 매개변수를 제공해서는 안 됩니다.

len

int len(x)

문자열, 시퀀스 (예: 목록 또는 튜플), 사전 또는 기타 반복 가능 항목의 길이를 반환합니다.

매개변수

매개변수 설명
x 필수
길이를 보고할 값입니다.

list

list list(x=[])

지정된 반복 가능한 값과 동일한 요소가 있는 새 목록을 반환합니다.
list([1, 2]) == [1, 2]
list((2, 3, 2)) == [2, 3, 2]
list({5: "a", 2: "b", 4: "c"}) == [5, 2, 4]

매개변수

매개변수 설명
x default = []
변환할 객체입니다.

local_path_override

None local_path_override(module_name, path)

종속 항목이 로컬 디스크의 특정 디렉터리에서 가져와야 한다고 지정합니다. 이 디렉티브는 루트 모듈에서만 적용됩니다. 즉, 모듈이 다른 모듈의 종속 항목으로 사용되는 경우 자체 재정의는 무시됩니다.

매개변수

매개변수 설명
module_name required
이 재정의를 적용할 Bazel 모듈 종속 항목의 이름입니다.
path 필수
이 모듈이 있는 디렉터리의 경로입니다.

최대

unknown max(*args)

주어진 모든 인수 중 가장 큰 값을 반환합니다. 인수가 하나만 제공되는 경우 비어 있지 않은 반복 가능한 객체여야 합니다.요소를 비교할 수 없는 경우 (예: 정수와 문자열) 또는 인수가 제공되지 않은 경우 오류가 발생합니다.
max(2, 5, 4) == 5
max([5, 6, 3]) == 6

매개변수

매개변수 설명
args required
확인할 요소입니다.

unknown min(*args)

주어진 모든 인수 중 가장 작은 값을 반환합니다. 인수가 하나만 제공되는 경우 비어 있지 않은 반복 가능한 객체여야 합니다. 요소를 비교할 수 없거나(예: int와 문자열) 인수가 제공되지 않은 경우 오류가 발생합니다.
min(2, 5, 4) == 2
min([5, 6, 3]) == 3

매개변수

매개변수 설명
args 필수
확인할 요소입니다.

모듈

None module(name='', version='', compatibility_level=0, repo_name='', bazel_compatibility=[])

현재 Bazel 저장소로 표시되는 Bazel 모듈의 특정 속성을 선언합니다. 이러한 속성은 모듈의 필수 메타데이터(예: 이름 및 버전)이거나 현재 모듈 및 종속 항목의 동작에 영향을 미칩니다.

최대 한 번 호출해야 합니다. 이 모듈이 루트 모듈인 경우에만 생략할 수 있습니다 (즉, 다른 모듈에서 종속되지 않는 경우).

매개변수

매개변수 설명
name default = ''
모듈의 이름입니다. 이 모듈이 루트 모듈인 경우에만 생략할 수 있습니다(즉, 다른 모듈에서 종속되지 않는 경우). 유효한 모듈 이름은 1) 소문자(a~z), 숫자(0~9), 점(.) 하이픈(-), 밑줄(_)만 포함해야 하며 2) 소문자로 시작해야 하고 3) 소문자 또는 숫자로 끝나야 합니다.
version default = ''
모듈의 버전입니다. 이 모듈이 루트 모듈인 경우에만 생략할 수 있습니다 (예: 다른 모듈에 의존하지 않을 경우).
compatibility_level default = 0
모듈의 호환성 수준입니다. 호환되지 않는 주요 변경사항이 도입될 때마다 변경해야 합니다. 이는 SemVer 측면에서 본질적으로 모듈의 '주 버전'이지만 버전 문자열 자체에 삽입되지 않고 별도의 필드로 존재한다는 점을 제외하고는 동일합니다. 호환성 수준이 서로 다른 모듈은 이름이 다른 모듈인 것처럼 버전 확인에 참여하지만, 최종 종속 항목 그래프는 이름은 같지만 호환성 수준이 다른 여러 모듈을 포함할 수 없습니다 (multiple_version_override가 적용되지 않는 경우. 자세한 내용은 참고).
repo_name 기본값 = ''
모듈 자체에서 보는 이 모듈을 나타내는 저장소의 이름입니다. 기본적으로 저장소 이름은 모듈 이름입니다. 모듈 이름과 다른 저장소 이름을 사용해 온 프로젝트를 쉽게 마이그레이션하기 위해 지정할 수 있습니다.
bazel_compatibility Iterable of strings; default = []
사용자가 이 모듈과 호환되는 Bazel 버전을 선언할 수 있는 Bazel 버전 목록입니다. 종속 항목 확인에는 영향을 미치지 않지만 bzlmod는 이 정보를 사용하여 현재 Bazel 버전이 호환되는지 확인합니다. 이 값의 형식은 쉼표로 구분된 일부 제약 조건 값의 문자열입니다. 세 가지 제약 조건이 지원됩니다. <=X.X.X: Bazel 버전이 X.X.X보다 크거나 같아야 합니다. 최신 버전에 알려진 비호환 변경사항이 있는 경우에 사용됩니다. >=X.X.X: Bazel 버전은 X.X.X 이후여야 합니다.X.X.X 이후만 사용 가능한 일부 기능을 사용하는 경우 사용됩니다. -X.X.X: Bazel 버전 X.X.X는 호환되지 않습니다. X.X.X에 손상을 일으키는 버그가 있을 때 사용되지만 이후 버전에서는 수정되었습니다.

module_extension

unknown module_extension(implementation, *, tag_classes={}, doc='')

새 모듈 확장 프로그램을 만듭니다. 전역 값에 저장하여 MODULE.bazel 파일로 내보내고 사용할 수 있도록 합니다.

매개변수

매개변수 설명
implementation 필수
이 모듈 확장 프로그램을 구현하는 함수입니다. 단일 매개변수 module_ctx를 사용해야 합니다. 이 함수는 빌드 시작 시 한 번 호출되어 사용 가능한 저장소 세트를 결정합니다.
tag_classes 기본값 = {}
확장 프로그램에서 사용하는 모든 태그 클래스를 선언하는 사전입니다. 태그 클래스의 이름에서 tag_class 객체로 매핑합니다.
doc 기본값 = ''
문서 생성 도구로 추출할 수 있는 모듈 확장 프로그램에 관한 설명입니다.

multiple_version_override

None multiple_version_override(module_name, versions, registry='')

종속 항목이 여전히 레지스트리에서 가져와야 하지만 여러 버전이 공존할 수 있어야 함을 지정합니다. 자세한 내용은 문서를 참고하세요. 이 디렉티브는 루트 모듈에서만 적용됩니다. 즉, 모듈이 다른 모듈의 종속 항목으로 사용되는 경우 자체 재정의는 무시됩니다.

매개변수

매개변수 설명
module_name required
이 재정의를 적용할 Bazel 모듈 종속 항목의 이름입니다.
versions Iterable of strings, 필수
공존할 수 있는 버전을 명시적으로 지정합니다. 이러한 버전은 종속 항목 그래프 사전 선택에 이미 있어야 합니다. 이 모듈의 종속 항목은 동일한 호환성 수준에서 허용되는 가장 높은 버전으로 '업그레이드'되지만, 동일한 호환성 수준에서 허용되는 버전보다 높은 버전이 있는 종속 항목은 오류를 발생시킵니다.
registry default = ''
이 모듈의 레지스트리를 재정의합니다. 기본 레지스트리 목록에서 이 모듈을 찾는 대신 지정된 레지스트리를 사용해야 합니다.

출력하다

None print(sep=" ", *args)

args를 디버그 출력으로 출력합니다. "DEBUG" 문자열과 이 호출의 위치 (파일 및 줄 번호)가 접두사로 붙습니다. 인수가 문자열로 변환되는 정확한 방식은 명시되어 있지 않으며 언제든지 변경될 수 있습니다. 특히 str()repr()로 수행된 형식 지정과 다를 수 있으며 더 자세할 수 있습니다.

프로덕션 코드에서 print를 사용하면 사용자에게 스팸이 생성되므로 권장하지 않습니다. 지원 중단의 경우 가능하면 fail()를 사용하는 하드 오류를 사용하는 것이 좋습니다.

매개변수

매개변수 설명
sep default = " "
객체 사이의 구분자 문자열로, 기본값은 공백(' ')입니다.
args 필수
인쇄할 객체입니다.

provider

unknown provider(doc='', *, fields=None, init=None)

제공자 기호를 정의합니다. 제공업체는 호출하여 인스턴스화하거나 타겟에서 해당 제공업체의 인스턴스를 검색하는 키로 직접 사용할 수 있습니다. 예:
MyInfo = provider()
...
def _my_library_impl(ctx):
    ...
    my_info = MyInfo(x = 2, y = 3)
    # my_info.x == 2
    # my_info.y == 3
    ...

제공업체를 사용하는 방법에 관한 종합적인 가이드는 규칙 (제공업체)을 참고하세요.

init가 지정되지 않은 경우 호출 가능한 Provider 값을 반환합니다.

init가 지정되면 2개의 요소(Provider 호출 가능 값 및 원시 생성자 호출 가능 값)로 구성된 튜플을 반환합니다. 자세한 내용은 규칙 (맞춤 제공업체의 맞춤 초기화) 및 아래의 init 매개변수에 관한 설명을 참고하세요.

매개변수

매개변수 설명
doc 기본값 = ''
문서 생성 도구로 추출할 수 있는 제공업체에 대한 설명입니다.
fields sequence of strings; or dict; or None; default = None
지정하면 허용되는 필드 집합을 제한합니다.
가능한 값은 다음과 같습니다.
  • 필드 목록:
    provider(fields = ['a', 'b'])

  • 사전 필드 이름 -> 문서:
    provider(
           fields = { 'a' : 'Documentation for a', 'b' : 'Documentation for b' })
모든 입력란은 선택사항입니다.
init callable; or None; default = None
인스턴스화 중에 제공자의 필드 값을 사전 처리하고 유효성 검사하는 선택적 콜백입니다. init이 지정되면 provider()는 일반 제공자 기호와 원시 생성자라는 두 요소의 튜플을 반환합니다.

정확한 설명은 다음과 같습니다. 직관적인 설명과 사용 사례는 규칙(제공자 맞춤 초기화)을 참고하세요.

Pprovider()를 호출하여 생성된 제공업체 기호입니다. 개념적으로 P 인스턴스는 다음을 실행하는 기본 생성자 함수 c(*args, **kwargs)를 호출하여 생성됩니다.

  • args가 비어 있지 않으면 오류가 발생합니다.
  • provider()가 호출될 때 fields 매개변수가 지정되었고 kwargsfields에 나열되지 않은 키가 포함된 경우 오류가 발생합니다.
  • 그렇지 않으면 ckwargs의 각 k: v 항목에 대해 값이 vk라는 필드가 있는 새 인스턴스를 반환합니다.
init 콜백이 제공되지 않은 경우 기호 P 호출 자체가 기본 생성자 함수 c 호출 역할을 합니다. 즉, P(*args, **kwargs)c(*args, **kwargs)를 반환합니다. 예를 들어
MyInfo = provider()
m = MyInfo(foo = 1)
를 사용하면 mm.foo == 1가 있는 MyInfo 인스턴스가 됩니다.

하지만 init가 지정된 경우에는 P(*args, **kwargs) 호출이 대신 다음 단계를 실행합니다.

  1. 콜백은 init(*args, **kwargs)로 호출됩니다. 즉, P에 전달된 것과 정확히 동일한 위치 및 키워드 인수를 사용합니다.
  2. init의 반환 값은 키가 필드 이름 문자열인 d 사전이어야 합니다. 그렇지 않으면 오류가 발생합니다.
  3. P의 새 인스턴스는 c(**d)에서와 같이 d의 항목을 키워드 인수로 사용하여 기본 생성자를 호출하는 것처럼 생성됩니다.

참고: 위 단계는 *args 또는 **kwargsinit의 서명과 일치하지 않거나 init의 본문 평가가 실패하거나(의도적으로 fail() 호출을 통해 실패할 수 있음) init의 반환 값이 예상되는 스키마가 있는 사전이 아닌 경우 오류가 발생함을 의미합니다.

이렇게 하면 init 콜백은 전처리 및 유효성 검사를 위한 위치 인수와 임의 로직을 허용하여 일반 제공자 구성을 일반화합니다. 허용된 fields 목록을 우회할 수 없습니다.

init가 지정되면 provider()의 반환 값이 튜플 (P, r)이 되며 여기서 r원시 생성자입니다. 실제로 r의 동작은 위에서 설명한 기본 생성자 함수 c의 동작과 정확히 일치합니다. 일반적으로 r는 이름 앞에 밑줄이 붙은 변수에 결합되므로 현재 .bzl 파일만 변수에 직접 액세스할 수 있습니다.

MyInfo, _new_myinfo = provider(init = ...)

범위

sequence range(start_or_stop, stop_or_none=None, step=1)

step 증분을 사용하여 항목이 start에서 stop으로 이동하는 목록을 만듭니다. 인수가 하나만 제공되면 항목의 범위는 0에서 해당 요소까지입니다.
range(4) == [0, 1, 2, 3]
range(3, 9, 2) == [3, 5, 7]
range(3, 0, -1) == [3, 2, 1]

매개변수

매개변수 설명
start_or_stop 필수
stop이 제공된 경우 시작 요소의 값이고, 그렇지 않으면 stop의 값이며 실제 시작은 0입니다.
stop_or_none int; or None; default = None
첫 번째 항목의 선택적 색인이며 결과 목록에 포함되지 않습니다. stop에 도달하기 전에 목록 생성이 중지됩니다.
step 기본값 = 1
증분입니다 (기본값은 1). 음수일 수 있습니다.

register_execution_platforms()

None register_execution_platforms(*platform_labels)

Bazel이 도구 모음 확인 중에 실행 플랫폼으로 사용할 수 있도록 이미 정의된 플랫폼을 등록합니다.

매개변수

매개변수 설명
platform_labels sequence of strings; required
등록할 플랫폼의 라벨입니다.

register_execution_platforms(dev_dependency)

None register_execution_platforms(dev_dependency=False, *platform_labels)

이 모듈이 선택될 때 등록할 이미 정의된 실행 플랫폼을 지정합니다. 절대 타겟 패턴이어야 합니다 (@ 또는 //로 시작). 자세한 내용은 도구 모음 확인을 참고하세요.

매개변수

매개변수 설명
dev_dependency 기본값 = False
이 값이 true이면 현재 모듈이 루트 모듈이 아니거나 `--ignore_dev_dependency` 가 사용 설정된 경우 실행 플랫폼이 등록되지 않습니다.
platform_labels sequence of strings; required
등록할 플랫폼의 라벨입니다.

register_toolchains()

None register_toolchains(*toolchain_labels)

Bazel이 도구 모음 확인 중에 이를 사용할 수 있도록 이미 정의된 도구 모음을 등록합니다. 정의툴체인 등록의 예시를 참고하세요.

매개변수

매개변수 설명
toolchain_labels sequence of strings; required
등록할 도구 모음의 라벨입니다.

register_toolchains(dev_dependency)

None register_toolchains(dev_dependency=False, *toolchain_labels)

이 모듈이 선택될 때 등록할 이미 정의된 도구 모음을 지정합니다. 절대 타겟 패턴이어야 합니다 (@ 또는 //로 시작). 자세한 내용은 도구 모음 확인을 참고하세요.

매개변수

매개변수 설명
dev_dependency default = False
true인 경우 현재 모듈이 루트 모듈이 아니거나 `--ignore_dev_dependency` 가 사용 설정된 경우 도구 모음이 등록되지 않습니다.
toolchain_labels sequence of strings; required
등록할 도구 모음의 라벨입니다.

repository_rule(implementation, attrs, local, environ, configure, remotable, doc)

callable repository_rule(implementation, *, attrs=None, local=False, environ=[], configure=False, remotable=False, doc='')

새 저장소 규칙을 만듭니다. WORKSPACE 파일에서 로드하고 호출할 수 있도록 전역 값에 저장합니다.

매개변수

매개변수 설명
implementation required
이 규칙을 구현하는 함수입니다. 단일 매개변수 repository_ctx가 있어야 합니다. 이 함수는 규칙의 각 인스턴스 로드 단계 중에 호출됩니다.
attrs dict; or None; 기본값 = None
규칙의 모든 속성을 선언하는 사전입니다. 속성 이름에서 속성 객체에 매핑됩니다 (attr 모듈 참고). _로 시작하는 속성은 비공개이며 라벨의 암시적 종속 항목을 파일에 추가하는 데 사용할 수 있습니다 (저장소 규칙은 생성된 아티팩트에 종속될 수 없음). name 속성은 암시적으로 추가되며 지정해서는 안 됩니다.
local default = False
이 규칙이 로컬 시스템에서 모든 항목을 가져오고 가져올 때마다 재평가되어야 함을 나타냅니다.
environ sequence of strings; default = []
이 저장소 규칙이 종속되는 환경 변수 목록을 제공합니다. 이 목록의 환경 변수가 변경되면 저장소가 다시 가져옵니다.
configure 기본값 = False
저장소가 구성 목적으로 시스템을 검사함을 나타냅니다.
remotable default = False
시험용. 이 매개변수는 실험용이며 언제든지 변경될 수 있습니다. 이 방법을 사용하지 마세요. ---experimental_repo_remote_exec
원격 실행과 호환 설정을 통해 실험적으로 사용 설정할 수 있습니다.
doc default = ''
문서 생성 도구로 추출할 수 있는 저장소 규칙에 관한 설명입니다.

repository_rule(implementation, attrs, local, environ, configure, remotable, doc)

callable repository_rule(implementation, *, attrs=None, local=False, environ=[], configure=False, remotable=False, doc='')

새 저장소 규칙을 만듭니다. WORKSPACE 파일에서 로드하고 호출할 수 있도록 전역 값에 저장합니다.

매개변수

매개변수 설명
implementation 필수
이 규칙을 구현하는 함수입니다. 단일 매개변수 repository_ctx가 있어야 합니다. 이 함수는 규칙의 각 인스턴스 로드 단계 중에 호출됩니다.
attrs dict; or None; 기본값 = None
규칙의 모든 속성을 선언하는 사전입니다. 속성 이름에서 속성 객체로 매핑합니다(attr 모듈 참고). _로 시작하는 속성은 비공개이며 라벨에 대한 암시적 종속 항목을 파일에 추가하는 데 사용할 수 있습니다 (저장소 규칙은 생성된 아티팩트에 종속될 수 없음). name 속성은 암시적으로 추가되며 지정해서는 안 됩니다.
local default = False
이 규칙이 로컬 시스템에서 모든 항목을 가져오므로 가져올 때마다 재평가되어야 함을 나타냅니다.
environ sequence of strings; default = []
이 저장소 규칙이 종속된 환경 변수의 목록을 제공합니다. 해당 목록의 환경 변수가 변경되면 저장소를 다시 가져옵니다.
configure 기본값 = False
저장소가 구성 목적으로 시스템을 검사함을 나타냅니다.
remotable default = False
시험용. 이 매개변수는 실험용이며 언제든지 변경될 수 있습니다. 이 방법을 사용하지 마세요. ---experimental_repo_remote_exec
원격 실행과 호환 설정을 통해 실험적으로 사용 설정할 수 있습니다.
doc default = ''
문서 생성 도구로 추출할 수 있는 저장소 규칙에 관한 설명입니다.

반복

string repr(x)

모든 객체를 문자열 표현으로 변환합니다. 이는 디버깅에 유용합니다.
repr("ab") == '"ab"'

매개변수

매개변수 설명
x required
변환할 객체입니다.

reversed

list reversed(sequence)

원래 반복 가능한 시퀀스의 요소가 역순으로 포함된 새 동결되지 않은 목록을 반환합니다.
reversed([3, 5, 4]) == [4, 5, 3]

매개변수

매개변수 설명
sequence 필수
역순으로 할 연쇄(예: 목록)입니다.

규칙

callable rule(implementation, test=False, attrs=None, outputs=None, executable=False, output_to_genfiles=False, fragments=[], host_fragments=[], _skylark_testable=False, toolchains=[], incompatible_use_toolchain_transition=False, doc='', *, provides=[], exec_compatible_with=[], analysis_test=False, build_setting=None, cfg=None, exec_groups=None, compile_one_filetype=None, name=None)

BUILD 파일 또는 매크로에서 호출하여 타겟을 만들 수 있는 새 규칙을 만듭니다.

규칙은 .bzl 파일에서 전역 변수에 할당되어야 합니다. 전역 변수의 이름은 규칙의 이름입니다.

테스트 규칙의 이름은 _test로 끝나야 하지만 다른 모든 규칙의 이름은 이 접미사가 없어야 합니다. 이 제한은 타겟이 아닌 규칙에만 적용됩니다.

매개변수

매개변수 설명
implementation 필수
이 규칙을 구현하는 Starlark 함수에는 정확히 하나의 매개변수(ctx)가 있어야 합니다. 이 함수는 규칙의 각 인스턴스에 대한 분석 단계 중에 호출됩니다. 사용자가 제공한 속성에 액세스할 수 있습니다. 선언된 모든 출력을 생성하는 작업을 만들어야 합니다.
test 기본값 = False
이 규칙이 테스트 규칙인지, 즉 blaze test 명령어의 대상이 될 수 있는지 여부입니다. 모든 테스트 규칙은 자동으로 실행 파일로 간주됩니다. 테스트 규칙에 executable = True를 명시적으로 설정할 필요는 없으며 권장하지도 않습니다. 자세한 내용은 규칙 페이지를 참고하세요.
attrs dict; or None; default = None
사전으로, 규칙의 모든 속성을 선언합니다. 속성 이름에서 속성 객체로 매핑합니다(attr 모듈 참고). _로 시작하는 속성은 비공개이며 라벨에 암시적 종속 항목을 추가하는 데 사용할 수 있습니다. name 속성은 암시적으로 추가되며 지정해서는 안 됩니다. 속성 visibility, deprecation, tags, testonly, features는 암시적으로 추가되며 재정의할 수 없습니다. 대부분의 규칙에는 몇 가지 속성만 필요합니다. 메모리 사용량을 제한하기 위해 규칙 함수는 attrs의 크기에 한도를 적용합니다.
outputs dict; or None; or function; default = None
지원 중단됨. 이 매개변수는 지원 중단되었으며 곧 삭제됩니다. 이 방법을 사용하지 마세요. ---incompatible_no_rule_outputs_param사용 중지됩니다. 이 플래그를 사용하여 코드가 예정된 삭제와 호환되는지 확인합니다.
이 매개변수는 지원 중단되었습니다. 대신 OutputGroupInfo 또는 attr.output를 사용하도록 규칙을 이전합니다.

사전 선언된 출력을 정의하기 위한 스키마입니다. outputoutput_list 속성과 달리 사용자는 이러한 파일의 라벨을 지정하지 않습니다. 사전 선언된 출력에 관한 자세한 내용은 규칙 페이지를 참고하세요.

이 인수의 값은 사전 또는 사전을 생성하는 콜백 함수입니다. 콜백은 계산된 종속 항목 속성과 비슷하게 작동합니다. 함수의 매개변수 이름이 규칙의 속성과 일치합니다. 예를 들어 정의 def _my_func(srcs, deps): ...와 함께 outputs = _my_func를 전달하면 함수는 srcsdeps 속성에 액세스할 수 있습니다. 사전이 직접 지정되거나 함수를 통해 지정되면 다음과 같이 해석됩니다.

사전의 각 항목은 사전 선언된 출력을 만듭니다. 여기서 키는 식별자이고 값은 출력의 라벨을 결정하는 문자열 템플릿입니다. 규칙의 구현 함수에서 식별자는 ctx.outputs에서 출력의 File에 액세스하는 데 사용되는 필드 이름이 됩니다. 출력 라벨은 규칙과 동일한 패키지를 가지며 패키지 뒤의 부분은 "%{ATTR}" 형식의 각 자리표시자를 속성 ATTR의 값으로부터 형성된 문자열로 대체하여 생성됩니다.

  • 문자열 유형의 속성은 그대로 대체됩니다.
  • 라벨 유형 속성은 패키지 뒤의 라벨의 일부가 되며 파일 확장자는 제외됩니다. 예를 들어 "//pkg:a/b.c" 라벨은 "a/b"가 됩니다.
  • 출력 유형 속성은 패키지 뒤에서 라벨의 일부가 되며 파일 확장자 (위의 예의 경우 "a/b.c")도 포함됩니다.
  • 자리표시자에 사용되는 모든 목록 유형 속성 (예: attr.label_list)은 정확히 하나의 요소를 포함해야 합니다. 전환은 목록 외 버전(attr.label)과 동일합니다.
  • 다른 속성 유형은 자리표시자에 표시되지 않을 수 있습니다.
  • 속성이 아닌 특수 자리표시자 %{dirname}%{basename}는 패키지를 제외하고 규칙 라벨의 해당 부분으로 확장됩니다. 예를 들어 "//pkg:a/b.c"에서 디렉터리 이름은 a이고 기본 이름은 b.c입니다.

실제로 가장 일반적인 대체 자리표시자는 "%{name}"입니다. 예를 들어 'foo'라는 타겟의 경우 출력 사전 {"bin": "%{name}.exe"}은 구현 함수에서 ctx.outputs.bin로 액세스할 수 있는 foo.exe라는 출력을 미리 선언합니다.

executable 기본값 = False
이 규칙이 실행 파일로 간주되는지, 즉 blaze run 명령어의 대상이 될 수 있는지 여부입니다. 자세한 내용은 규칙 페이지를 참고하세요.
output_to_genfiles 기본값 = False
true이면 파일이 bin 디렉터리 대신 genfiles 디렉터리에 생성됩니다. 기존 규칙과의 호환성을 위해 필요하지 않은 한 (예: C++의 헤더 파일을 생성할 때) 이 플래그를 설정하지 마세요.
fragments sequence of strings; default = []
타겟 구성에서 규칙에 필요한 구성 프래그먼트 이름 목록입니다.
host_fragments sequence of strings; default = []
호스트 구성에서 규칙에 필요한 구성 프래그먼트의 이름 목록입니다.
_skylark_testable default = False
(실험용)

true인 경우 이 규칙은 작업 제공업체를 통해 종속된 규칙에 따라 검사할 작업을 노출합니다. ctx.created_actions()를 호출하여 규칙 자체에서도 제공자를 사용할 수 있습니다.

이는 Starlark 규칙의 분석 시간 동작을 테스트하는 데만 사용해야 합니다. 이 플래그는 향후 삭제될 수 있습니다.
toolchains sequence; default = []
설정된 경우 이 규칙에 필요한 도구 모음 집합입니다. 목록에는 문자열, 라벨 또는 StarlarkToolchainTypeApi 객체가 어떤 조합으로든 포함될 수 있습니다. 도구 모음은 현재 플랫폼을 확인하여 찾고 ctx.toolchain를 통해 규칙 구현에 제공됩니다.
incompatible_use_toolchain_transition default = False
지원 중단됨. 더 이상 사용되지 않으며 삭제해야 합니다.
doc default = ''
문서 생성 도구로 추출할 수 있는 규칙에 대한 설명입니다.
provides default = []
구현 함수가 반환해야 하는 제공업체 목록입니다.

구현 함수가 여기에 나열된 제공자 유형 중 하나를 반환 값에서 생략하면 오류가 발생합니다. 그러나 구현 함수는 여기에 나열되지 않은 추가 제공업체를 반환할 수 있습니다.

목록의 각 요소는 provider()에서 반환된 *Info 객체입니다. 단, 기존 제공업체는 문자열 이름으로 대신 표시됩니다.

exec_compatible_with sequence of strings; default = []
이 규칙 유형의 모든 대상에 적용되는 실행 플랫폼의 제약 조건 목록입니다.
analysis_test 기본값 = False
이 값이 true이면 이 규칙이 분석 테스트로 취급됩니다.

참고: 분석 테스트 규칙은 주로 핵심 Starlark 라이브러리에서 제공되는 인프라를 사용하여 정의됩니다. 자세한 내용은 테스트를 참고하세요.

규칙이 분석 테스트 규칙으로 정의된 경우 속성에 analysis_test_transition을 사용하여 정의된 구성 전환을 사용할 수 있지만 몇 가지 제한사항이 적용됩니다.

  • 이 규칙의 타겟은 있을 수 있는 전이 종속 항목의 수에 제한이 있습니다.
  • 이 규칙은 test=True가 설정된 것처럼 테스트 규칙으로 간주됩니다. 이 값은 test의 값을 대체합니다.
  • 규칙 구현 함수가 작업을 등록하지 않을 수 있습니다. 대신 AnalysisTestResultInfo를 제공하여 통과/실패 결과를 등록해야 합니다.
build_setting BuildSetting; or None; default = None
설정된 경우 이 규칙이 어떤 종류의 build setting인지 설명합니다. config 모듈을 참고하세요. 이 속성을 설정하면 'build_setting_default'라는 필수 속성이 이 규칙에 자동으로 추가되며, 여기에 전달된 값에 해당하는 유형입니다.
cfg default = None
설정하면 분석 전에 규칙이 자체 구성에 적용할 구성 전환을 가리킵니다.
exec_groups dict; or None; default = None
exec_groups에 대한 실행 그룹 이름 (문자열)의 음성입니다. 이 옵션을 설정하면 규칙이 단일 타겟 내의 여러 실행 플랫폼에서 작업을 실행할 수 있습니다. 자세한 내용은 실행 그룹 문서를 참고하세요.
compile_one_filetype sequence of strings; or None; 기본값 = None
--compile_one_dependency에서 사용: 여러 규칙이 지정된 파일을 사용하는 경우 다른 규칙보다 이 규칙을 선택해야 합니다.
name string; or None; default = None
지원 중단됨. 이 매개변수는 지원 중단되었으며 곧 삭제됩니다. 의존하지 마세요. --+incompatible_remove_rule_name_parameter를 사용하면 사용 중지됩니다. 이 플래그를 사용하여 코드가 예정된 삭제와 호환되는지 확인합니다.
지원 중단됨: 사용하지 마세요.

Bazel에서 이해하고 로깅, native.existing_rule(...)[kind], bazel query와 같은 컨텍스트에서 보고하는 이 규칙의 이름입니다. 일반적으로 이 규칙에 바인딩되는 Starlark 식별자와 동일합니다. 예를 들어 foo_library라는 규칙은 일반적으로 foo_library = rule(...)로 선언되고 BUILD 파일에서 foo_library(...)로 인스턴스화됩니다.

이 매개변수를 생략하면 규칙의 이름이 선언 .bzl 모듈 내에서 이 규칙에 바인딩되는 첫 번째 Starlark 전역 변수의 이름으로 설정됩니다. 따라서 이름이 foo_library이면 foo_library = rule(...)는 이 매개변수를 지정할 필요가 없습니다.

규칙의 명시적 이름을 지정해도 규칙을 인스턴스화할 수 있는 위치는 변경되지 않습니다.

select

unknown select(x, no_match_error='')

select()는 규칙 속성을 구성 가능하게 만드는 도우미 함수입니다. 자세한 내용은 빌드 백과사전을 참고하세요.

매개변수

매개변수 설명
x 필수
구성 조건을 값에 매핑하는 사전입니다. 각 키는 config_setting 또는 constraint_value 인스턴스를 식별하는 라벨 또는 라벨 문자열입니다. 문자열 대신 라벨을 사용해야 하는 경우에 대해서는 매크로 문서를 참조하세요.
no_match_error default = ''
조건이 일치하지 않는 경우 보고할 선택적 맞춤 오류입니다.

single_version_override

None single_version_override(module_name, version='', registry='', patches=[], patch_cmds=[], patch_strip=0)

종속 항목이 여전히 레지스트리에서 가져와야 하지만 버전이 고정되어야 하거나 레지스트리가 재정의되어야 하거나 패치 목록이 적용되어야 함을 지정합니다. 이 디렉티브는 루트 모듈에서만 적용됩니다. 즉, 모듈이 다른 모듈의 종속 항목으로 사용되는 경우 자체 재정의는 무시됩니다.

매개변수

매개변수 설명
module_name required
이 재정의를 적용할 Bazel 모듈 종속 항목의 이름입니다.
version default = ''
종속 항목 그래프에서 이 모듈의 선언된 버전을 재정의합니다. 즉, 이 모듈은 이 재정의 버전에 '고정'됩니다. 등록처 또는 패치만 재정의하려는 경우 이 속성을 생략할 수 있습니다.
registry default = ''
이 모듈의 레지스트리를 재정의합니다. 기본 레지스트리 목록에서 이 모듈을 찾는 대신 지정된 레지스트리를 사용해야 합니다.
patches Iterable of strings; default = []
이 모듈에 적용할 패치 파일을 가리키는 라벨 목록입니다. 패치 파일은 최상위 프로젝트의 소스 트리에 있어야 합니다. 목록 순서대로 적용됩니다.
patch_cmds Iterable of strings; default = []
패치가 적용된 후 Linux/Macos에 적용될 Bash 명령어 시퀀스입니다.
patch_strip 기본값 = 0
Unix 패치의 --strip 인수와 동일합니다.

정렬됨

list sorted(iterable, *, key=None, reverse=False)

제공된 반복 가능한 시퀀스의 모든 요소가 포함된 새 정렬된 목록을 반환합니다. x < y를 사용하여 x, y 요소 쌍을 비교할 수 없는 경우 오류가 발생할 수 있습니다. reverse 인수가 True가 아닌 한 요소는 오름차순으로 정렬됩니다. 이 경우 순서는 내림차순입니다. 정렬이 안정적입니다. 동일한 항목을 비교하는 요소는 원래 상대적인 순서를 유지합니다.
sorted([3, 5, 4]) == [3, 4, 5]

매개변수

매개변수 설명
iterable 필수
정렬할 반복 가능한 시퀀스입니다.
key default = None
비교 전에 각 요소에 적용되는 선택적 함수입니다.
reverse 기본값 = False
결과를 내림차순으로 반환합니다.

str

string str(x)

객체를 문자열로 변환합니다. 이는 디버깅에 유용합니다.
str("ab") == "ab"
str(8) == "8"

매개변수

매개변수 설명
x required
변환할 객체입니다.

tag_class

tag_class tag_class(attrs={}, *, doc='')

모듈 확장 프로그램에서 사용할 수 있는 데이터 객체인 태그 클래스의 속성 스키마를 정의하는 새 tag_class 객체를 만듭니다.

매개변수

매개변수 설명
attrs 기본값 = {}
이 태그 클래스의 모든 속성을 선언하는 사전입니다. 속성 이름에서 속성 객체로 매핑합니다(attr 모듈 참고).
doc 기본값 = ''
문서 생성 도구로 추출할 수 있는 태그 클래스의 설명입니다.

tuple

tuple tuple(x=())

지정된 반복 가능한 값과 동일한 요소가 있는 튜플을 반환합니다.
tuple([1, 2]) == (1, 2)
tuple((2, 3, 2)) == (2, 3, 2)
tuple({5: "a", 2: "b", 4: "c"}) == (5, 2, 4)

매개변수

매개변수 설명
x default = ()
변환할 객체입니다.

유형

string type(x)

인수의 유형 이름을 반환합니다. 이는 디버깅 및 유형 확인에 유용합니다. 예:
type(2) == "int"
type([1]) == "list"
type(struct(a = 2)) == "struct"
이 함수는 향후 변경될 수 있습니다. Python과 호환되는 코드를 작성하고 미래에 대비하려면 반환 값을 비교하는 데만 사용합니다.
if type(x) == type([]):  # if x is a list

매개변수

매개변수 설명
x 필수
유형을 확인할 객체입니다.

use_extension

module_extension_proxy use_extension(extension_bzl_file, extension_name, *, dev_dependency=False, isolate=False)

모듈 확장 프로그램을 나타내는 프록시 객체를 반환합니다. 이 메서드를 호출하여 모듈 확장 프로그램 태그를 만들 수 있습니다.

매개변수

매개변수 설명
extension_bzl_file 필수
모듈 확장자를 정의하는 Starlark 파일의 라벨입니다.
extension_name 필수
사용할 모듈 확장 프로그램의 이름입니다. 이 이름의 기호는 Starlark 파일에서 내보내야 합니다.
dev_dependency 기본값 = False
이 값이 true이면 현재 모듈이 루트 모듈이 아니거나 `--ignore_dev_dependency` 가 사용 설정된 경우 모듈 확장 프로그램의 이 사용이 무시됩니다.
isolate default = False
true인 경우 모듈 확장 프로그램 사용이 이 모듈과 다른 모듈에서 모두 다른 모든 용도와 분리됩니다. 이 용도로 생성된 태그는 다른 용도에 영향을 미치지 않으며 이 용도로 확장 프로그램에서 생성된 저장소는 확장 프로그램에서 생성된 다른 모든 저장소와 구별됩니다.

use_repo

None use_repo(extension_proxy, *args, **kwargs)

지정된 모듈 확장 프로그램에서 생성된 저장소를 하나 이상 현재 모듈의 범위로 가져옵니다.

매개변수

매개변수 설명
extension_proxy 필수
use_extension 호출에서 반환된 모듈 확장 프로кси 객체입니다.
args 필수
가져올 저장소의 이름입니다.
kwargs required
현재 모듈의 범위로 다른 이름으로 가져올 특정 저장소를 지정합니다. 키는 현재 범위에서 사용할 이름이어야 하지만 값은 모듈 확장 프로그램에서 내보낸 원래 이름이어야 합니다.

공개 상태

None visibility(value)

현재 초기화 중인 .bzl 모듈의 로드 공개 상태를 설정합니다.

모듈의 로드 가시성은 다른 BUILD 및 .bzl 파일이 모듈을 로드할 수 있는지 여부를 결정합니다. (이는 파일이 다른 대상의 종속 항목으로 표시될 수 있는지를 제어하는 기본 .bzl 소스 파일의 대상 가시성과는 다릅니다.) 로드 공개 상태는 패키지 수준에서 작동합니다. 모듈을 로드하려면 로드를 실행하는 파일이 모듈에 공개 상태가 부여된 패키지에 있어야 합니다. 모듈은 가시성에 상관없이 항상 자체 패키지 내에서 로드할 수 있습니다.

visibility()는 .bzl 파일당 한 번만 호출할 수 있으며 함수 내부가 아닌 최상위 수준에서만 호출할 수 있습니다. 이 호출은 load() 문과 인수를 결정하는 데 필요한 간단한 로직 바로 아래에 배치하는 것이 좋습니다.

플래그 --check_bzl_visibility가 false로 설정되면 로드 공개 상태 위반으로 인해 경고가 발생하지만 빌드가 실패하지는 않습니다.

매개변수

매개변수 설명
value 필수
패키지 사양 문자열 목록 또는 단일 패키지 사양 문자열입니다.

패키지 사양은 package_group와 동일한 형식을 따르지만, 음수 패키지 사양은 허용되지 않습니다. 즉, 사양의 형식은 다음과 같을 수 있습니다.

  • "//foo": //foo 패키지
  • "//foo/...": //foo 패키지 및 모든 하위 패키지입니다.
  • "public" 또는 "private": 각각 모든 패키지 또는 패키지 없음

'@' 문법은 허용되지 않습니다. 모든 사양은 현재 모듈의 저장소를 기준으로 해석됩니다.

value가 문자열 목록인 경우 이 모듈에 공개 상태가 부여된 패키지 세트는 각 사양으로 표현된 패키지의 합집합입니다. 빈 목록은 private와 동일한 효과가 있습니다. value이 단일 문자열인 경우 싱글톤 목록 [value]인 것처럼 처리됩니다.

--incompatible_package_group_has_public_syntax--incompatible_fix_package_group_reporoot_syntax 플래그는 이 인수에 영향을 미치지 않습니다. "public""private" 값은 항상 사용할 수 있으며 "//..."는 항상 '현재 저장소의 모든 패키지'로 해석됩니다.

작업공간

None workspace(name)

이 함수는 WORKSPACE 파일에서만 사용할 수 있으며 WORKSPACE 파일의 다른 모든 함수보다 먼저 선언해야 합니다. 각 WORKSPACE 파일에는 workspace 함수가 있어야 합니다.

이 작업공간의 이름을 설정합니다. 워크스페이스 이름은 밑줄을 구분자로 사용하여 프로젝트의 Java 패키지 스타일 설명이어야 합니다. 예를 들어 github.com/bazelbuild/bazel은 com_github_bazelbuild_bazel을 사용해야 합니다.

이 이름은 저장소의 런파일이 저장되는 디렉터리에 사용됩니다. 예를 들어 로컬 저장소에 runfile foo/bar가 있고 WORKSPACE 파일에 workspace(name = 'baz')가 포함되어 있으면 mytarget.runfiles/baz/foo/bar에서 runfile을 사용할 수 있습니다. 워크스페이스 이름을 지정하지 않으면 runfile이 bar.runfiles/foo/bar에 심볼릭 링크됩니다.

원격 저장소 규칙 이름은 유효한 워크스페이스 이름이어야 합니다. 예를 들어 maven_jar(name = 'foo')가 있지만 maven_jar(name = 'foo%bar')는 있을 수 없습니다. Bazel이 workspace(name = 'foo%bar')가 포함된 maven_jar에 대해 WORKSPACE 파일을 작성하려고 시도하기 때문입니다.

매개변수

매개변수 설명
name 필수
작업공간의 이름입니다. 이름은 문자로 시작해야 하며 문자, 숫자, 밑줄, 대시, 점만 포함할 수 있습니다.

우편번호

list zip(*args)

tuplelist를 반환합니다. 여기서 i번째 튜플은 각 인수 시퀀스 또는 반복 가능한 객체의 i번째 요소를 포함합니다. 목록에는 가장 짧은 입력의 크기가 있습니다. 반복 가능한 단일 인수를 사용하여 1-튜플 목록을 반환합니다. 인수가 없으면 빈 목록을 반환합니다. 예:
zip()  # == []
zip([1, 2])  # == [(1,), (2,)]
zip([1, 2], [3, 4])  # == [(1, 3), (2, 4)]
zip([1, 2], [3, 4, 5])  # == [(1, 3), (2, 4)]

매개변수

매개변수 설명
args
목록을 압축해야 합니다.