thuộc tính

Đây là mô-đun cấp cao nhất để xác định 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. Các đối tượng này được dùng làm giá trị của đối số trong từ điển attrs của rule()aspect().

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

Hội viên

bool

Attribute attr.bool(default=False, doc='', mandatory=False)

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

Thông số

Thông số Mô tả
default default = 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 cung cấp khi tạo bản sao của quy tắc.
doc mặc định = ''
Nội dung mô tả về thuộc tính có thể được trích xuất bằng các công cụ tạo tài liệu.
mandatory mặc định = False
Nếu đúng, 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(default=0, doc='', mandatory=False, values=[])

Tạo giản đồ cho một thuộc tính số nguyên. Giá trị phải nằm trong dải ô 32 bit có dấu.

Thông số

Thông số Mô tả
default mặc định = 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 cung cấp khi tạo thực thể quy tắc.
doc default = "'
Nội dung mô tả thuộc tính mà các công cụ tạo tài liệu có thể trích xuất.
mandatory mặc định = False
Nếu đúng, bạn phải chỉ định giá trị một cách rõ ràng (ngay cả khi giá trị đó có default).
values sequence of ints; default = []
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, *, default=[], doc='')

Tạo 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 đã ký.

Thông số

Thông số Mô tả
mandatory mặc định = False
Nếu đúng, bạn phải chỉ định giá trị một cách rõ ràng (ngay cả khi giá trị đó có default).
allow_empty default = True
Đúng nếu thuộc tính có thể để trống.
default sequence of ints; default = []
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 cung cấp khi tạo bản sao của quy tắc.
doc default = "'
Nội dung mô tả 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(default=None, doc='', executable=False, allow_files=None, allow_single_file=None, mandatory=False, providers=[], allow_rules=None, cfg=None, aspects=[])

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

Thuộc tính này chứa các giá trị Label riêng biệt. Nếu bạn cung cấp một chuỗi thay vì Label, 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 tạo bản sao.

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. Nhờ vậy, bạn có thể truy cập vào các trình cung cấp 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. Các công cụ như vậy được coi là phần phụ thuộc, giống như 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 hoá dưới dạng 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 tên bắt đầu bằng dấu gạch dưới. Xem trang Quy tắc để biết thêm thông tin.

Thông số

