thuộc tính

Báo cáo vấn đề Xem nguồn /3}·21}

Đây là mô-đun cấp cao nhất dùng để xác định giản đồ thuộc tính của một quy tắc hoặc một 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ố trong từ điển attrs của rule()aspect().

Xem trang Quy tắc để tìm hiểu thêm về cách xác địnhsử dụng thuộc tính.

Hội viên

bool

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

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

Tham số

Thông số Nội dung mô tả
default mặc định là 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 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 có thể trích xuất bằng các công cụ tạo tài liệu.
mandatory giá trị mặc định là False
Nếu true, giá trị này phải được chỉ định rõ ràng (ngay cả khi có default).

int

Attribute attr.int(default=0, doc=None, 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. Thuộc tính ctx.attr tương ứng sẽ thuộc loại int.

Tham số

Thông số Nội dung mô tả
default 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 cung cấp 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 có thể trích xuất bằng các công cụ tạo tài liệu.
mandatory giá trị mặc định là False
Nếu true, giá trị này phải được chỉ định rõ ràng (ngay cả khi có default).
values trình tự của int; giá trị mặc định là []
Danh sách các giá trị được phép đối với thuộc tính này. 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=None)

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

Tham số

Thông số Nội dung mô tả
mandatory giá trị mặc định là False
Nếu true, giá trị này phải được chỉ định rõ ràng (ngay cả khi có default).
allow_empty giá trị mặc định là True
Đúng nếu thuộc tính có thể để trống.
default trình tự của int; mặc định là []
Một 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ể cho quy tắc.
doc string; hoặc None; mặc định là None
Nội dung mô tả về thuộc tính có thể trích xuất bằng các công cụ tạo tài liệu.

nhãn

