thuộc tính

Báo cáo vấn đề Xem nguồn Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

Đây là một mô-đun cấp cao nhất để xác định các giản đồ thuộc tính của một quy tắc hoặc khía cạnh. Mỗi hàm trả về một đối tượng đại diện cho giản đồ của một thuộc tính duy nhất. Các đối tượng này được dùng làm giá trị của đối số từ điển attrs trong rule(), aspect(), repository_rule()tag_class().

Hãy xem trang Quy tắc để biết thêm thông tin về cách xác địnhsử dụng các thuộc tính.

Hội viên

bool

Attribute attr.bool(configurable=unbound, default=False, doc=None, mandatory=False)

Tạo một giản đồ cho thuộc tính boolean. Thuộc tính ctx.attr tương ứng sẽ thuộc loại bool.

Thông số

Thông số Mô tả
configurable bool; hoặc không liên kết; giá trị mặc định là unbound
Bạn chỉ có thể chỉ định đối số này cho một thuộc tính của macro tượng trưng.

Nếu configurable được đặt rõ ràng thành False, thì thuộc tính macro tượng trưng sẽ không thể định cấu hình – tức là thuộc tính này không thể nhận giá trị select(). Nếu configurable không được liên kết hoặc được đặt rõ ràng thành True, thì bạn có thể định cấu hình thuộc tính và thuộc tính này có thể nhận giá trị select().

Đối với một thuộc tính của quy tắc hoặc khía cạnh, bạn phải để configurable không liên kết. Hầu hết các thuộc tính quy tắc Starlark luôn có thể định cấu hình, ngoại trừ các thuộc tính quy tắc attr.output(), attr.output_list()attr.license(). Các thuộc tính này luôn không thể định cấu hình.

default bool; default is False
Giá trị mặc định để sử dụng nếu không có giá trị nào cho thuộc tính này được đưa ra khi khởi tạo quy tắc.
doc string; hoặc None; mặc định là None
Nội dung mô tả về thuộc tính mà các công cụ tạo tài liệu có thể trích xuất.
mandatory bool; mặc định là False
Nếu là true, bạn phải chỉ định giá trị một cách rõ ràng (ngay cả khi giá trị đó có default).

int

Attribute attr.int(configurable=unbound, default=0, doc=None, mandatory=False, values=[])

Tạo một giản đồ cho thuộc tính số nguyên. Giá trị phải nằm trong phạm vi 32 bit có dấu. Thuộc tính ctx.attr tương ứng sẽ thuộc loại int.

Thông số

Thông số Mô tả
configurable bool; hoặc không liên kết; giá trị mặc định là unbound
Bạn chỉ có thể chỉ định đối số này cho một thuộc tính của macro tượng trưng.

Nếu configurable được đặt rõ ràng thành False, thì thuộc tính macro tượng trưng sẽ không thể định cấu hình – tức là thuộc tính này không thể nhận giá trị select(). Nếu configurable không được liên kết hoặc được đặt rõ ràng thành True, thì bạn có thể định cấu hình thuộc tính và thuộc tính này có thể nhận giá trị select().

Đối với một thuộc tính của quy tắc hoặc khía cạnh, bạn phải để configurable không liên kết. Hầu hết các thuộc tính quy tắc Starlark luôn có thể định cấu hình, ngoại trừ các thuộc tính quy tắc attr.output(), attr.output_list()attr.license(). Các thuộc tính này luôn không thể định cấu hình.

default int; mặc định là 0
Giá trị mặc định để sử dụng nếu không có giá trị nào cho thuộc tính này được đưa ra khi tạo thực thể quy tắc.
doc string; hoặc None; mặc định là None
Nội dung mô tả về thuộc tính mà các công cụ tạo tài liệu có thể trích xuất.
mandatory bool; mặc định là False
Nếu là true, bạn phải chỉ định giá trị một cách rõ ràng (ngay cả khi giá trị đó có default).
values sequence của ints; mặc định là []
Danh sách các giá trị được phép cho thuộc tính. Lỗi sẽ xảy ra nếu bạn cung cấp bất kỳ giá trị nào khác.

int_list

Attribute attr.int_list(mandatory=False, allow_empty=True, *, configurable=unbound, default=[], doc=None)

Tạo một giản đồ cho thuộc tính danh sách số nguyên. Mỗi phần tử phải nằm trong phạm vi 32 bit có dấu.

Thông số

Thông số Mô tả
mandatory bool; mặc định là False
Nếu là true, bạn phải chỉ định giá trị một cách rõ ràng (ngay cả khi giá trị đó có default).
allow_empty bool; default is True
True if the attribute can be empty.
configurable bool; hoặc không liên kết; giá trị mặc định là unbound
Bạn chỉ có thể chỉ định đối số này cho một thuộc tính của macro tượng trưng.

Nếu configurable được đặt rõ ràng thành False, thì thuộc tính macro tượng trưng sẽ không thể định cấu hình – tức là thuộc tính này không thể nhận giá trị select(). Nếu configurable không được liên kết hoặc được đặt rõ ràng thành True, thì bạn có thể định cấu hình thuộc tính và thuộc tính này có thể nhận giá trị select().