Thông số Mô tả
default Label; or string; or LateBoundDefault; or NativeComputedDefault; or function; or None; default = 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 được cung cấp khi tạo bản sao của quy tắc.Sử dụng một chuỗi hoặc hàm Label để chỉ định giá trị mặc định, ví dụ: attr.label(default = "//a:b").
doc default = "'
Nội dung mô tả thuộc tính mà các công cụ tạo tài liệu có thể trích xuất.
executable mặc định = False
True nếu phần phụ thuộc phải có thể thực thi. Đ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 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; or sequence of strings; or None; mặc định = Không
Liệu các mục tiêu File có được phép 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 = Không có
Phương thức này tương tự như allow_files, nhưng có quy định hạn chế là nhãn phải tương ứng với một Tệp. Truy cập thông qua ctx.file.<attribute_name>.
mandatory mặc định = False
Nếu đúng, bạn phải chỉ định giá trị một cách rõ ràng (ngay cả khi giá trị đó có default).
providers mặc định = []
Nhà cung cấp phải được cung cấp bởi bất kỳ phần phụ thuộc nào 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 – đối tượng *Info do provider() trả về (hoặc trong trường hợp của 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 danh sách bên trong. Để thuận tiện, đối số này cũng có thể là danh sách một cấp của các nhà cung cấp, trong trường hợp này, đối số này được gói trong một danh sách bên ngoài có một phần tử.

allow_rules sequence of strings; or None; mặc định = Không
Mục tiêu quy tắc (tên của các lớp) được phép. Tính năng này không còn được dùng nữa (chỉ giữ lại để đảm bảo khả năng tương thích), thay vào đó, hãy sử dụng nhà cung cấp.
cfg default = None
Cấu hình của thuộc tính. Đó có thể là "exec" (cho biết phần phụ thuộc này được tạo cho execution platform) hoặc "target" (cho biết phần phụ thuộc này được tạo cho target platform). Một ví dụ điển hình về sự khác biệt là khi tạo ứng dụng di động, trong đó target platformAndroid hoặc iOS trong khi 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 lực ngữ nghĩa, vì vậy, đừng đặt thuộc tính này khi executable là False, trừ phi thuộc tính này thực sự giúp làm rõ ý định của bạn.
aspects sequence of Aspects; mặc định = []
Các khía cạnh cần áp dụng cho phần phụ thuộc hoặc các phần phụ thuộc do thuộc tính này chỉ định.

label_keyed_string_dict

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

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

Thuộc tính này chứa các giá trị Label duy nhất. Nếu bạn cung cấp một chuỗi thay vì Label, 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 tạo bản sao.

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, nhãn sẽ được thay thế bằng các 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 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 default = True
Đúng nếu thuộc tính có thể để trống.
default dict; or function; default = {}
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 cung cấp khi tạo bản sao của quy tắc.Sử dụng 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 default = "'
Nội dung mô tả 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; or sequence of strings; or None; mặc định = Không có
Liệu các mục tiêu File có được cho phép 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 of strings; or None; mặc định = Không có
Mục tiêu quy tắc (tên của các lớp) được phép. Tính năng này không còn được dùng nữa (chỉ giữ lại để đảm bảo khả năng tương thích), thay vào đó, hãy sử dụng nhà cung cấp.
providers mặc định = []
Các nhà cung cấp phải được cung cấp bởi bất kỳ phần phụ thuộc nào xuất hiện trong thuộc tính này.

Định dạng của đối số này là danh sách danh sách trình cung cấp – các đối tượng *Info do provider() trả về (hoặc tên chuỗi của trình cung cấp trong trường hợp nhà cung cấp cũ). 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 danh sách bên trong. Để thuận tiện, đối số này cũng có thể là danh sách một cấp của các nhà cung cấp, trong trường hợp này, đối số này được gói trong một danh sách bên ngoài có một phần tử.

flags sequence of strings; default = []
Không dùng nữa, sẽ bị xoá.
mandatory mặc định = False
Nếu đúng, bạn phải chỉ định giá trị một cách rõ ràng (ngay cả khi giá trị đó có default).
cfg default = None
Cấu hình của thuộc tính. Giá trị này 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 là khi tạo ứng dụng di động, trong đó target platformAndroid hoặc iOS trong khi execution platformLinux, macOS hoặc Windows.
aspects sequence of Aspects; mặc định = []
Các khía cạnh cần áp dụng cho phần phụ thuộc hoặc các phần phụ thuộc do thuộc tính này chỉ định.

danh_sách_nhãn

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

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

Thuộc tính này chứa các giá trị Label riêng biệt. Nếu bạn cung cấp một chuỗi thay vì Label, 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 tạo bản sao.

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 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 default = True
Đúng nếu thuộc tính có thể để trống.
default sequence of Labels; or function; default = []
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 cung cấp khi tạo bản sao của quy tắc.Sử dụng chuỗi hoặc hàm Label để chỉ định giá trị mặc định, ví dụ: attr.label_list(default = ["//a:b", "//a:c"]).
doc default = "'
Nội dung mô tả 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; or sequence of strings; or None; mặc định = Không
Liệu các mục tiêu File có được phép hay không. Có thể là True, False (mặc định) hoặc một danh sách đuôi tệp được phép (ví dụ: [".cc", ".cpp"]).
allow_rules sequence of strings; or None; mặc định = Không có
Mục tiêu quy tắc (tên của các lớp) được phép. Tính năng này không còn được dùng nữa (chỉ giữ lại để đảm bảo khả năng tương thích), thay vào đó, hãy sử dụng nhà cung cấp.
providers mặc định = []
Các nhà cung cấp phải được cung cấp bởi bất kỳ phần phụ thuộc nào 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 – đối tượng *Info do provider() trả về (hoặc trong trường hợp của 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 danh sách bên trong. Để thuận tiện, đối số này cũng có thể là danh sách một cấp của các nhà cung cấp, trong trường hợp này, đối số này được gói trong một danh sách bên ngoài có một phần tử.

flags sequence of strings; default = []
Không dùng nữa, sẽ bị xoá.
mandatory mặc định = False
Nếu đúng, 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 = Không có
Cấu hình của thuộc tính. Giá trị này 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 trong khi execution platformLinux, macOS hoặc Windows.
aspects sequence of Aspects; mặc định = []
Các khía cạnh cần áp dụng cho phần phụ thuộc hoặc các phần phụ thuộc do thuộc tính này chỉ định.

output

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

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

Thuộc tính này chứa các giá trị Label riêng biệt. 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 tạo bản sao.

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

Thông số

Thông số Mô tả
doc default = "'
Nội dung mô tả thuộc tính mà các công cụ tạo tài liệu có thể trích xuất.
mandatory mặc định = False
Nếu đúng, giá trị phải được chỉ định rõ ràng (ngay cả khi có default).

output_list

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

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

Thuộc tính này chứa các giá trị Label duy nhất. Nếu bạn cung cấp một chuỗi thay vì Label, 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 tạo bản sao.

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

Thông số

Thông số Mô tả
allow_empty default = True
Đúng nếu thuộc tính có thể để trống.
doc default = "'
Nội dung mô tả thuộc tính mà các công cụ tạo tài liệu có thể trích xuất.
mandatory mặc định = False
Nếu đúng, 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(default='', doc='', mandatory=False, values=[])

Tạo giản đồ cho thuộc tính chuỗi.

Thông số

Thông số Mô tả
default string; or NativeComputedDefault; default = ''
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 cung cấp khi tạo bản sao của quy tắc.
doc mặc định = ''
Nội dung mô tả về thuộc tính có thể được trích xuất bằng các công cụ tạo tài liệu.
mandatory mặc định = False
Nếu đúng, giá trị phải được chỉ định rõ ràng (ngay cả khi có default).
values sequence of strings; default = []
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, *, default={}, doc='', mandatory=False)

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

Thông số

Thông số Mô tả
allow_empty mặc định = True
Đúng nếu thuộc tính có thể trống.
default mặc định = {}
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 cung cấp khi tạo bản sao của quy tắc.
doc mặc định = ''
Nội dung mô tả về thuộc tính có thể được trích xuất bằng các công cụ tạo tài liệu.
mandatory mặc định = False
Nếu đúng, bạn phải chỉ định giá trị một cách rõ ràng (ngay cả khi giá trị đó có default).

string_list

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

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

Thông số

Thông số Mô tả
mandatory mặc định = False
Nếu đúng, bạn phải chỉ định giá trị một cách rõ ràng (ngay cả khi giá trị đó có default).
allow_empty default = True
Đúng nếu thuộc tính có thể để trống.
default sequence of strings; or NativeComputedDefault; default = []
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 cung cấp khi tạo bản sao của quy tắc.
doc default = "'
Nội dung mô tả 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, *, default={}, doc='', mandatory=False)

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

Thông số

Thông số Mô tả
allow_empty mặc định = True
Đúng nếu thuộc tính có thể trống.
default mặc định = {}
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 cung cấp khi tạo bản sao của quy tắc.
doc mặc định = ''
Nội dung mô tả về thuộc tính có thể được trích xuất bằng các công cụ tạo tài liệu.
mandatory mặc định = False
Nếu đúng, giá trị phải được chỉ định rõ ràng (ngay cả khi có default).