Attribute attr.label(default=None, doc=None, 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 duy nhấ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 tương ứng với gói của mục tiêu đã tạo thực thể.

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. Nhờ vậy, bạn có thể truy cập vào các trình cung cấp 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, cũng giống như các tệp nguồn. Để tránh việc 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ã hóa cố định 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 riêng tư bằng cách đặt tên cho thuộc tính bắt đầu bằng dấu gạch dưới. Xem trang Quy tắc để biết thêm thông tin.

Tham số

Thông số Nội dung mô tả
default Label; hoặc string; hoặc LateBoundDefault; hoặc NativeComputedDefault; hoặc hàm; hoặc None; mặc định là None
Một 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ể cho 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").
doc string; hoặc None; mặc định là None
Nội dung mô tả về thuộc tính có thể trích xuất bằng các công cụ tạo tài liệu.
executable giá trị mặc định là 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 tệp thực thi hoặc quy tắc xuất ra tệp thực thi. Truy cập vào nhãn bằng ctx.executable.<attribute_name>.
allow_files bool; hoặc trình tự của chuỗi; hoặc None; mặc định là None
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 một danh sách đuôi tệp được phép (ví dụ: [".cc", ".cpp"]).
allow_single_file giá trị mặc định là None
Điều 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 giá trị mặc định là False
Nếu true, giá trị này phải được chỉ định rõ ràng (ngay cả khi có default).
providers mặc định là []
Các trình cung cấp phải được cung cấp qua 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Ả trình cung cấp được đề cập trong ít nhất ONE 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 các trình cung cấp một cấp. Trong trường hợp đó, đối số này được bao bọc trong một danh sách ngoài có một phần tử. Bạn KHÔNG bắt buộc phải quy tắc của phần phụ thuộc quảng cáo các trình cung cấp đó trong tham số provides. Tuy nhiên, đây được coi là phương pháp hay nhất.

allow_rules trình tự của chuỗi; hoặc None; mặc định là None
Những mục tiêu quy tắc nào (tên lớp) được cho 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 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 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 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. Tham số này là bắt buộc nếu executable là True để đề phòng việc vô tình tạo các công cụ của máy chủ lưu trữ trong cấu hình đích. "target" không có hiệu ứng ngữ nghĩa, vì vậy, đừng đặt thuộc tính này khi executable là False trừ phi thao tác này thực sự giúp làm rõ ý định của bạn.
aspects Trình tự của Khung hình; mặc định là []
Các khía cạnh cần áp dụng cho phần phụ thuộc hoặ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=None, 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 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 tương ứng với gói của mục tiêu đã tạo thực thể.

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. Nhờ vậy, bạn có thể truy cập vào các trình cung cấp các phần phụ thuộc của mục tiêu hiện tại.

Tham số

Thông số Nội dung mô tả
allow_empty giá trị mặc định là True
Đúng nếu thuộc tính có thể để trống.
default dict; hoặc function; mặc định là {}
Một 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ể cho quy tắc.Sử dụng chuỗi hoặc hàm Label để chỉ định giá trị mặc định, chẳng hạn như 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 có thể trích xuất bằng các công cụ tạo tài liệu.
allow_files bool; hoặc trình tự của chuỗi; hoặc None; mặc định là None
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 một danh sách đuôi tệp được phép (ví dụ: [".cc", ".cpp"]).
allow_rules trình tự của chuỗi; hoặc None; mặc định là None
Những mục tiêu quy tắc nào (tên lớp) được cho 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 là []
Các trình cung cấp phải được cung cấp qua 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Ả trình cung cấp được đề cập trong ít nhất ONE 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 các trình cung cấp một cấp. Trong trường hợp đó, đối số này được bao bọc trong một danh sách ngoài có một phần tử. Bạn KHÔNG bắt buộc phải quy tắc của phần phụ thuộc quảng cáo các trình cung cấp đó trong tham số provides. Tuy nhiên, đây được coi là phương pháp hay nhất.

flags trình tự của chuỗi; giá trị mặc định là []
Không dùng nữa và sẽ bị xoá.
mandatory giá trị mặc định là False
Nếu true, giá trị này phải được chỉ định rõ ràng (ngay cả khi 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 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 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 Trình tự của Khung hình; mặc định là []
Các khía cạnh cần áp dụng cho phần phụ thuộc hoặc phần phụ thuộc do thuộc tính này chỉ định.

label_list

Attribute attr.label_list(allow_empty=True, *, default=[], doc=None, 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 ctx.attr tương ứng sẽ thuộc loại danh sách Target.

Thuộc tính này chứa các giá trị Label duy nhấ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 tương ứng với gói của mục tiêu đã tạo thực thể.

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. Nhờ vậy, bạn có thể truy cập vào các trình cung cấp các phần phụ thuộc của mục tiêu hiện tại.

Tham số

Thông số Nội dung mô tả
allow_empty giá trị mặc định là True
Đúng nếu thuộc tính có thể để trống.
default trình tự của Nhãn; hoặc hàm; mặc định là []
Một 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ể cho 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 string; hoặc None; mặc định là None
Nội dung mô tả về thuộc tính có thể trích xuất bằng các công cụ tạo tài liệu.
allow_files bool; hoặc trình tự của chuỗi; hoặc None; mặc định là None
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 một danh sách đuôi tệp được phép (ví dụ: [".cc", ".cpp"]).
allow_rules trình tự của chuỗi; hoặc None; mặc định là None
Những mục tiêu quy tắc nào (tên lớp) được cho 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 là []
Các trình cung cấp phải được cung cấp qua 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Ả trình cung cấp được đề cập trong ít nhất ONE 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 các trình cung cấp một cấp. Trong trường hợp đó, đối số này được bao bọc trong một danh sách ngoài có một phần tử. Bạn KHÔNG bắt buộc phải quy tắc của phần phụ thuộc quảng cáo các trình cung cấp đó trong tham số provides. Tuy nhiên, đây được coi là phương pháp hay nhất.

flags trình tự của chuỗi; giá trị mặc định là []
Không dùng nữa và sẽ bị xoá.
mandatory giá trị mặc định là False
Nếu true, giá trị này phải được chỉ định rõ ràng (ngay cả khi 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 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 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 Trình tự của Khung hình; mặc định là []
Các khía cạnh cần áp dụng cho phần phụ thuộc hoặ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 giản đồ cho thuộc tính đầu ra (nhãn).

Thuộc tính này chứa các giá trị Label duy nhấ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 tương ứng với gói của mục tiêu đã tạo thực thể.

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.

Tham số

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

output_list

Attribute attr.output_list(allow_empty=True, *, doc=None, 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 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 tương ứng với gói của mục tiêu đã tạo thực thể.

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.

Tham số

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

string

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

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

Tham số

Thông số Nội dung mô tả
default string; hoặc NativeComputedDefault; mặc định là ''
Một 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ể cho quy tắc.
doc string; hoặc None; mặc định là None
Nội dung mô tả về thuộc tính có thể trích xuất bằng các công cụ tạo tài liệu.
mandatory giá trị mặc định là False
Nếu true, giá trị này phải được chỉ định rõ ràng (ngay cả khi có default).
values trình tự của chuỗi; mặc định là []
Danh sách các giá trị được phép đối với 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=None, 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.

Tham số

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

string_list

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

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

Tham số

Thông số Nội dung mô tả
mandatory giá trị mặc định là False
Nếu true, giá trị này phải được chỉ định rõ ràng (ngay cả khi có default).
allow_empty giá trị mặc định là True
Đúng nếu thuộc tính có thể để trống.
default trình tự của chuỗi; hoặc NativeComputedDefault; mặc định là []
Một 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ể cho quy tắc.
doc string; hoặc None; mặc định là None
Nội dung mô tả về thuộc tính có thể trích xuất bằng các công cụ tạo tài liệu.

string_list_dict

Attribute attr.string_list_dict(allow_empty=True, *, default={}, doc=None, 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.

Tham số

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