Đối với một thuộc tính của quy tắc hoặc khía cạnh, bạn phải để configurable không liên kết. Hầu hết các thuộc tính quy tắc Starlark luôn có thể định cấu hình, ngoại trừ các thuộc tính quy tắc attr.output(), attr.output_list()attr.license(). Các thuộc tính này luôn không thể định cấu hình.

default sequence của ints; mặc định là []
Giá trị mặc định để sử dụng nếu không có giá trị nào cho thuộc tính này khi tạo thực thể quy tắc.
doc string; hoặc None; mặc định là None
Nội dung mô tả về thuộc tính mà các công cụ tạo tài liệu có thể trích xuất.

nhãn

Attribute attr.label(configurable=unbound, default=None, materializer=None, doc=None, executable=False, allow_files=None, allow_single_file=None, mandatory=False, skip_validations=False, providers=[], for_dependency_resolution=unbound, allow_rules=None, cfg=None, aspects=[], flags=[])

Tạo một giản đồ cho thuộc tính nhãn. Đây là một thuộc tính phụ thuộc.

Thuộc tính này chứa các giá trị riêng biệt của Label. Nếu một chuỗi được cung cấp thay cho Label, thì chuỗi đó sẽ được chuyển đổi bằng hàm khởi tạo nhãn. Các phần tương đối của đường dẫn nhãn, bao gồm cả kho lưu trữ (có thể được đổi tên), được phân giải liên quan đến gói của mục tiêu được khởi tạo.

Tại thời điểm phân tích (trong hàm triển khai của quy tắc), khi truy xuất giá trị thuộc tính từ ctx.attr, các nhãn sẽ được thay thế bằng Target tương ứng. Điều này cho phép bạn truy cập vào các nhà cung cấp của các phần phụ thuộc của mục tiêu hiện tại.

Ngoài các tệp nguồn thông thường, loại thuộc tính này thường được dùng để tham chiếu đến một công cụ, chẳng hạn như trình biên dịch. Những công cụ như vậy được coi là các phần phụ thuộc, giống như các tệp nguồn. Để tránh yêu cầu người dùng chỉ định nhãn của công cụ mỗi khi họ sử dụng quy tắc trong tệp BUILD, bạn có thể mã hoá cứng nhãn của một công cụ chuẩn làm giá trị default của thuộc tính này. Nếu cũng muốn ngăn người dùng ghi đè giá trị mặc định này, bạn có thể đặt thuộc tính ở chế độ riêng tư bằng cách đặt cho thuộc tính đó một tên bắt đầu bằng dấu gạch dưới. Hãy xem trang Quy tắc để biết thêm thông tin.

Thông số

Thông số Mô tả
configurable bool; hoặc không liên kết; giá trị mặc định là unbound
Bạn chỉ có thể chỉ định đối số này cho một thuộc tính của macro tượng trưng.

Nếu configurable được đặt rõ ràng thành False, thì thuộc tính macro tượng trưng sẽ không thể định cấu hình – tức là thuộc tính này không thể nhận giá trị select(). Nếu configurable không được liên kết hoặc được đặt rõ ràng thành True, thì bạn có thể định cấu hình thuộc tính và thuộc tính này có thể nhận giá trị select().

Đối với một thuộc tính của quy tắc hoặc khía cạnh, bạn phải để configurable không liên kết. Hầu hết các thuộc tính quy tắc Starlark luôn có thể định cấu hình, ngoại trừ các thuộc tính quy tắc attr.output(), attr.output_list()attr.license(). Các thuộc tính này luôn không thể định cấu hình.

default Label; hoặc string; hoặc LateBoundDefault; hoặc NativeComputedDefault; hoặc function; hoặc None; mặc định là None
Giá trị mặc định để sử dụng nếu không có giá trị nào cho thuộc tính này khi tạo thực thể của quy tắc.Sử dụng một chuỗi hoặc hàm Label để chỉ định một giá trị mặc định, ví dụ: attr.label(default = "//a:b").
materializer function; mặc định là None
Thử nghiệm. Đây là một thông số thử nghiệm và có thể thay đổi bất cứ lúc nào. Vui lòng không phụ thuộc vào thông tin này. Bạn có thể bật tính năng này theo cách thử nghiệm bằng cách đặt --experimental_dormant_deps
Nếu được đặt, thuộc tính sẽ hiện thực hoá các phần phụ thuộc không hoạt động từ bao đóng bắc cầu. Giá trị của tham số này phải là một hàm có quyền truy cập vào các giá trị của thuộc tính trong quy tắc không phải là phần phụ thuộc hoặc được đánh dấu là có sẵn để phân giải phần phụ thuộc. Bạn phải trả về một phần phụ thuộc không hoạt động hoặc một danh sách các phần phụ thuộc đó, tuỳ thuộc vào loại thuộc tính
doc string; hoặc None; mặc định là None
Nội dung mô tả về thuộc tính mà các công cụ tạo tài liệu có thể trích xuất.
executable bool; default is False
True if the dependency has to be executable. Điều này có nghĩa là nhãn phải tham chiếu đến một tệp thực thi hoặc đến một quy tắc xuất ra một tệp thực thi. Truy cập vào nhãn bằng ctx.executable.<attribute_name>.
allow_files bool; hoặc sequence của strings; hoặc None; mặc định là None
Có cho phép các mục tiêu File hay không. Có thể là True, False (mặc định) hoặc danh sách các đuôi tệp được phép (ví dụ: [".cc", ".cpp"]).
allow_single_file mặc định là None
Tương tự như allow_files, nhưng có hạn chế là nhãn phải tương ứng với một Tệp duy nhất. Truy cập vào mục này thông qua ctx.file.<attribute_name>.
mandatory bool; mặc định là False
Nếu là true, bạn phải chỉ định giá trị một cách rõ ràng (ngay cả khi giá trị đó có default).
skip_validations bool; mặc định là False
Nếu đúng, các thao tác xác thực của các phần phụ thuộc bắc cầu từ thuộc tính này sẽ không chạy. Đây là biện pháp giảm thiểu tạm thời và SẼ bị xoá trong tương lai.
providers sequence; mặc định là []
Các trình cung cấp phải được cung cấp bởi mọi phần phụ thuộc xuất hiện trong thuộc tính này.

