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ố từ điển attrs của rule()aspect().

Xem trang Quy tắc để biết thêm thông tin về việc xác địnhsử dụng các thuộc tính.

Hội viên

bool

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

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

Các tham số

Thông số Nội dung mô tả
default mặc định = Sai
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 default = ''
Nội dung mô tả về thuộc tính có thể trích xuất được bằng công cụ tạo tài liệu.
mandatory mặc định = Sai
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 đã ký.

Các tham số

Thông số Nội dung mô tả
default default = 0
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 default = ''
Nội dung mô tả về thuộc tính có thể trích xuất được bằng công cụ tạo tài liệu.
mandatory mặc định = Sai
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; mặc định = []
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='')

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 dải ô 32 bit đã ký.

Các tham số

Thông số Nội dung mô tả
mandatory mặc định = Sai
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 mặc định = Đúng
Đúng nếu thuộc tính có thể trống.
default sequence of ints; mặc định = []
Một giá trị mặc định để sử dụng nếu không cung cấp giá trị nào cho thuộc tính này khi tạo thực thể cho quy tắc.
doc default = ''
Nội dung mô tả về thuộc tính có thể trích xuất được bằng công cụ tạo tài liệu.

label

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 duy nhất. Nếu một chuỗi được cung cấp thay cho Label, chuỗi này 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ể đã đổi tên), đều được giải quyết theo gói của mục tiêu 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 các Target tương ứng. Thao tác này cho phép bạn 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ụ – ví dụ: 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ư 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ã hóa cứng nhãn của 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 này ở 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.

Các tham số

Thông số Nội dung mô tả
default Label; or string; or LateBoundDefault; or NativeComputedDefault; or function; or None; mặc định = Không có
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.Hãy sử dụng chuỗi hoặc hàm Label để chỉ định giá trị mặc định, ví dụ như attr.label(default = "//a:b").
doc default = ''
Nội dung mô tả về thuộc tính có thể trích xuất được bằng công cụ tạo tài liệu.
executable default = 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 cho ra 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 cho phép hay không. Có thể là True, False (mặc định) hoặc danh sách đuôi tệp được phép (ví dụ: [".cc", ".cpp"]).
allow_single_file mặc định = Không có
Thuộc tính này tương tự như allow_files, với quy tắc hạn chế là nhãn phải tương ứng với một Tệp. Bạn có thể truy cập vào gói này thông qua ctx.file.<attribute_name>.
mandatory mặc định = Sai
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 default = []
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 danh sách các trình cung cấp – các đối tượng *Info được provider() trả về (hoặc trong trường hợp nhà cung cấp cũ thì là tên chuỗi của nhà cung cấp đó). Phần phụ thuộc phải trả về TẤT CẢ nhà cung cấp được đề cập trong ít nhất 1 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 trình cung cấp một cấp. Trong trường hợp đó, đối số này được gói trong 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
Những mục tiêu quy tắc (tên của 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 trình cung cấp.
cfg mặc định = Không có
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. 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 còn execution platformLinux, macOS hoặc Windows. Bạn phải sử dụng tham số này nếu giá trị executable là True để đề phòng việc vô tình tạo công cụ lưu trữ trong cấu hình mục tiêu. "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 điều 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 sẽ được á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='', 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, chuỗi này 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ể đã đổi tên), đều được giải quyết theo gói của mục tiêu 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 các Target tương ứng. Thao tác này cho phép bạn 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.

Các tham số

Thông số Nội dung mô tả
allow_empty mặc định = Đúng
Đúng nếu thuộc tính có thể trống.
default dict; or function; 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 thực thể cho quy tắc.Hãy 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 default = ''
Nội dung mô tả về thuộc tính có thể trích xuất được bằng công cụ tạo tài liệu.
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 cho phép hay không. Có thể là True, False (mặc định) hoặc 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
Những mục tiêu quy tắc (tên của 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 trình cung cấp.
providers default = []
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 danh sách các trình cung cấp – các đối tượng *Info được provider() trả về (hoặc trong trường hợp nhà cung cấp cũ thì là tên chuỗi của nhà cung cấp đó). Phần phụ thuộc phải trả về TẤT CẢ nhà cung cấp được đề cập trong ít nhất 1 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 trình cung cấp một cấp. Trong trường hợp đó, đối số này được gói trong danh sách bên ngoài có một phần tử.

flags sequence of strings; mặc định = []
Không dùng nữa, sẽ bị xoá.
mandatory mặc định = Sai
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. Đó 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. 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 còn execution platformLinux, macOS hoặc Windows.
aspects sequence of Aspects; mặc định = []
Các khía cạnh sẽ được á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='', 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 duy nhất. Nếu một chuỗi được cung cấp thay cho Label, chuỗi này 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ể đã đổi tên), đều được giải quyết theo gói của mục tiêu 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 các Target tương ứng. Thao tác này cho phép bạn 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.

Các tham số

Thông số Nội dung mô tả
allow_empty mặc định = Đúng
Đúng nếu thuộc tính có thể trống.
default sequence of Labels; or function; mặc định = []
Giá trị mặc định cần 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ể cho quy tắc.Hãy sử dụng chuỗi hoặc hàm Label để chỉ định giá trị mặc định, chẳng hạn như attr.label_list(default = ["//a:b", "//a:c"]).
doc default = ''
Nội dung mô tả về thuộc tính có thể trích xuất được bằng công cụ tạo tài liệu.
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 cho phép hay không. Có thể là True, False (mặc định) hoặc 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
Những mục tiêu quy tắc (tên của 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 trình cung cấp.
providers default = []
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 danh sách các trình cung cấp – các đối tượng *Info được provider() trả về (hoặc trong trường hợp nhà cung cấp cũ thì là tên chuỗi của nhà cung cấp đó). Phần phụ thuộc phải trả về TẤT CẢ nhà cung cấp được đề cập trong ít nhất 1 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 trình cung cấp một cấp. Trong trường hợp đó, đối số này được gói trong danh sách bên ngoài có một phần tử.

flags sequence of strings; mặc định = []
Không dùng nữa, sẽ bị xoá.
mandatory mặc định = Sai
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. Đó 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. 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 còn execution platformLinux, macOS hoặc Windows.
aspects sequence of Aspects; mặc định = []
Các khía cạnh sẽ được á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='', mandatory=False)

Tạo giản đồ cho thuộc tính (nhãn) đầ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, chuỗi này 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ể đã đổi tên), đều được giải quyết theo gói của mục tiêu 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 ctx.outputs.