Định dạng của đối số này là danh sách các danh sách nhà cung cấp – các đối tượng *Info do provider() trả về (hoặc trong trường hợp nhà cung cấp cũ, tên chuỗi của nhà cung cấp đó). Phần phụ thuộc phải trả về TẤT CẢ các nhà cung cấp được đề cập trong ít nhất MỘT trong các danh sách bên trong. Để thuận tiện, đối số này cũng có thể là danh sách nhà cung cấp một cấp. Trong trường hợp đó, đối số này sẽ được bao bọc trong một danh sách bên ngoài có một phần tử (tức là [A, B] có nghĩa là [[A, B]]). Bạn KHÔNG bắt buộc phải tuân theo quy tắc về việc phần phụ thuộc quảng cáo những nhà cung cấp đó trong tham số provides, tuy nhiên, đây được coi là phương pháp hay nhất.

for_dependency_resolution mặc định là unbound
Nếu bạn đặt thuộc tính này, thì thuộc tính này sẽ có sẵn cho các trình hiện thực hoá. Bạn chỉ được phép tham chiếu các quy tắc được đánh dấu bằng cờ có cùng tên thông qua những thuộc tính như vậy.
allow_rules sequence của strings; hoặc None; default is None
Which rule targets (name of the classes) are allowed. Chính sách này không được dùng nữa (chỉ giữ lại để tương thích), hãy sử dụng các nhà cung cấp.
cfg mặc định là None
Cấu hình của thuộc tính. Đó có thể là "exec", cho biết phần phụ thuộc được tạo cho execution platform hoặc "target", cho biết phần phụ thuộc được tạo cho target platform. Một ví dụ điển hình về sự khác biệt này là khi tạo ứng dụng di động, trong đó target platformAndroid hoặc iOS, còn execution platformLinux, macOS hoặc Windows. Tham số này là bắt buộc nếu executable là True để tránh vô tình tạo các công cụ lưu trữ trong cấu hình đích. "target" không có hiệu ứng ngữ nghĩa, vì vậy, đừng đặt giá trị này khi executable là False, trừ phi giá trị này thực sự giúp làm rõ ý định của bạn.
aspects sequence của Aspects; giá trị mặc định là []
Các khía cạnh cần áp dụng cho (các) phần phụ thuộc do thuộc tính này chỉ định.
flags sequence của strings; giá trị mặc định là []
Không dùng nữa, sẽ bị xoá.

label_keyed_string_dict

Attribute attr.label_keyed_string_dict(allow_empty=True, *, configurable=unbound, default={}, doc=None, allow_files=None, allow_rules=None, providers=[], for_dependency_resolution=unbound, flags=[], mandatory=False, skip_validations=False, cfg=None, aspects=[])

Tạo một giản đồ cho một thuộc tính chứa từ điển, trong đó các khoá là nhãn và các giá trị là chuỗi. Đây là một thuộc tính phụ thuộc.

Thuộc tính này chứa các giá trị riêng biệt của Label. Nếu một chuỗi được cung cấp thay cho Label, thì chuỗi đó sẽ được chuyển đổi bằng hàm khởi tạo nhãn. Các phần tương đối của đường dẫn nhãn, bao gồm cả kho lưu trữ (có thể được đổi tên), được phân giải liên quan đến gói của mục tiêu được khởi tạo.

Tại thời điểm phân tích (trong hàm triển khai của quy tắc), khi truy xuất giá trị thuộc tính từ ctx.attr, các nhãn sẽ được thay thế bằng Target tương ứng. Điều này cho phép bạn truy cập vào các nhà cung cấp của các phần phụ thuộc của mục tiêu hiện tại.

Thông số

Thông số Mô tả
allow_empty bool; default is True
True if the attribute can be empty.
configurable bool; hoặc không liên kết; giá trị mặc định là unbound
Bạn chỉ có thể chỉ định đối số này cho một thuộc tính của macro tượng trưng.

Nếu configurable được đặt rõ ràng thành False, thì thuộc tính macro tượng trưng sẽ không thể định cấu hình – tức là thuộc tính này không thể nhận giá trị select(). Nếu configurable không được liên kết hoặc được đặt rõ ràng thành True, thì bạn có thể định cấu hình thuộc tính và thuộc tính này có thể nhận giá trị select().

Đối với một thuộc tính của quy tắc hoặc khía cạnh, bạn phải để configurable không liên kết. Hầu hết các thuộc tính quy tắc Starlark luôn có thể định cấu hình, ngoại trừ các thuộc tính quy tắc attr.output(), attr.output_list()attr.license(). Các thuộc tính này luôn không thể định cấu hình.

default dict; hoặc function; giá trị mặc định là {}
Giá trị mặc định sẽ dùng nếu không có giá trị nào cho thuộc tính này khi khởi tạo quy tắc.Sử dụng các chuỗi hoặc hàm Label để chỉ định giá trị mặc định, ví dụ: attr.label_keyed_string_dict(default = {"//a:b": "value", "//a:c": "string"}).
doc string; hoặc None; mặc định là None
Nội dung mô tả về thuộc tính mà các công cụ tạo tài liệu có thể trích xuất.
allow_files bool; hoặc sequence của strings; hoặc None; mặc định là None
Có cho phép các mục tiêu File hay không. Có thể là True, False (mặc định) hoặc danh sách các đuôi tệp được phép (ví dụ: [".cc", ".cpp"]).
allow_rules sequence của strings; hoặc None; default is None
Which rule targets (name of the classes) are allowed. Chính sách này không được dùng nữa (chỉ giữ lại để tương thích), hãy sử dụng các nhà cung cấp.
providers sequence; mặc định là []
Các trình cung cấp phải được cung cấp bởi mọi phần phụ thuộc xuất hiện trong thuộc tính này.

Định dạng của đối số này là danh sách các danh sách nhà cung cấp – các đối tượng *Info do provider() trả về (hoặc trong trường hợp nhà cung cấp cũ, tên chuỗi của nhà cung cấp đó). Phần phụ thuộc phải trả về TẤT CẢ các nhà cung cấp được đề cập trong ít nhất MỘT trong các danh sách bên trong. Để thuận tiện, đối số này cũng có thể là danh sách nhà cung cấp một cấp. Trong trường hợp đó, đối số này sẽ được bao bọc trong một danh sách bên ngoài có một phần tử (tức là [A, B] có nghĩa là [[A, B]]). Bạn KHÔNG bắt buộc phải tuân theo quy tắc về việc phần phụ thuộc quảng cáo những nhà cung cấp đó trong tham số provides, tuy nhiên, đây được coi là phương pháp hay nhất.

for_dependency_resolution mặc định là unbound
Nếu bạn đặt thuộc tính này, thì thuộc tính này sẽ có sẵn cho các trình hiện thực hoá. Bạn chỉ được phép tham chiếu các quy tắc được đánh dấu bằng cờ có cùng tên thông qua những thuộc tính như vậy.
flags sequence của strings; giá trị mặc định là []
Không dùng nữa, sẽ bị xoá.
mandatory bool; mặc định là False
Nếu là true, bạn phải chỉ định giá trị một cách rõ ràng (ngay cả khi giá trị đó có default).
skip_validations bool; mặc định là False
Nếu đúng, các thao tác xác thực của các phần phụ thuộc bắc cầu từ thuộc tính này sẽ không chạy. Đây là biện pháp giảm thiểu tạm thời và SẼ bị xoá trong tương lai.
cfg mặc định là None
Cấu hình của thuộc tính. Đó có thể là "exec", cho biết phần phụ thuộc được tạo cho execution platform hoặc "target", cho biết phần phụ thuộc được tạo cho target platform. Một ví dụ điển hình về sự khác biệt này là khi tạo ứng dụng di động, trong đó target platformAndroid hoặc iOS, còn execution platformLinux, macOS hoặc Windows.
aspects sequence của Aspects; giá trị mặc định là []
Các khía cạnh cần áp dụng cho (các) phần phụ thuộc do thuộc tính này chỉ định.

label_list

Attribute attr.label_list(allow_empty=True, *, configurable=unbound, default=[], materializer=None, doc=None, allow_files=None, allow_rules=None, providers=[], for_dependency_resolution=unbound, flags=[], mandatory=False, skip_validations=False, cfg=None, aspects=[])

Tạo một giản đồ cho thuộc tính danh sách nhãn. Đây là một thuộc tính phụ thuộc. Thuộc tính ctx.attr tương ứng sẽ thuộc loại list của Targets.