Các tham số

Thông số Nội dung mô tả
doc default = ''
Nội dung mô tả về thuộc tính có thể trích xuất được bằng công cụ tạo tài liệu.
mandatory mặc định = Sai
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).

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 một chuỗi được cung cấp thay cho Label, chuỗi này 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ể đã đổi tên), đều được giải quyết theo gói của mục tiêu 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 ctx.outputs.

Các tham số

Thông số Nội dung mô tả
allow_empty mặc định = Đúng
Đúng nếu thuộc tính có thể trống.
doc default = ''
Nội dung mô tả về thuộc tính có thể trích xuất được bằng công cụ tạo tài liệu.
mandatory mặc định = Sai
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

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

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

Các tham số

Thông số Nội dung mô tả
default string; or NativeComputedDefault; mặc định = ''
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 default = ''
Nội dung mô tả về thuộc tính có thể trích xuất được bằng công cụ tạo tài liệu.
mandatory mặc định = Sai
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 strings; mặc định = []
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.

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à các chuỗi.

Các tham số

Thông số Nội dung mô tả
allow_empty mặc định = Đúng
Đúng nếu thuộc tính có thể trống.
default default = {}
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 default = ''
Nội dung mô tả về thuộc tính có thể trích xuất được bằng công cụ tạo tài liệu.
mandatory mặc định = Sai
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.

Các tham số

Thông số Nội dung mô tả
mandatory mặc định = Sai
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 mặc định = Đúng
Đúng nếu thuộc tính có thể trống.
default sequence of strings; or NativeComputedDefault; mặc định = []
Một giá trị mặc định để sử dụng nếu không cung cấp giá trị nào cho thuộc tính này khi tạo thực thể cho quy tắc.
doc default = ''
Nội dung mô tả về thuộc tính có thể trích xuất được bằng công cụ tạo tài liệu.

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 còn giá trị là danh sách chuỗi.

Các tham số

Thông số Nội dung mô tả
allow_empty mặc định = Đúng
Đúng nếu thuộc tính có thể trống.
default default = {}
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 default = ''
Nội dung mô tả về thuộc tính có thể trích xuất được bằng công cụ tạo tài liệu.
mandatory mặc định = Sai
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).