Thuộc tính này chứa các giá trị riêng biệt của Label. Nếu một chuỗi được cung cấp thay cho Label, thì chuỗi đó sẽ được chuyển đổi bằng hàm khởi tạo nhãn. Các phần tương đối của đường dẫn nhãn, bao gồm cả kho lưu trữ (có thể được đổi tên), được phân giải liên quan đến gói của mục tiêu được khởi tạo.

Tại thời điểm phân tích (trong hàm triển khai của quy tắc), khi truy xuất giá trị thuộc tính từ ctx.attr, các nhãn sẽ được thay thế bằng Target tương ứng. Điều này cho phép bạn truy cập vào các nhà cung cấp của các phần phụ thuộc của mục tiêu hiện tại.

Thông số

Thông số Mô tả
allow_empty bool; default is True
True if the attribute can be empty.
configurable bool; hoặc không liên kết; giá trị mặc định là unbound
Bạn chỉ có thể chỉ định đối số này cho một thuộc tính của macro tượng trưng.

Nếu configurable được đặt rõ ràng thành False, thì thuộc tính macro tượng trưng sẽ không thể định cấu hình – tức là thuộc tính này không thể nhận giá trị select(). Nếu configurable không được liên kết hoặc được đặt rõ ràng thành True, thì bạn có thể định cấu hình thuộc tính và thuộc tính này có thể nhận giá trị select().

Đối với một thuộc tính của quy tắc hoặc khía cạnh, bạn phải để configurable không liên kết. Hầu hết các thuộc tính quy tắc Starlark luôn có thể định cấu hình, ngoại trừ các thuộc tính quy tắc attr.output(), attr.output_list()attr.license(). Các thuộc tính này luôn không thể định cấu hình.

default trình tự của Nhãn; hoặc hàm; giá trị mặc định là []
Giá trị mặc định để sử dụng nếu không có giá trị nào cho thuộc tính này khi khởi tạo quy tắc.Sử dụng các chuỗi hoặc hàm Label để chỉ định giá trị mặc định, ví dụ: attr.label_list(default = ["//a:b", "//a:c"]).
materializer function; mặc định là None
Thử nghiệm. Đây là một thông số thử nghiệm và có thể thay đổi bất cứ lúc nào. Vui lòng không phụ thuộc vào thông tin này. Bạn có thể bật tính năng này theo cách thử nghiệm bằng cách đặt --experimental_dormant_deps
Nếu được đặt, thuộc tính sẽ hiện thực hoá các phần phụ thuộc không hoạt động từ bao đóng bắc cầu. Giá trị của tham số này phải là một hàm có quyền truy cập vào các giá trị của thuộc tính trong quy tắc không phải là phần phụ thuộc hoặc được đánh dấu là có sẵn để phân giải phần phụ thuộc. Bạn phải trả về một phần phụ thuộc không hoạt động hoặc một danh sách các phần phụ thuộc đó, tuỳ thuộc vào loại thuộc tính
doc string; hoặc None; mặc định là None
Nội dung mô tả về thuộc tính mà các công cụ tạo tài liệu có thể trích xuất.
allow_files bool; hoặc sequence của strings; hoặc None; mặc định là None
Có cho phép các mục tiêu File hay không. Có thể là True, False (mặc định) hoặc danh sách các đuôi tệp được phép (ví dụ: [".cc", ".cpp"]).
allow_rules sequence của strings; hoặc None; default is None
Which rule targets (name of the classes) are allowed. Chính sách này không được dùng nữa (chỉ giữ lại để tương thích), hãy sử dụng các nhà cung cấp.
providers sequence; mặc định là []
Các trình cung cấp phải được cung cấp bởi mọi phần phụ thuộc xuất hiện trong thuộc tính này.

Định dạng của đối số này là danh sách các danh sách nhà cung cấp – các đối tượng *Info do provider() trả về (hoặc trong trường hợp nhà cung cấp cũ, tên chuỗi của nhà cung cấp đó). Phần phụ thuộc phải trả về TẤT CẢ các nhà cung cấp được đề cập trong ít nhất MỘT trong các danh sách bên trong. Để thuận tiện, đối số này cũng có thể là danh sách nhà cung cấp một cấp. Trong trường hợp đó, đối số này sẽ được bao bọc trong một danh sách bên ngoài có một phần tử (tức là [A, B] có nghĩa là [[A, B]]). Bạn KHÔNG bắt buộc phải tuân theo quy tắc về việc phần phụ thuộc quảng cáo những nhà cung cấp đó trong tham số provides, tuy nhiên, đây được coi là phương pháp hay nhất.

for_dependency_resolution mặc định là unbound
Nếu bạn đặt thuộc tính này, thì thuộc tính này sẽ có sẵn cho các trình hiện thực hoá. Bạn chỉ được phép tham chiếu các quy tắc được đánh dấu bằng cờ có cùng tên thông qua những thuộc tính như vậy.
flags sequence của strings; giá trị mặc định là []
Không dùng nữa, sẽ bị xoá.
mandatory bool; mặc định là False
Nếu là true, bạn phải chỉ định giá trị một cách rõ ràng (ngay cả khi giá trị đó có default).
skip_validations bool; mặc định là False
Nếu đúng, các thao tác xác thực của các phần phụ thuộc bắc cầu từ thuộc tính này sẽ không chạy. Đây là biện pháp giảm thiểu tạm thời và SẼ bị xoá trong tương lai.
cfg mặc định là None
Cấu hình của thuộc tính. Đó có thể là "exec", cho biết phần phụ thuộc được tạo cho execution platform hoặc "target", cho biết phần phụ thuộc được tạo cho target platform. Một ví dụ điển hình về sự khác biệt này là khi tạo ứng dụng di động, trong đó target platformAndroid hoặc iOS, còn execution platformLinux, macOS hoặc Windows.
aspects sequence của Aspects; giá trị mặc định là []
Các khía cạnh cần áp dụng cho (các) phần phụ thuộc do thuộc tính này chỉ định.

output

Attribute attr.output(doc=None, mandatory=False)

Tạo một giản đồ cho thuộc tính đầu ra (nhãn).

Thuộc tính này chứa các giá trị riêng biệt của Label. Nếu một chuỗi được cung cấp thay cho Label, thì chuỗi đó sẽ được chuyển đổi bằng hàm khởi tạo nhãn. Các phần tương đối của đường dẫn nhãn, bao gồm cả kho lưu trữ (có thể được đổi tên), được phân giải liên quan đến gói của mục tiêu được khởi tạo.

Tại thời điểm phân tích, bạn có thể truy xuất File tương ứng bằng cách sử dụng ctx.outputs.

Thông số

Thông số Mô tả
doc string; hoặc None; mặc định là None
Nội dung mô tả về thuộc tính mà các công cụ tạo tài liệu có thể trích xuất.
mandatory bool; mặc định là False
Nếu là true, bạn phải chỉ định giá trị một cách rõ ràng (ngay cả khi giá trị đó có default).

output_list

Attribute attr.output_list(allow_empty=True, *, doc=None, mandatory=False)

Tạo một giản đồ cho thuộc tính danh sách đầu ra.

Thuộc tính này chứa các giá trị riêng biệt của Label. Nếu một chuỗi được cung cấp thay cho Label, thì chuỗi đó sẽ được chuyển đổi bằng hàm khởi tạo nhãn. Các phần tương đối của đường dẫn nhãn, bao gồm cả kho lưu trữ (có thể được đổi tên), được phân giải liên quan đến gói của mục tiêu được khởi tạo.

Tại thời điểm phân tích, bạn có thể truy xuất File tương ứng bằng cách sử dụng ctx.outputs.

Thông số

Thông số Mô tả
allow_empty bool; default is True
True if the attribute can be empty.
doc string; hoặc None; mặc định là None
Nội dung mô tả về thuộc tính mà các công cụ tạo tài liệu có thể trích xuất.
mandatory bool; mặc định là False
Nếu là true, bạn phải chỉ định giá trị một cách rõ ràng (ngay cả khi giá trị đó có default).

chuỗi

Attribute attr.string(configurable=unbound, default='', doc=None, mandatory=False, values=[])

Tạo một giản đồ cho thuộc tính string.

Thông số

Thông số Mô tả
configurable bool; hoặc không liên kết; giá trị mặc định là unbound
Bạn chỉ có thể chỉ định đối số này cho một thuộc tính của macro tượng trưng.

Nếu configurable được đặt rõ ràng thành False, thì thuộc tính macro tượng trưng sẽ không thể định cấu hình – tức là thuộc tính này không thể nhận giá trị select(). Nếu configurable không được liên kết hoặc được đặt rõ ràng thành True, thì bạn có thể định cấu hình thuộc tính và thuộc tính này có thể nhận giá trị select().

Đối với một thuộc tính của quy tắc hoặc khía cạnh, bạn phải để configurable không liên kết. Hầu hết các thuộc tính quy tắc Starlark luôn có thể định cấu hình, ngoại trừ các thuộc tính quy tắc attr.output(), attr.output_list()attr.license(). Các thuộc tính này luôn không thể định cấu hình.

default string; hoặc NativeComputedDefault; mặc định là ''
Giá trị mặc định để sử dụng nếu không có giá trị nào cho thuộc tính này được đưa ra khi khởi tạo quy tắc.
doc string; hoặc None; mặc định là None
Nội dung mô tả về thuộc tính mà các công cụ tạo tài liệu có thể trích xuất.
mandatory bool; mặc định là False
Nếu là true, bạn phải chỉ định giá trị một cách rõ ràng (ngay cả khi giá trị đó có default).
values sequence của strings; giá trị mặc định là []
Danh sách các giá trị được phép cho thuộc tính. Lỗi sẽ xảy ra nếu bạn cung cấp bất kỳ giá trị nào khác.

string_dict

Attribute attr.string_dict(allow_empty=True, *, configurable=unbound, default={}, doc=None, mandatory=False)

Tạo một giản đồ cho một thuộc tính chứa từ điển, trong đó các khoá và giá trị là các chuỗi.

Thông số

Thông số Mô tả
allow_empty bool; default is True
True if the attribute can be empty.
configurable bool; hoặc không liên kết; giá trị mặc định là unbound
Bạn chỉ có thể chỉ định đối số này cho một thuộc tính của macro tượng trưng.

Nếu configurable được đặt rõ ràng thành False, thì thuộc tính macro tượng trưng sẽ không thể định cấu hình – tức là thuộc tính này không thể nhận giá trị select(). Nếu configurable không được liên kết hoặc được đặt rõ ràng thành True, thì bạn có thể định cấu hình thuộc tính và thuộc tính này có thể nhận giá trị select().

Đối với một thuộc tính của quy tắc hoặc khía cạnh, bạn phải để configurable không liên kết. Hầu hết các thuộc tính quy tắc Starlark luôn có thể định cấu hình, ngoại trừ các thuộc tính quy tắc attr.output(), attr.output_list()attr.license(). Các thuộc tính này luôn không thể định cấu hình.

default dict; mặc định là {}
Giá trị mặc định để sử dụng nếu không có giá trị nào cho thuộc tính này khi khởi tạo quy tắc.
doc string; hoặc None; mặc định là None
Nội dung mô tả về thuộc tính mà các công cụ tạo tài liệu có thể trích xuất.
mandatory bool; mặc định là False
Nếu là true, bạn phải chỉ định giá trị một cách rõ ràng (ngay cả khi giá trị đó có default).

string_keyed_label_dict

Attribute attr.string_keyed_label_dict(allow_empty=True, *, configurable=unbound, default={}, doc=None, allow_files=None, allow_rules=None, providers=[], for_dependency_resolution=unbound, flags=[], mandatory=False, cfg=None, aspects=[])

Tạo một giản đồ cho một thuộc tính có giá trị là một từ điển, trong đó các khoá là chuỗi và các giá trị là nhãn. Đây là một thuộc tính phụ thuộc.

Thuộc tính này chứa các giá trị riêng biệt của Label. Nếu một chuỗi được cung cấp thay cho Label, thì chuỗi đó sẽ được chuyển đổi bằng hàm khởi tạo nhãn. Các phần tương đối của đường dẫn nhãn, bao gồm cả kho lưu trữ (có thể được đổi tên), được phân giải liên quan đến gói của mục tiêu được khởi tạo.

Tại thời điểm phân tích (trong hàm triển khai của quy tắc), khi truy xuất giá trị thuộc tính từ ctx.attr, các nhãn sẽ được thay thế bằng Target tương ứng. Điều này cho phép bạn truy cập vào các nhà cung cấp của các phần phụ thuộc của mục tiêu hiện tại.

Thông số

Thông số Mô tả
allow_empty bool; default is True
True if the attribute can be empty.
configurable bool; hoặc không liên kết; giá trị mặc định là unbound
Bạn chỉ có thể chỉ định đối số này cho một thuộc tính của macro tượng trưng.

Nếu configurable được đặt rõ ràng thành False, thì thuộc tính macro tượng trưng sẽ không thể định cấu hình – tức là thuộc tính này không thể nhận giá trị select(). Nếu configurable không được liên kết hoặc được đặt rõ ràng thành True, thì bạn có thể định cấu hình thuộc tính và thuộc tính này có thể nhận giá trị select().

Đối với một thuộc tính của quy tắc hoặc khía cạnh, bạn phải để configurable không liên kết. Hầu hết các thuộc tính quy tắc Starlark luôn có thể định cấu hình, ngoại trừ các thuộc tính quy tắc attr.output(), attr.output_list()attr.license(). Các thuộc tính này luôn không thể định cấu hình.

default dict; hoặc function; giá trị mặc định là {}
Giá trị mặc định sẽ dùng nếu không có giá trị nào cho thuộc tính này khi khởi tạo quy tắc.Sử dụng các chuỗi hoặc hàm Label để chỉ định giá trị mặc định, ví dụ: attr.string_keyed_label_dict(default = {"foo": "//a:b", "bar": "//a:c"}).
doc string; hoặc None; mặc định là None
Nội dung mô tả về thuộc tính mà các công cụ tạo tài liệu có thể trích xuất.
allow_files bool; hoặc sequence của strings; hoặc None; mặc định là None
Có cho phép các mục tiêu File hay không. Có thể là True, False (mặc định) hoặc danh sách các đuôi tệp được phép (ví dụ: [".cc", ".cpp"]).
allow_rules sequence của strings; hoặc None; default is None
Which rule targets (name of the classes) are allowed. Chính sách này không được dùng nữa (chỉ giữ lại để tương thích), hãy sử dụng các nhà cung cấp.
providers sequence; mặc định là []
Các trình cung cấp phải được cung cấp bởi mọi phần phụ thuộc xuất hiện trong thuộc tính này.

Định dạng của đối số này là danh sách các danh sách nhà cung cấp – các đối tượng *Info do provider() trả về (hoặc trong trường hợp nhà cung cấp cũ, tên chuỗi của nhà cung cấp đó). Phần phụ thuộc phải trả về TẤT CẢ các nhà cung cấp được đề cập trong ít nhất MỘT trong các danh sách bên trong. Để thuận tiện, đối số này cũng có thể là danh sách nhà cung cấp một cấp. Trong trường hợp đó, đối số này sẽ được bao bọc trong một danh sách bên ngoài có một phần tử (tức là [A, B] có nghĩa là [[A, B]]). Bạn KHÔNG bắt buộc phải tuân theo quy tắc về việc phần phụ thuộc quảng cáo những nhà cung cấp đó trong tham số provides, tuy nhiên, đây được coi là phương pháp hay nhất.

for_dependency_resolution mặc định là unbound
Nếu bạn đặt thuộc tính này, thì thuộc tính này sẽ có sẵn cho các trình hiện thực hoá. Bạn chỉ được phép tham chiếu các quy tắc được đánh dấu bằng cờ có cùng tên thông qua những thuộc tính như vậy.
flags sequence của strings; giá trị mặc định là []
Không dùng nữa, sẽ bị xoá.
mandatory bool; mặc định là False
Nếu là true, bạn phải chỉ định giá trị một cách rõ ràng (ngay cả khi giá trị đó có default).
cfg mặc định là None
Cấu hình của thuộc tính. Đó có thể là "exec", cho biết phần phụ thuộc được tạo cho execution platform hoặc "target", cho biết phần phụ thuộc được tạo cho target platform. Một ví dụ điển hình về sự khác biệt này là khi tạo ứng dụng di động, trong đó target platformAndroid hoặc iOS, còn execution platformLinux, macOS hoặc Windows.
aspects sequence của Aspects; giá trị mặc định là []
Các khía cạnh cần áp dụng cho (các) phần phụ thuộc do thuộc tính này chỉ định.

string_list

Attribute attr.string_list(mandatory=False, allow_empty=True, *, configurable=unbound, default=[], doc=None)

Tạo một giản đồ cho thuộc tính danh sách chuỗi.

Thông số

Thông số Mô tả
mandatory bool; mặc định là False
Nếu là true, bạn phải chỉ định giá trị một cách rõ ràng (ngay cả khi giá trị đó có default).
allow_empty bool; default is True
True if the attribute can be empty.
configurable bool; hoặc không liên kết; giá trị mặc định là unbound
Bạn chỉ có thể chỉ định đối số này cho một thuộc tính của macro tượng trưng.

Nếu configurable được đặt rõ ràng thành False, thì thuộc tính macro tượng trưng sẽ không thể định cấu hình – tức là thuộc tính này không thể nhận giá trị select(). Nếu configurable không được liên kết hoặc được đặt rõ ràng thành True, thì bạn có thể định cấu hình thuộc tính và thuộc tính này có thể nhận giá trị select().

Đối với một thuộc tính của quy tắc hoặc khía cạnh, bạn phải để configurable không liên kết. Hầu hết các thuộc tính quy tắc Starlark luôn có thể định cấu hình, ngoại trừ các thuộc tính quy tắc attr.output(), attr.output_list()attr.license(). Các thuộc tính này luôn không thể định cấu hình.

default sequence của string; hoặc NativeComputedDefault; mặc định là []
Giá trị mặc định để sử dụng nếu không có giá trị nào cho thuộc tính này khi khởi tạo quy tắc.
doc string; hoặc None; mặc định là None
Nội dung mô tả về thuộc tính mà các công cụ tạo tài liệu có thể trích xuất.

string_list_dict

Attribute attr.string_list_dict(allow_empty=True, *, configurable=unbound, default={}, doc=None, mandatory=False)

Tạo một giản đồ cho một thuộc tính chứa từ điển, trong đó các khoá là chuỗi và các giá trị là danh sách chuỗi.

Thông số

Thông số Mô tả
allow_empty bool; default is True
True if the attribute can be empty.
configurable bool; hoặc không liên kết; giá trị mặc định là unbound
Bạn chỉ có thể chỉ định đối số này cho một thuộc tính của macro tượng trưng.

Nếu configurable được đặt rõ ràng thành False, thì thuộc tính macro tượng trưng sẽ không thể định cấu hình – tức là thuộc tính này không thể nhận giá trị select(). Nếu configurable không được liên kết hoặc được đặt rõ ràng thành True, thì bạn có thể định cấu hình thuộc tính và thuộc tính này có thể nhận giá trị select().

Đối với một thuộc tính của quy tắc hoặc khía cạnh, bạn phải để configurable không liên kết. Hầu hết các thuộc tính quy tắc Starlark luôn có thể định cấu hình, ngoại trừ các thuộc tính quy tắc attr.output(), attr.output_list()attr.license(). Các thuộc tính này luôn không thể định cấu hình.

default dict; mặc định là {}
Giá trị mặc định để sử dụng nếu không có giá trị nào cho thuộc tính này khi khởi tạo quy tắc.
doc string; hoặc None; mặc định là None
Nội dung mô tả về thuộc tính mà các công cụ tạo tài liệu có thể trích xuất.
mandatory bool; mặc định là False
Nếu là true, bạn phải chỉ định giá trị một cách rõ ràng (ngay cả khi giá trị đó có default).