BazelCon 2022 16-17 নভেম্বর নিউ ইয়র্ক এবং অনলাইনে আসছে।
নিবন্ধন আজ!

গ্লোবালস

সেভ করা পৃষ্ঠা গুছিয়ে রাখতে 'সংগ্রহ' ব্যবহার করুন আপনার পছন্দ অনুযায়ী কন্টেন্ট সেভ করুন ও সঠিক বিভাগে রাখুন।
বৈশ্বিক পরিবেশে নিবন্ধিত বস্তু, ফাংশন এবং মডিউল।

সদস্যরা

সব

bool all(elements)

সমস্ত উপাদান সত্যে মূল্যায়ন করলে বা সংগ্রহটি খালি হলে সত্য ফেরত দেয়। বুল ফাংশন ব্যবহার করে উপাদানগুলিকে বুলিয়ানে রূপান্তর করা হয়।
all(["hello", 3, True]) == True
all([-1, 0, 1]) == False

পরামিতি

প্যারামিটার বর্ণনা
elements প্রয়োজনীয়
একটি স্ট্রিং বা উপাদানের একটি সংগ্রহ।

বিশ্লেষণ_পরীক্ষা

None analysis_test(name, implementation, attrs=None, fragments=[], toolchains=[], attr_values={})

পরীক্ষামূলক । এই API পরীক্ষামূলক এবং যে কোনো সময় পরিবর্তন হতে পারে। দয়া করে এর উপর নির্ভর করবেন না। এটি --+experimental_analysis_test_call সেট করে পরীক্ষামূলক ভিত্তিতে সক্ষম করা যেতে পারে
একটি নতুন বিশ্লেষণ পরীক্ষার লক্ষ্য তৈরি করে।

পরীক্ষার ট্রানজিটিভ নির্ভরতার সংখ্যা সীমিত। সীমাটি --analysis_testing_deps_limit পতাকা দ্বারা নিয়ন্ত্রিত হয়।

পরামিতি

প্যারামিটার বর্ণনা
name প্রয়োজনীয়
লক্ষ্যের নাম। এটি একটি স্টারলার্ক শনাক্তকারী হওয়া উচিত, মিলিত প্যাটার্ন '[A-Za-z_][A-Za-z0-9_]*'।
implementation প্রয়োজনীয়
স্টারলার্ক ফাংশন এই বিশ্লেষণ পরীক্ষা বাস্তবায়ন করে। এটিতে অবশ্যই একটি প্যারামিটার থাকতে হবে: ctx । বিশ্লেষণ পর্যায়ে ফাংশন বলা হয়. এটি attrs দ্বারা ঘোষিত বৈশিষ্ট্যগুলি অ্যাক্সেস করতে পারে এবং attr_values মাধ্যমে জনবহুল। বাস্তবায়ন ফাংশন কর্ম নিবন্ধন নাও হতে পারে. পরিবর্তে, এটি AnalysisTestResultInfo প্রদানের মাধ্যমে একটি পাস/ফেল ফলাফল নিবন্ধন করতে হবে।
attrs dict ; or None ; ডিফল্ট = কোনোটিই নয়
গুণাবলী ঘোষণা অভিধান. নিয়ম কল দেখুন। অ্যাট্রিবিউটগুলিকে বিশ্লেষণ_ test_transition ব্যবহার করে সংজ্ঞায়িত কনফিগারেশন ট্রানজিশন ব্যবহার করার অনুমতি দেওয়া হয়েছে।
fragments sequence of string s ; ডিফল্ট = []
বিশ্লেষণ পরীক্ষা বাস্তবায়নের জন্য উপলব্ধ কনফিগারেশন খণ্ডের তালিকা।
toolchains sequence ; ডিফল্ট = []
পরীক্ষার জন্য প্রয়োজনীয় টুলচেইনের সেট। নিয়ম কল দেখুন.
attr_values dict of string s ; ডিফল্ট = {}
অ্যাট্রিবিউট মানের অভিধান বাস্তবায়নে পাস করার জন্য।

বিশ্লেষণ_পরীক্ষা_পরিবর্তন

transition analysis_test_transition(settings)

বিশ্লেষণ-পরীক্ষার নিয়মের নির্ভরতার উপর প্রয়োগ করার জন্য একটি কনফিগারেশন ট্রানজিশন তৈরি করে। এই রূপান্তরটি শুধুমাত্র analysis_test = True সহ নিয়মের বৈশিষ্ট্যগুলিতে প্রয়োগ করা যেতে পারে। এই ধরনের নিয়মগুলি ক্ষমতায় সীমাবদ্ধ (উদাহরণস্বরূপ, তাদের নির্ভরতা গাছের আকার সীমিত), তাই এই ফাংশনটি ব্যবহার করে তৈরি করা রূপান্তরগুলি ট্রানজিশন ব্যবহার করে তৈরি করা পরিবর্তনের তুলনায় সম্ভাব্য সুযোগে সীমিত।

এই ফাংশনটি প্রাথমিকভাবে বিশ্লেষণ টেস্ট ফ্রেমওয়ার্ক কোর লাইব্রেরির সুবিধার্থে ডিজাইন করা হয়েছে। সেরা অনুশীলনের জন্য এর ডকুমেন্টেশন (বা এর বাস্তবায়ন) দেখুন।

পরামিতি

প্যারামিটার বর্ণনা
settings প্রয়োজনীয়
কনফিগারেশন সেটিংস সম্পর্কে তথ্য ধারণকারী একটি অভিধান যা এই কনফিগারেশন ট্রানজিশন দ্বারা সেট করা উচিত। কীগুলি হল বিল্ড সেটিং লেবেল এবং মানগুলি হল তাদের নতুন উত্তর-পরবর্তী মান৷ অন্যান্য সমস্ত সেটিংস অপরিবর্তিত। নির্দিষ্ট কনফিগারেশন সেটিংস ঘোষণা করতে এটি ব্যবহার করুন যা একটি বিশ্লেষণ পরীক্ষা পাস করার জন্য সেট করা প্রয়োজন।

যেকোনো

bool any(elements)

কমপক্ষে একটি উপাদান সত্যে মূল্যায়ন করলে সত্য ফেরত দেয়। বুল ফাংশন ব্যবহার করে উপাদানগুলিকে বুলিয়ানে রূপান্তর করা হয়।
any([-1, 0, 1]) == True
any([False, 0, ""]) == False

পরামিতি

প্যারামিটার বর্ণনা
elements প্রয়োজনীয়
একটি স্ট্রিং বা উপাদানের একটি সংগ্রহ।

সংরক্ষণাগার_ওভাররাইড

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

নির্দিষ্ট করে যে এই নির্ভরতা একটি রেজিস্ট্রি থেকে পরিবর্তে একটি নির্দিষ্ট স্থানে একটি সংরক্ষণাগার ফাইল (zip, gzip, ইত্যাদি) থেকে আসা উচিত৷ এই নির্দেশিকা শুধুমাত্র রুট মডিউল দ্বারা ব্যবহার করা যেতে পারে; অন্য কথায়, যদি একটি মডিউল কোনো ওভাররাইড নির্দিষ্ট করে, তবে এটি অন্যদের দ্বারা নির্ভরতা হিসাবে ব্যবহার করা যাবে না।

পরামিতি

প্যারামিটার বর্ণনা
module_name প্রয়োজনীয়
এই ওভাররাইড প্রয়োগ করার জন্য Bazel মডিউল নির্ভরতার নাম।
urls string ; or Iterable of string s ; প্রয়োজনীয়
সংরক্ষণাগারের URL; http(s):// অথবা file:// URL হতে পারে।
integrity ডিফল্ট = ''
আর্কাইভ ফাইলের প্রত্যাশিত চেকসাম, Subresource Integrity ফরম্যাটে।
strip_prefix ডিফল্ট = ''
নিষ্কাশিত ফাইলগুলি থেকে ছিন্ন করার জন্য একটি ডিরেক্টরি উপসর্গ।
patches Iterable of string s ; ডিফল্ট = []
এই মডিউলের জন্য আবেদন করার জন্য প্যাচ ফাইলের দিকে নির্দেশ করে লেবেলের একটি তালিকা। প্যাচ ফাইলগুলি অবশ্যই শীর্ষ স্তরের প্রকল্পের উত্স গাছে বিদ্যমান থাকতে হবে। তারা তালিকা ক্রম প্রয়োগ করা হয়.
patch_strip ডিফল্ট = 0
ইউনিক্স প্যাচের --স্ট্রিপ আর্গুমেন্টের মতোই।

দৃষ্টিভঙ্গি

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 প্রয়োজনীয়
একটি স্টারলার্ক ফাংশন যা এই দিকটি প্রয়োগ করে, ঠিক দুটি পরামিতি সহ: টার্গেট (লক্ষ্যটি যেখানে দিকটি প্রয়োগ করা হয়) এবং ctx (নিয়ম প্রসঙ্গ যা থেকে লক্ষ্যটি তৈরি করা হয়েছে)। লক্ষ্যের বৈশিষ্ট্যগুলি ctx.rule ক্ষেত্রের মাধ্যমে উপলব্ধ। এই ফাংশন একটি লক্ষ্য একটি দিক প্রতিটি প্রয়োগের জন্য বিশ্লেষণ পর্যায়ে মূল্যায়ন করা হয়.
attr_aspects sequence of string s ; ডিফল্ট = []
বৈশিষ্ট্যের নামের তালিকা। দিকটি এই নামগুলির সাথে একটি লক্ষ্যের বৈশিষ্ট্যগুলিতে নির্দিষ্ট নির্ভরতা বরাবর প্রচার করে। এখানে সাধারণ মানগুলির মধ্যে রয়েছে deps এবং exports । তালিকায় একটি টার্গেটের সমস্ত নির্ভরতা বরাবর প্রচার করার জন্য একটি একক স্ট্রিং "*" থাকতে পারে।
attrs dict ; or None ; ডিফল্ট = কোনোটিই নয়
দিকটির সমস্ত বৈশিষ্ট্য ঘোষণা করে একটি অভিধান। এটি একটি অ্যাট্রিবিউটের নাম থেকে একটি অ্যাট্রিবিউট অবজেক্টে ম্যাপ করে, যেমন `attr.label` বা `attr.string` ( attr মডিউল দেখুন)। ctx প্যারামিটারের ক্ষেত্র হিসাবে রূপায়ন ফাংশনের জন্য দৃষ্টিভঙ্গি বৈশিষ্ট্যগুলি উপলব্ধ।

_ দিয়ে শুরু হওয়া অন্তর্নিহিত বৈশিষ্ট্যগুলির অবশ্যই ডিফল্ট মান থাকতে হবে এবং টাইপ label বা label_list

স্পষ্ট বৈশিষ্ট্যের টাইপ string থাকতে হবে এবং অবশ্যই values সীমাবদ্ধতা ব্যবহার করতে হবে। সুস্পষ্ট বৈশিষ্ট্যগুলি কেবলমাত্র সেই নিয়মগুলির সাথে ব্যবহার করার জন্য দিকটিকে সীমাবদ্ধ করে যা বিধিনিষেধ অনুসারে একই নাম, প্রকার এবং বৈধ মানগুলির বৈশিষ্ট্য রয়েছে৷

required_providers ডিফল্ট = []
এই বৈশিষ্ট্যটি দৃষ্টিভঙ্গিকে এর প্রচারকে শুধুমাত্র লক্ষ্যমাত্রায় সীমাবদ্ধ করতে দেয় যার নিয়মগুলি তার প্রয়োজনীয় প্রদানকারীদের বিজ্ঞাপন দেয়। মানটি অবশ্যই একটি তালিকা হতে হবে যাতে পৃথক প্রদানকারী বা প্রদানকারীদের তালিকা থাকে তবে উভয়ই নয়। উদাহরণস্বরূপ, [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] একটি বৈধ মান যখন [FooInfo, BarInfo, [BazInfo, QuxInfo]] বৈধ নয়।

প্রোভাইডারদের একটি অনেস্টেড তালিকা স্বয়ংক্রিয়ভাবে একটি তালিকায় রূপান্তরিত হবে যেখানে একটি প্রদানকারীর তালিকা রয়েছে। অর্থাৎ, [FooInfo, BarInfo] স্বয়ংক্রিয়ভাবে [[FooInfo, BarInfo]] রূপান্তরিত হবে।

কিছু নিয়ম (যেমন some_rule ) লক্ষ্যগুলিকে একটি দিক থেকে দৃশ্যমান করার জন্য, some_rule অবশ্যই প্রয়োজনীয় প্রদানকারীর তালিকার অন্তত একটি থেকে সমস্ত প্রদানকারীদের বিজ্ঞাপন দিতে হবে। উদাহরণস্বরূপ, যদি একটি দিকটির required_providers হয় [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] , এই দিকটি শুধুমাত্র some_rule লক্ষ্যমাত্রা দেখতে পাবে যদি এবং শুধুমাত্র some_rule FooInfo * বা * BarInfo * বা * BazInfo * উভয়ই প্রদান করে এবং * QuxInfo

required_aspect_providers ডিফল্ট = []
এই বৈশিষ্ট্যটি এই দিকটিকে অন্যান্য দিকগুলি পরিদর্শন করতে দেয়৷ মানটি অবশ্যই একটি তালিকা হতে হবে যাতে পৃথক প্রদানকারী বা প্রদানকারীদের তালিকা থাকে তবে উভয়ই নয়। উদাহরণস্বরূপ, [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] একটি বৈধ মান যখন [FooInfo, BarInfo, [BazInfo, QuxInfo]] বৈধ নয়।

প্রোভাইডারদের একটি অনেস্টেড তালিকা স্বয়ংক্রিয়ভাবে একটি তালিকায় রূপান্তরিত হবে যেখানে একটি প্রদানকারীর তালিকা রয়েছে। অর্থাৎ, [FooInfo, BarInfo] স্বয়ংক্রিয়ভাবে [[FooInfo, BarInfo]] রূপান্তরিত হবে।

অন্য একটি দিক (যেমন other_aspect ) এই দিকটিকে দৃশ্যমান করতে, other_aspect অবশ্যই অন্তত একটি তালিকা থেকে সমস্ত প্রদানকারীকে প্রদান করবে৷ [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] , এই দিকটি শুধুমাত্র other_aspect দেখতে পাবে যদি এবং শুধুমাত্র যদি other_aspect FooInfo * বা * BarInfo * বা * BazInfo * এবং * QuxInfo উভয়ই প্রদান করে।

provides ডিফল্ট = []
প্রদানকারীর একটি তালিকা যা বাস্তবায়ন ফাংশন অবশ্যই ফিরে আসবে।

এটি একটি ত্রুটি যদি ইমপ্লিমেন্টেশন ফাংশনটি তার রিটার্ন মান থেকে এখানে তালিকাভুক্ত যেকোন ধরনের প্রদানকারীকে বাদ দেয়। যাইহোক, বাস্তবায়ন ফাংশন এখানে তালিকাভুক্ত নয় এমন অতিরিক্ত প্রদানকারীদের ফিরিয়ে দিতে পারে।

তালিকার প্রতিটি উপাদান হল provider() দ্বারা প্রত্যাবর্তিত একটি *Info অবজেক্ট, একটি লিগ্যাসি প্রদানকারীর পরিবর্তে তার স্ট্রিং নাম দ্বারা প্রতিনিধিত্ব করা হয়।

requires sequence of Aspect s ; ডিফল্ট = []
এই দিকটির আগে প্রচার করা আবশ্যক দিকগুলির তালিকা।
fragments sequence of string s ; ডিফল্ট = []
টার্গেট কনফিগারেশনে দৃষ্টিভঙ্গি প্রয়োজন এমন কনফিগারেশন টুকরাগুলির নামের তালিকা।
host_fragments sequence of string s ; ডিফল্ট = []
হোস্ট কনফিগারেশনে দৃষ্টিভঙ্গি প্রয়োজন এমন কনফিগারেশন টুকরাগুলির নামের তালিকা।
toolchains sequence ; ডিফল্ট = []
সেট করা হলে, টুলচেনের সেট এই নিয়মের প্রয়োজন। তালিকায় স্ট্রিং, লেবেল বা StarlarkToolchainTypeApi অবজেক্ট থাকতে পারে, যেকোন সংমিশ্রণে। বর্তমান প্ল্যাটফর্ম চেক করে টুলচেন খুঁজে পাওয়া যাবে এবং ctx.toolchain এর মাধ্যমে নিয়ম বাস্তবায়নে প্রদান করা হবে।
incompatible_use_toolchain_transition ডিফল্ট = মিথ্যা
অপ্রচলিত, এটি আর ব্যবহারে নেই এবং সরানো উচিত৷
doc ডিফল্ট = ''
ডকুমেন্টেশন তৈরির সরঞ্জাম দ্বারা নিষ্কাশন করা যেতে পারে এমন দিকটির একটি বিবরণ।
apply_to_generating_rules ডিফল্ট = মিথ্যা
যদি সত্য হয়, আউটপুট ফাইলে প্রয়োগ করার সময়, আউটপুট ফাইলের তৈরির নিয়মের পরিবর্তে দৃষ্টিভঙ্গি প্রয়োগ করা হবে।

উদাহরণ স্বরূপ, ধরুন একটি দৃষ্টিভঙ্গি 'deps' অ্যাট্রিবিউটের মাধ্যমে ট্রানজিটিভভাবে প্রচার করে এবং এটি লক্ষ্য 'আলফা'-এ প্রয়োগ করা হয়। ধরুন `আলফা` এর আছে `deps = [':beta_output']`, যেখানে `beta_output` একটি লক্ষ্য `beta`-এর ঘোষিত আউটপুট। ধরুন 'বিটা' এর একটি টার্গেট আছে 'চার্লি' এর একটি 'ডেপস' হিসেবে। যদি দৃষ্টিভঙ্গির জন্য `apply_to_generating_rules=True` হয়, তাহলে দৃষ্টিভঙ্গি `আলফা`, `বিটা` এবং `চার্লি` এর মাধ্যমে প্রচারিত হবে। যদি False, তাহলে দৃষ্টিভঙ্গি শুধুমাত্র `আলফা`-তে প্রচারিত হবে।

ডিফল্টরূপে মিথ্যা।

exec_compatible_with sequence of string s ; ডিফল্ট = []
এক্সিকিউশন প্ল্যাটফর্মের সীমাবদ্ধতার একটি তালিকা যা এই দিকটির সমস্ত ক্ষেত্রে প্রযোজ্য।
exec_groups dict ; or None ; ডিফল্ট = কোনোটিই নয়
exec_group s- এ এক্সিকিউশন গ্রুপের নাম (স্ট্রিং) এর ডিক্ট। সেট করা থাকলে, একক উদাহরণের মধ্যে একাধিক এক্সিকিউশন প্ল্যাটফর্মে অ্যাকশন চালানোর জন্য দিকগুলিকে অনুমতি দেয়। আরো তথ্যের জন্য মৃত্যুদন্ড গ্রুপ ডকুমেন্টেশন দেখুন.

bazel_dep

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

অন্য Bazel মডিউলের উপর সরাসরি নির্ভরতা ঘোষণা করে।

পরামিতি

প্যারামিটার বর্ণনা
name প্রয়োজনীয়
সরাসরি নির্ভরতা হিসাবে যোগ করা মডিউলের নাম।
version ডিফল্ট = ''
মডিউলের সংস্করণ সরাসরি নির্ভরতা হিসাবে যোগ করা হবে।
repo_name ডিফল্ট = ''
এই নির্ভরতার প্রতিনিধিত্বকারী বাহ্যিক রেপোর নাম। এটি ডিফল্টভাবে মডিউলের নাম।
dev_dependency ডিফল্ট = মিথ্যা
যদি সত্য হয়, বর্তমান মডিউলটি রুট মডিউল না হলে বা `--ignore_dev_dependency` সক্ষম করা থাকলে এই নির্ভরতা উপেক্ষা করা হবে।

বাঁধাই করা

None bind(name, actual=None)

সতর্কতা: bind() ব্যবহার বাঞ্ছনীয় নয়। এর সমস্যা এবং বিকল্পগুলির একটি দীর্ঘ আলোচনার জন্য বাইন্ড অপসারণ বিবেচনা করুন

//external প্যাকেজে একটি লক্ষ্যকে একটি উপনাম দেয়।

পরামিতি

প্যারামিটার বর্ণনা
name প্রয়োজনীয়
উপনাম নাম হিসাবে পরিবেশন করার জন্য '//বহিরাগত'-এর অধীনে লেবেল৷
actual string ; or None ; ডিফল্ট = কোনোটিই নয়
আসল লেবেলটি উপনাম করা হবে

bool

bool bool(x=False)

বুল টাইপের জন্য কনস্ট্রাক্টর। বস্তুটি None , False , একটি খালি স্ট্রিং ( "" ), সংখ্যা 0 , বা একটি খালি সংগ্রহ (যেমন () , [] ) হলে এটি False প্রদান করে। অন্যথায়, এটি True ফিরে আসে।

পরামিতি

প্যারামিটার বর্ণনা
x ডিফল্ট = মিথ্যা
রূপান্তর করার ভেরিয়েবল।

কনফিগারেশন_ক্ষেত্র

LateBoundDefault configuration_field(fragment, name)

টাইপ লেবেলের একটি বৈশিষ্ট্যের জন্য একটি দেরী-বাউন্ড ডিফল্ট মান উল্লেখ করে। একটি মান 'লেট-বাউন্ড' হয় যদি মান নির্ধারণ করার আগে কনফিগারেশন তৈরি করতে হয়। একটি মান হিসাবে এটি ব্যবহার করে যে কোনো বৈশিষ্ট্য ব্যক্তিগত হতে হবে

উদাহরণ ব্যবহার:

একটি নিয়ম বৈশিষ্ট্য সংজ্ঞায়িত করা:

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

নিয়ম বাস্তবায়নে অ্যাক্সেস করা:

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

পরামিতি

প্যারামিটার বর্ণনা
fragment প্রয়োজনীয়
একটি কনফিগারেশন ফ্র্যাগমেন্টের নাম যাতে লেট-বাউন্ড মান রয়েছে।
name প্রয়োজনীয়
কনফিগারেশন ফ্র্যাগমেন্ট থেকে প্রাপ্ত মানটির নাম।

ডিপসেট

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

ডিপসেট তৈরি করে। direct প্যারামিটার হল ডিপসেটের প্রত্যক্ষ উপাদানগুলির একটি তালিকা এবং transitive প্যারামিটার হল ডিপসেটের একটি তালিকা যার উপাদানগুলি তৈরি করা ডিপসেটের পরোক্ষ উপাদানে পরিণত হয়। ডিপসেটকে একটি তালিকায় রূপান্তরিত করার সময় যে ক্রমে উপাদানগুলি ফেরত দেওয়া হয় তা order প্যারামিটার দ্বারা নির্দিষ্ট করা হয়। আরও তথ্যের জন্য Depsets ওভারভিউ দেখুন।

একটি ডিপসেটের সমস্ত উপাদান (প্রত্যক্ষ এবং পরোক্ষ) অবশ্যই একই ধরণের হতে হবে, যেমনটি এক্সপ্রেশন type(x) দ্বারা প্রাপ্ত হয়।

যেহেতু একটি হ্যাশ-ভিত্তিক সেট পুনরাবৃত্তির সময় ডুপ্লিকেটগুলি দূর করতে ব্যবহৃত হয়, তাই একটি ডিপসেটের সমস্ত উপাদান হ্যাশযোগ্য হওয়া উচিত। যাইহোক, এই পরিবর্তনশীলটি বর্তমানে সমস্ত কনস্ট্রাক্টরের মধ্যে ধারাবাহিকভাবে পরীক্ষা করা হয় না। সামঞ্জস্যপূর্ণ চেকিং সক্ষম করতে --incompatible_always_check_depset_elements পতাকা ব্যবহার করুন; ভবিষ্যতের রিলিজে এটিই হবে ডিফল্ট আচরণ; ইস্যু 10313 দেখুন।

উপরন্তু, উপাদান বর্তমানে অপরিবর্তনীয় হতে হবে, যদিও ভবিষ্যতে এই সীমাবদ্ধতা শিথিল করা হবে।

সৃষ্ট ডিপসেটের ক্রমটি তার transitive ডিপসেটের অর্ডারের সাথে সামঞ্জস্যপূর্ণ হওয়া উচিত। "default" অর্ডার অন্য যেকোনো অর্ডারের সাথে সামঞ্জস্যপূর্ণ, অন্য সব অর্ডার শুধুমাত্র নিজেদের সাথে সামঞ্জস্যপূর্ণ।

পশ্চাদগামী/ফরওয়ার্ড সামঞ্জস্যের উপর নোট করুন। এই ফাংশনটি বর্তমানে একটি অবস্থানগত items পরামিতি গ্রহণ করে। এটি অবহেলিত এবং ভবিষ্যতে সরানো হবে, এবং এটি অপসারণের পরে direct depset ফাংশনের একমাত্র অবস্থানগত পরামিতি হয়ে উঠবে। সুতরাং, নিম্নলিখিত উভয় কলই সমতুল্য এবং ভবিষ্যতের প্রমাণ:

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

পরামিতি

প্যারামিটার বর্ণনা
direct sequence ; or None ; ডিফল্ট = কোনোটিই নয়
একটি ডিপসেটের সরাসরি উপাদানগুলির একটি তালিকা৷
order ডিফল্ট = "ডিফল্ট"
নতুন ডিপসেটের জন্য ট্রাভার্সাল কৌশল। সম্ভাব্য মানগুলির জন্য এখানে দেখুন।
transitive sequence of depset s; or None ; ডিফল্ট = কোনোটিই নয়
ডিপসেটের একটি তালিকা যার উপাদানগুলি ডিপসেটের পরোক্ষ উপাদানে পরিণত হবে।

dict

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

একটি ঐচ্ছিক অবস্থানগত যুক্তি এবং কীওয়ার্ড আর্গুমেন্টের একটি ঐচ্ছিক সেট থেকে একটি অভিধান তৈরি করে৷ যে ক্ষেত্রে একই কী একাধিকবার দেওয়া হয় সেখানে শেষ মানটি ব্যবহার করা হবে। কীওয়ার্ড আর্গুমেন্টের মাধ্যমে সরবরাহ করা এন্ট্রিগুলি অবস্থানগত যুক্তির মাধ্যমে সরবরাহ করা এন্ট্রিগুলির পরে আসা বলে মনে করা হয়।

পরামিতি

প্যারামিটার বর্ণনা
pairs ডিফল্ট = []
একটি ডিক্ট, বা একটি পুনরাবৃত্তিযোগ্য যার উপাদানগুলির প্রতিটি দৈর্ঘ্য 2 (কী, মান)।
kwargs প্রয়োজনীয়
অতিরিক্ত এন্ট্রির অভিধান।

dir

list dir(x)

স্ট্রিংগুলির একটি তালিকা প্রদান করে: প্যারামিটার অবজেক্টের বৈশিষ্ট্য এবং পদ্ধতির নাম।

পরামিতি

প্যারামিটার বর্ণনা
x প্রয়োজনীয়
চেক করার বস্তু।

গোনা

list enumerate(list, start=0)

ইনপুট ক্রম থেকে সূচক (int) এবং আইটেম সহ জোড়ার একটি তালিকা (দুই-উপাদানের টিপল) প্রদান করে।
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 ; ডিফল্ট = []
এই এক্সিকিউশন গ্রুপের টুলচেইনের সেট প্রয়োজন। তালিকায় স্ট্রিং, লেবেল বা StarlarkToolchainTypeApi অবজেক্ট থাকতে পারে, যেকোন সংমিশ্রণে।
exec_compatible_with sequence of string s ; ডিফল্ট = []
মৃত্যুদন্ড কার্যকর করার প্ল্যাটফর্মের সীমাবদ্ধতার একটি তালিকা।
copy_from_rule ডিফল্ট = মিথ্যা
সত্য হিসাবে সেট করা হলে, এই exec গোষ্ঠীটি টুলচেইন এবং নিয়মের সীমাবদ্ধতাগুলিকে উত্তরাধিকার সূত্রে প্রাপ্ত করে যার সাথে এই গ্রুপটি সংযুক্ত। অন্য কোন স্ট্রিং সেট করা হলে এটি একটি ত্রুটি নিক্ষেপ করবে।

ব্যর্থ

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

একটি ত্রুটির সাথে মৃত্যুদন্ড কার্যকর করতে ব্যর্থ হয়।

পরামিতি

প্যারামিটার বর্ণনা
msg ডিফল্ট = কোনোটিই নয়
অপ্রচলিত: পরিবর্তে অবস্থানগত যুক্তি ব্যবহার করুন। এই যুক্তি একটি অন্তর্নিহিত নেতৃস্থানীয় অবস্থানগত যুক্তি মত কাজ করে.
attr string ; or None ; ডিফল্ট = কোনোটিই নয়
অবচয়। ত্রুটি বার্তায় এই স্ট্রিং যুক্ত একটি ঐচ্ছিক উপসর্গের কারণ হয়৷
args প্রয়োজনীয়
মানগুলির একটি তালিকা, str দিয়ে ফরম্যাট করা এবং স্পেস দিয়ে যুক্ত, যা ত্রুটি বার্তায় প্রদর্শিত হয়।

ভাসা

float float(x=unbound)

একটি ফ্লোট মান হিসাবে x প্রদান করে।
  • যদি x ইতিমধ্যে একটি float হয়, float এটি অপরিবর্তিত প্রদান করে।
  • যদি x একটি বুল হয়, তাহলে float সত্যের জন্য 1.0 এবং False-এর জন্য 0.0 প্রদান করে।
  • যদি x একটি int হয়, float নিকটতম সসীম ফ্লোটিং-পয়েন্ট মানকে x-এ ফেরত দেয়, অথবা যদি মাত্রা খুব বড় হয় তাহলে একটি ত্রুটি।
  • যদি x একটি স্ট্রিং হয়, তাহলে এটি অবশ্যই একটি বৈধ ফ্লোটিং-পয়েন্ট লিটারাল হতে হবে, অথবা NaN , Inf , বা Infinity এর সমান হতে হবে, ঐচ্ছিকভাবে একটি + বা - চিহ্নের পূর্বে।
অন্য কোনো মান একটি ত্রুটি কারণ. কোন যুক্তি ছাড়া, float() 0.0 প্রদান করে।

পরামিতি

প্যারামিটার বর্ণনা
x ডিফল্ট = আবদ্ধ
রূপান্তর করার মান।

getattr

unknown getattr(x, name, default=unbound)

প্রদত্ত নামের struct এর ক্ষেত্রটি প্রদান করে যদি এটি বিদ্যমান থাকে। যদি না হয়, এটি হয় default (যদি নির্দিষ্ট করা থাকে) ফেরত দেয় বা একটি ত্রুটি উত্থাপন করে। getattr(x, "foobar") x.foobar এর সমতুল্য।
getattr(ctx.attr, "myattr")
getattr(ctx.attr, "myattr", "mydefault")

পরামিতি

প্যারামিটার বর্ণনা
x প্রয়োজনীয়
struct যার অ্যাট্রিবিউট অ্যাক্সেস করা হয়েছে।
name প্রয়োজনীয়
struct বৈশিষ্ট্যের নাম।
default ডিফল্ট = আবদ্ধ
স্ট্রাকটে প্রদত্ত নামের একটি বৈশিষ্ট্য না থাকলে ডিফল্ট মানটি ফেরত দিতে হবে।

git_override

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

নির্দিষ্ট করে যে একটি নির্ভরতা একটি গিট সংগ্রহস্থলের একটি নির্দিষ্ট প্রতিশ্রুতি থেকে আসা উচিত। এই নির্দেশিকা শুধুমাত্র রুট মডিউল দ্বারা ব্যবহার করা যেতে পারে; অন্য কথায়, যদি একটি মডিউল কোনো ওভাররাইড নির্দিষ্ট করে, তবে এটি অন্যদের দ্বারা নির্ভরতা হিসাবে ব্যবহার করা যাবে না।

পরামিতি

প্যারামিটার বর্ণনা
module_name প্রয়োজনীয়
এই ওভাররাইড প্রয়োগ করার জন্য Bazel মডিউল নির্ভরতার নাম।
remote প্রয়োজনীয়
দূরবর্তী গিট সংগ্রহস্থলের URL।
commit ডিফল্ট = ''
কমিট যে চেক আউট করা উচিত.
patches Iterable of string s ; ডিফল্ট = []
এই মডিউলের জন্য আবেদন করার জন্য প্যাচ ফাইলের দিকে নির্দেশ করে লেবেলের একটি তালিকা। প্যাচ ফাইলগুলি অবশ্যই শীর্ষ স্তরের প্রকল্পের উত্স গাছে বিদ্যমান থাকতে হবে। তারা তালিকা ক্রম প্রয়োগ করা হয়.
patch_strip ডিফল্ট = 0
ইউনিক্স প্যাচের --স্ট্রিপ আর্গুমেন্টের মতোই।

hasattr

bool hasattr(x, name)

অবজেক্ট x এর প্রদত্ত name একটি বৈশিষ্ট্য বা পদ্ধতি থাকলে True ফেরত দেয়, অন্যথায় False। উদাহরণ:
hasattr(ctx.attr, "myattr")

পরামিতি

প্যারামিটার বর্ণনা
x প্রয়োজনীয়
চেক করার বস্তু।
name প্রয়োজনীয়
গুণের নাম।

হ্যাশ

int hash(value)

একটি স্ট্রিং জন্য একটি হ্যাশ মান ফেরত. জাভা-এর String.hashCode() এর মতো একই অ্যালগরিদম ব্যবহার করে এটি নির্ধারকভাবে গণনা করা হয়, যথা:
s[0] * (31^(n-1)) + s[1] * (31^(n-2)) + ... + s[n-1]
স্ট্রিং ছাড়াও মানগুলির হ্যাশিং বর্তমানে সমর্থিত নয়।

পরামিতি

প্যারামিটার বর্ণনা
value প্রয়োজনীয়
হ্যাশে স্ট্রিং মান.

int

int int(x, base=unbound)

একটি int মান হিসাবে x প্রদান করে।
  • যদি x ইতিমধ্যে একটি int হয়, int এটি অপরিবর্তিত প্রদান করে।
  • যদি x একটি bool হয়, int সত্যের জন্য 1 এবং False এর জন্য 0 প্রদান করে।
  • যদি x একটি স্ট্রিং হয়, তাহলে সেটির ফর্ম্যাট <sign><prefix><digits> থাকতে হবে। <sign> হয় "+" , "-" , অথবা খালি (ধনাত্মক হিসাবে ব্যাখ্যা করা হয়)। <digits> হল 0 থেকে base - 1 পর্যন্ত অঙ্কগুলির একটি ক্রম, যেখানে 10-35 এর জন্য অক্ষর az (বা সমতুল্যভাবে, AZ) ব্যবহার করা হয়। যে ক্ষেত্রে base 2/8/16, <prefix> ঐচ্ছিক এবং যথাক্রমে 0b/0o/0x (বা সমতুল্য, 0B/0O/0X) হতে পারে; যদি base এই বেসগুলি বা বিশেষ মান 0 ছাড়া অন্য কোনো মান হয়, তাহলে উপসর্গটি খালি হতে হবে। যে ক্ষেত্রে base 0, স্ট্রিংটিকে একটি পূর্ণসংখ্যা আক্ষরিক হিসাবে ব্যাখ্যা করা হয়, এই অর্থে যে বেসগুলির মধ্যে একটি 2/8/10/16 বেছে নেওয়া হয় যদি কোনটি ব্যবহার করা হয় তার উপর নির্ভর করে। যদি base 0 হয়, কোন উপসর্গ ব্যবহার করা হয় না, এবং একাধিক সংখ্যা থাকে, অগ্রণী সংখ্যা 0 হতে পারে না; এটি অক্টাল এবং দশমিকের মধ্যে বিভ্রান্তি এড়াতে। স্ট্রিং দ্বারা উপস্থাপিত সংখ্যার মাত্রা int প্রকারের জন্য অনুমোদিত সীমার মধ্যে হতে হবে।
  • যদি x একটি ফ্লোট হয়, int ফ্লোটের পূর্ণসংখ্যার মান প্রদান করে, শূন্যের দিকে রাউন্ডিং করে। এটি একটি ত্রুটি যদি x অ-সসীম (NaN বা অসীম) হয়।
এই ফাংশনটি ব্যর্থ হয় যদি x অন্য কোনো প্রকার হয়, অথবা যদি মানটি একটি স্ট্রিং হয় যা উপরের বিন্যাসটিকে সন্তুষ্ট করে না। পাইথনের int ফাংশনের বিপরীতে, এই ফাংশনটি শূন্য আর্গুমেন্টের অনুমতি দেয় না এবং স্ট্রিং আর্গুমেন্টের জন্য বহিরাগত হোয়াইটস্পেসকে অনুমতি দেয় না।

উদাহরণ:

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 ডিফল্ট = আবদ্ধ
একটি স্ট্রিং মান ব্যাখ্যা করতে ব্যবহৃত বেস; 10-এ ডিফল্ট। x একটি পূর্ণসংখ্যার আক্ষরিক হিসাবে বেস সনাক্ত করতে 2 এবং 36 (অন্তর্ভুক্ত) এর মধ্যে হতে হবে। মানটি স্ট্রিং না হলে এই প্যারামিটারটি অবশ্যই সরবরাহ করা উচিত নয়।

len

int len(x)

একটি স্ট্রিং, ক্রম (যেমন একটি তালিকা বা tuple), dict, বা অন্য পুনরাবৃত্তিযোগ্য দৈর্ঘ্য প্রদান করে।

পরামিতি

প্যারামিটার বর্ণনা
x প্রয়োজনীয়
যে মানটির দৈর্ঘ্য রিপোর্ট করতে হবে।

তালিকা

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 ডিফল্ট = []
রূপান্তর করার বস্তু।

স্থানীয়_পথ_ওভাররাইড

None local_path_override(module_name, path)

নির্দিষ্ট করে যে একটি নির্ভরতা স্থানীয় ডিস্কের একটি নির্দিষ্ট ডিরেক্টরি থেকে আসা উচিত। এই নির্দেশিকা শুধুমাত্র রুট মডিউল দ্বারা ব্যবহার করা যেতে পারে; অন্য কথায়, যদি একটি মডিউল কোনো ওভাররাইড নির্দিষ্ট করে, তবে এটি অন্যদের দ্বারা নির্ভরতা হিসাবে ব্যবহার করা যাবে না।

পরামিতি

প্যারামিটার বর্ণনা
module_name প্রয়োজনীয়
এই ওভাররাইড প্রয়োগ করার জন্য Bazel মডিউল নির্ভরতার নাম।
path প্রয়োজনীয়
ডিরেক্টরির পাথ যেখানে এই মডিউল আছে।

সর্বোচ্চ

unknown max(*args)

সমস্ত প্রদত্ত আর্গুমেন্টের মধ্যে সবচেয়ে বড়টি প্রদান করে। যদি শুধুমাত্র একটি আর্গুমেন্ট প্রদান করা হয়, এটি অবশ্যই একটি অ-খালি পুনরাবৃত্তিযোগ্য হতে হবে৷ এটি একটি ত্রুটি যদি উপাদানগুলি তুলনাযোগ্য না হয় (উদাহরণস্বরূপ স্ট্রিংয়ের সাথে int), বা যদি কোনও আর্গুমেন্ট দেওয়া না হয়৷
max(2, 5, 4) == 5
max([5, 6, 3]) == 6

পরামিতি

প্যারামিটার বর্ণনা
args প্রয়োজনীয়
উপাদান চেক করা হবে.

মিনিট

unknown min(*args)

সমস্ত প্রদত্ত আর্গুমেন্টের মধ্যে ক্ষুদ্রতম একটি প্রদান করে। শুধুমাত্র একটি যুক্তি প্রদান করা হলে, এটি একটি অ-খালি পুনরাবৃত্তিযোগ্য হতে হবে। এটি একটি ত্রুটি যদি উপাদানগুলি তুলনাযোগ্য না হয় (উদাহরণস্বরূপ স্ট্রিংয়ের সাথে int), বা যদি কোনও আর্গুমেন্ট দেওয়া না হয়।
min(2, 5, 4) == 2
min([5, 6, 3]) == 3

পরামিতি

প্যারামিটার বর্ণনা
args প্রয়োজনীয়
উপাদান চেক করা হবে.

মডিউল

None module(name='', version='', compatibility_level=0, execution_platforms_to_register=[], toolchains_to_register=[])

বর্তমান Bazel রেপো দ্বারা প্রতিনিধিত্ব করা Bazel মডিউলের কিছু বৈশিষ্ট্য ঘোষণা করে। এই বৈশিষ্ট্যগুলি হয় মডিউলের অপরিহার্য মেটাডেটা (যেমন নাম এবং সংস্করণ), অথবা বর্তমান মডিউল এবং এর নির্ভরশীলদের আচরণকে প্রভাবিত করে।

এটি একবারে সর্বোচ্চ কল করা উচিত। এটি বাদ দেওয়া যেতে পারে শুধুমাত্র যদি এই মডিউলটি রুট মডিউল হয় (যেমন, যদি এটি অন্য মডিউল দ্বারা নির্ভরশীল না হয়)।

পরামিতি

প্যারামিটার বর্ণনা
name ডিফল্ট = ''
মডিউলের নাম। শুধুমাত্র যদি এই মডিউলটি রুট মডিউল হয় (যেমন, যদি এটি অন্য মডিউল দ্বারা নির্ভরশীল না হয়) তাহলেই বাদ দেওয়া যেতে পারে। একটি বৈধ মডিউল নাম অবশ্যই: 1) শুধুমাত্র ছোট হাতের অক্ষর (az), সংখ্যা (0-9), বিন্দু (.), হাইফেন (-), এবং আন্ডারস্কোর (_); 2) একটি ছোট হাতের অক্ষর দিয়ে শুরু করুন; 3) একটি ছোট হাতের অক্ষর বা অঙ্ক দিয়ে শেষ করুন।
version ডিফল্ট = ''
মডিউলের সংস্করণ। শুধুমাত্র যদি এই মডিউলটি রুট মডিউল হয় (যেমন, যদি এটি অন্য মডিউল দ্বারা নির্ভরশীল না হয়) তাহলেই বাদ দেওয়া যেতে পারে।
compatibility_level ডিফল্ট = 0
মডিউল এর সামঞ্জস্য স্তর; এটি প্রতিবার পরিবর্তন করা উচিত যখন একটি বড় বেমানান পরিবর্তন প্রবর্তিত হয়। এটি মূলত SemVer-এর পরিপ্রেক্ষিতে মডিউলের "প্রধান সংস্করণ", ব্যতীত এটি সংস্করণ স্ট্রিং-এ এমবেড করা নেই, তবে একটি পৃথক ক্ষেত্র হিসাবে বিদ্যমান। বিভিন্ন সামঞ্জস্যের স্তর সহ মডিউলগুলি সংস্করণ রেজোলিউশনে অংশগ্রহণ করে যেন সেগুলি বিভিন্ন নামের মডিউল, কিন্তু চূড়ান্ত নির্ভরতা গ্রাফে একই নামের একাধিক মডিউল থাকতে পারে না তবে বিভিন্ন সামঞ্জস্য স্তর থাকে (যদি না multiple_version_override কার্যকর হয়; আরও বিশদ বিবরণের জন্য সেখানে দেখুন)।
execution_platforms_to_register Iterable of string s ; ডিফল্ট = []
এই মডিউলটি নির্বাচন করার সময় নিবন্ধিত হওয়ার জন্য ইতিমধ্যে-সংজ্ঞায়িত এক্সিকিউশন প্ল্যাটফর্মের একটি তালিকা। পরম লক্ষ্য নিদর্শনগুলির একটি তালিকা হওয়া উচিত (অর্থাৎ। @ বা // দিয়ে শুরু)। আরও তথ্যের জন্য টুলচেন রেজোলিউশন দেখুন।
toolchains_to_register Iterable of string s ; ডিফল্ট = []
এই মডিউলটি নির্বাচন করা হলে নিবন্ধিত হওয়ার জন্য ইতিমধ্যে-সংজ্ঞায়িত টুলচেইনের একটি তালিকা। পরম লক্ষ্য নিদর্শনগুলির একটি তালিকা হওয়া উচিত (অর্থাৎ। @ বা // দিয়ে শুরু)। আরও তথ্যের জন্য টুলচেন রেজোলিউশন দেখুন।

মডিউল_এক্সটেনশন

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

একটি নতুন মডিউল এক্সটেনশন তৈরি করে। এটিকে একটি গ্লোবাল ভ্যালুতে সংরক্ষণ করুন, যাতে এটি রপ্তানি করা যায় এবং একটি MODULE.bazel ফাইলে ব্যবহার করা যায়।

পরামিতি

প্যারামিটার বর্ণনা
implementation প্রয়োজনীয়
এই মডিউল এক্সটেনশন প্রয়োগ করে যে ফাংশন. একটি একক প্যারামিটার নিতে হবে, module_ctx । উপলব্ধ রেপোর সেট নির্ধারণ করতে একটি বিল্ডের শুরুতে একবার ফাংশনটি কল করা হয়।
tag_classes ডিফল্ট = {}
এক্সটেনশন দ্বারা ব্যবহৃত সমস্ত ট্যাগ ক্লাস ঘোষণা করার জন্য একটি অভিধান। এটি ট্যাগ ক্লাসের নাম থেকে একটি tag_class অবজেক্টে ম্যাপ করে।
doc ডিফল্ট = ''
মডিউল এক্সটেনশনের একটি বিবরণ যা ডকুমেন্টেশন তৈরির সরঞ্জামগুলির মাধ্যমে বের করা যেতে পারে।

একাধিক_সংস্করণ_ওভাররাইড

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

নির্দিষ্ট করে যে একটি নির্ভরতা এখনও একটি রেজিস্ট্রি থেকে আসা উচিত, তবে এর একাধিক সংস্করণ সহাবস্থানের অনুমতি দেওয়া উচিত। এই নির্দেশিকা শুধুমাত্র রুট মডিউল দ্বারা ব্যবহার করা যেতে পারে; অন্য কথায়, যদি একটি মডিউল কোনো ওভাররাইড নির্দিষ্ট করে, তবে এটি অন্যদের দ্বারা নির্ভরতা হিসাবে ব্যবহার করা যাবে না।

পরামিতি

প্যারামিটার বর্ণনা
module_name প্রয়োজনীয়
এই ওভাররাইড প্রয়োগ করার জন্য Bazel মডিউল নির্ভরতার নাম।
versions Iterable of string s ; প্রয়োজনীয়
সহাবস্থানের জন্য অনুমোদিত সংস্করণগুলি স্পষ্টভাবে উল্লেখ করে৷ এই সংস্করণগুলি অবশ্যই নির্ভরতা গ্রাফ প্রাক-নির্বাচনে উপস্থিত থাকতে হবে। এই মডিউলের উপর নির্ভরতাগুলি একই সামঞ্জস্য স্তরে নিকটতম উচ্চ অনুমোদিত সংস্করণে "আপগ্রেড" হবে, যেখানে একই সামঞ্জস্য স্তরে অনুমোদিত সংস্করণগুলির চেয়ে উচ্চতর সংস্করণ রয়েছে এমন নির্ভরতাগুলি একটি ত্রুটির কারণ হবে৷
registry ডিফল্ট = ''
এই মডিউলের জন্য রেজিস্ট্রি ওভাররাইড করে; রেজিস্ট্রিগুলির ডিফল্ট তালিকা থেকে এই মডিউলটি সন্ধান করার পরিবর্তে, প্রদত্ত রেজিস্ট্রি ব্যবহার করা উচিত।

ছাপা

None print(sep=" ", *args)

ডিবাগ আউটপুট হিসাবে args প্রিন্ট করে। এটি "DEBUG" স্ট্রিং এবং এই কলের অবস্থান (ফাইল এবং লাইন নম্বর) এর সাথে প্রিফিক্স করা হবে। আর্গুমেন্টগুলিকে স্ট্রিং-এ রূপান্তরিত করার সঠিক উপায় অনির্দিষ্ট এবং যে কোনো সময় পরিবর্তন হতে পারে। বিশেষ করে, এটি str() এবং repr() দ্বারা করা ফরম্যাটিং থেকে ভিন্ন (এবং আরও বিস্তারিত) হতে পারে।

প্রোডাকশন কোডে print ব্যবহার করা ব্যবহারকারীদের জন্য তৈরি স্প্যামের কারণে নিরুৎসাহিত করা হয়। অবজ্ঞার জন্য, যখনই সম্ভব fail() ব্যবহার করে একটি কঠিন ত্রুটি পছন্দ করুন।

পরামিতি

প্যারামিটার বর্ণনা
sep ডিফল্ট = ""
বস্তুর মধ্যে বিভাজক স্ট্রিং, ডিফল্ট হল স্থান (" ")।
args প্রয়োজনীয়
বস্তু মুদ্রণ.

প্রদানকারী

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 string s; or dict ; or None ; ডিফল্ট = কোনোটিই নয়
নির্দিষ্ট করা হলে, অনুমোদিত ক্ষেত্রগুলির সেটকে সীমাবদ্ধ করে।
সম্ভাব্য মান হল:
  • ক্ষেত্রগুলির তালিকা:
    provider(fields = ['a', 'b'])

  • অভিধান ক্ষেত্রের নাম -> ডকুমেন্টেশন:
    provider(
           fields = { 'a' : 'Documentation for a', 'b' : 'Documentation for b' })
সব ক্ষেত্র ঐচ্ছিক.
init callable; or None ; ডিফল্ট = কোনোটিই নয়
ইনস্ট্যান্টেশনের সময় প্রদানকারীর ক্ষেত্রের মানগুলি প্রিপ্রসেসিং এবং যাচাই করার জন্য একটি ঐচ্ছিক কলব্যাক৷ যদি init নির্দিষ্ট করা থাকে, provider() 2টি উপাদানের একটি টিপল প্রদান করে: সাধারণ প্রদানকারী প্রতীক এবং একটি কাঁচা কনস্ট্রাক্টর

একটি সুনির্দিষ্ট বিবরণ অনুসরণ করে; একটি স্বজ্ঞাত আলোচনা এবং ব্যবহারের ক্ষেত্রে নিয়মাবলী (প্রদানকারীদের কাস্টম প্রাথমিককরণ) দেখুন।

P কে provider() কল করার মাধ্যমে তৈরি করা প্রোভাইডার চিহ্ন হতে দিন। ধারণাগতভাবে, একটি ডিফল্ট কনস্ট্রাক্টর ফাংশন c(*args, **kwargs) কল করে P এর একটি উদাহরণ তৈরি করা হয়, যা নিম্নলিখিতগুলি করে:

  • যদি args খালি না হয়, একটি ত্রুটি ঘটে।
  • provider() কল করার সময় যদি fields প্যারামিটার নির্দিষ্ট করা হয় এবং যদি kwargs এমন কোনো কী থাকে যা fields তালিকাভুক্ত করা হয়নি, তাহলে একটি ত্রুটি ঘটে।
  • অন্যথায়, c একটি নতুন দৃষ্টান্ত প্রদান করে যেটিতে, kwargs এ প্রতিটি k: v এন্ট্রির জন্য, v মান সহ k নামের একটি ক্ষেত্র রয়েছে।
যে ক্ষেত্রে একটি init কলব্যাক দেওয়া হয় না , P প্রতীকে একটি কল নিজেই ডিফল্ট কনস্ট্রাক্টর ফাংশন c তে একটি কল হিসাবে কাজ করে; অন্য কথায়, P(*args, **kwargs) c(*args, **kwargs) **kwargs) ফেরত দেয়। উদাহরণস্বরূপ,
MyInfo = provider()
m = MyInfo(foo = 1)
এটিকে সোজাসাপ্টাভাবে তৈরি করবে যাতে m একটি MyInfo উদাহরণ হয় m.foo == 1

কিন্তু যে ক্ষেত্রে init নির্দিষ্ট করা আছে, কল P(*args, **kwargs) এর পরিবর্তে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করবে:

  1. init(*args, **kwargs) হিসাবে ডাকা হয়, অর্থাৎ, P এ যেভাবে পাস করা হয়েছিল ঠিক একই অবস্থানগত এবং কীওয়ার্ড আর্গুমেন্ট সহ।
  2. init এর রিটার্ন মান একটি অভিধান হতে প্রত্যাশিত, d , যার কীগুলি হল ক্ষেত্রের নামের স্ট্রিং। যদি এটি না হয়, একটি ত্রুটি ঘটে।
  3. P এর একটি নতুন দৃষ্টান্ত তৈরি করা হয়েছে যেন d এর এন্ট্রি সহ ডিফল্ট কনস্ট্রাক্টরকে কীওয়ার্ড আর্গুমেন্ট হিসেবে কল করে, যেমন c(**d)

NB: উপরের পদক্ষেপগুলি বোঝায় যে একটি ত্রুটি ঘটবে যদি *args বা **kwargs init স্বাক্ষরের সাথে মেলে না, বা init এর বডির মূল্যায়ন ব্যর্থ হয় (সম্ভবত ইচ্ছাকৃতভাবে fail() কল করার মাধ্যমে ), অথবা যদি ফিরে আসে init এর মান প্রত্যাশিত স্কিমা সহ একটি অভিধান নয়।

এইভাবে, init কলব্যাক প্রিপ্রসেসিং এবং বৈধতার জন্য অবস্থানগত যুক্তি এবং নির্বিচারী যুক্তির অনুমতি দিয়ে স্বাভাবিক প্রদানকারী নির্মাণকে সাধারণীকরণ করে। এটি অনুমোদিত fields তালিকাকে ফাঁকি দেওয়া সক্ষম করে না

যখন init নির্দিষ্ট করা হয়, provider() এর রিটার্ন মান একটি tuple (P, r) হয়ে যায়, যেখানে r হল raw কনস্ট্রাক্টর । আসলে, r এর আচরণ ঠিক উপরে আলোচিত ডিফল্ট কনস্ট্রাক্টর ফাংশন c এর মতো। সাধারণত, r একটি ভেরিয়েবলের সাথে আবদ্ধ থাকে যার নামের সাথে একটি আন্ডারস্কোর প্রিফিক্স করা হয়, যাতে শুধুমাত্র বর্তমান .bzl ফাইলের সরাসরি অ্যাক্সেস থাকে:

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

পরিসীমা

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

একটি তালিকা তৈরি করে যেখানে আইটেমগুলি start থেকে stop যায়, একটি step বৃদ্ধি ব্যবহার করে। যদি একটি একক যুক্তি প্রদান করা হয়, আইটেমগুলি 0 থেকে সেই উপাদানের মধ্যে থাকবে৷
range(4) == [0, 1, 2, 3]
range(3, 9, 2) == [3, 5, 7]
range(3, 0, -1) == [3, 2, 1]

পরামিতি

প্যারামিটার বর্ণনা
start_or_stop প্রয়োজনীয়
স্টপ প্রদান করা হলে স্টার্ট এলিমেন্টের মান, অন্যথায় স্টপের মান এবং প্রকৃত শুরু 0
stop_or_none int ; or None ; ডিফল্ট = কোনোটিই নয়
প্রথম আইটেমের ঐচ্ছিক সূচক ফলাফল তালিকায় অন্তর্ভুক্ত করা যাবে না ; stop পৌঁছানোর আগেই তালিকার প্রজন্ম থেমে যায়।
step ডিফল্ট = 1
ইনক্রিমেন্ট (ডিফল্ট হল 1)। এটা নেতিবাচক হতে পারে।

register_execution_platforms()

None register_execution_platforms(*platform_labels)

একটি ইতিমধ্যে-সংজ্ঞায়িত প্ল্যাটফর্ম নিবন্ধন করুন যাতে Bazel এটিকে টুলচেন রেজোলিউশনের সময় একটি এক্সিকিউশন প্ল্যাটফর্ম হিসাবে ব্যবহার করতে পারে৷

পরামিতি

প্যারামিটার বর্ণনা
platform_labels sequence of string s ; প্রয়োজনীয়
প্ল্যাটফর্মের লেবেল রেজিস্টার করতে হবে।

register_execution_platforms()

None register_execution_platforms(*platform_labels)

এই মডিউলটি নির্বাচন করার সময় নিবন্ধিত হওয়ার জন্য ইতিমধ্যে-সংজ্ঞায়িত এক্সিকিউশন প্ল্যাটফর্মগুলি নির্দিষ্ট করে৷ পরম টার্গেট প্যাটার্ন হওয়া উচিত (অর্থাৎ @ বা // দিয়ে শুরু)। আরও তথ্যের জন্য টুলচেন রেজোলিউশন দেখুন।

পরামিতি

প্যারামিটার বর্ণনা
platform_labels sequence of string s ; প্রয়োজনীয়
প্ল্যাটফর্মের লেবেল রেজিস্টার করতে হবে।

register_toolchains()

None register_toolchains(*toolchain_labels)

একটি ইতিমধ্যে-সংজ্ঞায়িত টুলচেন নিবন্ধন করুন যাতে Bazel টুলচেন রেজোলিউশনের সময় এটি ব্যবহার করতে পারে। টুলচেইন সংজ্ঞায়িত এবং নিবন্ধন করার উদাহরণ দেখুন।

পরামিতি

প্যারামিটার বর্ণনা
toolchain_labels sequence of string s ; প্রয়োজনীয়
টুলচেইনের লেবেল রেজিস্টার করতে হবে।

register_toolchains()

None register_toolchains(*toolchain_labels)

এই মডিউলটি নির্বাচন করার সময় নিবন্ধিত হওয়ার জন্য ইতিমধ্যে-সংজ্ঞায়িত টুলচেনগুলি নির্দিষ্ট করে। পরম টার্গেট প্যাটার্ন হওয়া উচিত (অর্থাৎ @ বা // দিয়ে শুরু)। আরও তথ্যের জন্য টুলচেন রেজোলিউশন দেখুন।

পরামিতি

প্যারামিটার বর্ণনা
toolchain_labels sequence of string s ; প্রয়োজনীয়
টুলচেইনের লেবেল রেজিস্টার করতে হবে।

repository_rule(বাস্তবায়ন, attrs, স্থানীয়, পরিবেশ, কনফিগার, রিমোটেবল, ডক)

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

একটি নতুন সংগ্রহস্থল নিয়ম তৈরি করে। এটিকে একটি গ্লোবাল ভ্যালুতে সঞ্চয় করুন, যাতে এটি WORKSPACE ফাইল থেকে লোড এবং কল করা যায়।

পরামিতি

প্যারামিটার বর্ণনা
implementation প্রয়োজনীয়
ফাংশন যা এই নিয়ম বাস্তবায়ন করে। একটি একক প্যারামিটার থাকতে হবে, repository_ctx । নিয়মের প্রতিটি দৃষ্টান্তের জন্য লোডিং পর্যায়ে ফাংশনটি বলা হয়।
attrs dict ; or None ; ডিফল্ট = কোনোটিই নয়
নিয়মের সমস্ত বৈশিষ্ট্য ঘোষণা করার অভিধান। এটি একটি অ্যাট্রিবিউটের নাম থেকে একটি অ্যাট্রিবিউট অবজেক্টে ম্যাপ করে ( এটিআর মডিউল দেখুন)। _ দিয়ে শুরু হওয়া বৈশিষ্ট্যগুলি ব্যক্তিগত, এবং একটি ফাইলে একটি লেবেলের উপর একটি অন্তর্নিহিত নির্ভরতা যোগ করতে ব্যবহার করা যেতে পারে (একটি সংগ্রহস্থলের নিয়ম একটি জেনারেটেড আর্টিফ্যাক্টের উপর নির্ভর করতে পারে না)। অ্যাট্রিবিউটের name স্পষ্টভাবে যোগ করা হয়েছে এবং অবশ্যই নির্দিষ্ট করা যাবে না।
local ডিফল্ট = মিথ্যা
নির্দেশ করুন যে এই নিয়মটি স্থানীয় সিস্টেম থেকে সবকিছু নিয়ে আসে এবং প্রতিটি আনার সময় পুনরায় মূল্যায়ন করা উচিত।
environ sequence of string s ; ডিফল্ট = []
এনভায়রনমেন্ট ভেরিয়েবলের একটি তালিকা প্রদান করে যার উপর এই সংগ্রহস্থলের নিয়ম নির্ভর করে। যদি সেই তালিকার একটি পরিবেশ পরিবর্তনশীল হয়, তাহলে সংগ্রহস্থলটি পুনরায় ফিরিয়ে আনা হবে।
configure ডিফল্ট = মিথ্যা
ইঙ্গিত করুন যে সংগ্রহস্থলটি কনফিগারেশনের উদ্দেশ্যে সিস্টেমটি পরিদর্শন করে
remotable ডিফল্ট = মিথ্যা
পরীক্ষামূলক । এই প্যারামিটারটি পরীক্ষামূলক এবং যেকোনো সময় পরিবর্তন হতে পারে। দয়া করে এর উপর নির্ভর করবেন না। It may be enabled on an experimental basis by setting ---experimental_repo_remote_exec
Compatible with remote execution
doc default = ''
A description of the repository rule that can be extracted by documentation generating tools.

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

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

Creates a new repository rule. Store it in a global value, so that it can be loaded and called from the WORKSPACE file.

Parameters

Parameter Description
implementation required
the function that implements this rule. Must have a single parameter, repository_ctx . The function is called during the loading phase for each instance of the rule.
attrs dict ; or None ; default = None
dictionary to declare all the attributes of the rule. It maps from an attribute name to an attribute object (see attr module). Attributes starting with _ are private, and can be used to add an implicit dependency on a label to a file (a repository rule cannot depend on a generated artifact). The attribute name is implicitly added and must not be specified.
local default = False
Indicate that this rule fetches everything from the local system and should be reevaluated at every fetch.
environ sequence of string s ; default = []
Provides a list of environment variable that this repository rule depends on. If an environment variable in that list change, the repository will be refetched.
configure default = False
Indicate that the repository inspects the system for configuration purpose
remotable default = False
Experimental . This parameter is experimental and may change at any time. Please do not depend on it. It may be enabled on an experimental basis by setting ---experimental_repo_remote_exec
Compatible with remote execution
doc default = ''
A description of the repository rule that can be extracted by documentation generating tools.

repr

string repr(x)

Converts any object to a string representation. This is useful for debugging.
repr("ab") == '"ab"'

Parameters

Parameter Description
x required
The object to convert.

reversed

list reversed(sequence)

Returns a new, unfrozen list that contains the elements of the original iterable sequence in reversed order.
reversed([3, 5, 4]) == [4, 5, 3]

Parameters

Parameter Description
sequence required
The iterable sequence (eg list) to be reversed.

rule

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)

Creates a new rule, which can be called from a BUILD file or a macro to create targets.

Rules must be assigned to global variables in a .bzl file; the name of the global variable is the rule's name.

Test rules are required to have a name ending in _test , while all other rules must not have this suffix. (This restriction applies only to rules, not to their targets.)

Parameters

Parameter Description
implementation required
the Starlark function implementing this rule, must have exactly one parameter: ctx . The function is called during the analysis phase for each instance of the rule. It can access the attributes provided by the user. It must create actions to generate all the declared outputs.
test default = False
Whether this rule is a test rule, that is, whether it may be the subject of a blaze test command. All test rules are automatically considered executable ; it is unnecessary (and discouraged) to explicitly set executable = True for a test rule. See the Rules page for more information.
attrs dict ; or None ; default = None
dictionary to declare all the attributes of the rule. It maps from an attribute name to an attribute object (see attr module). Attributes starting with _ are private, and can be used to add an implicit dependency on a label. The attribute name is implicitly added and must not be specified. Attributes visibility , deprecation , tags , testonly , and features are implicitly added and cannot be overridden. Most rules need only a handful of attributes. To limit memory usage, the rule function imposes a cap on the size of attrs.
outputs dict ; or None ; or function ; default = None
Deprecated . This parameter is deprecated and will be removed soon. Please do not depend on it. It is disabled with ---incompatible_no_rule_outputs_param . Use this flag to verify your code is compatible with its imminent removal.
This parameter has been deprecated. Migrate rules to use OutputGroupInfo or attr.output instead.

A schema for defining predeclared outputs. Unlike output and output_list attributes, the user does not specify the labels for these files. See the Rules page for more on predeclared outputs.

The value of this argument is either a dictionary or a callback function that produces a dictionary. The callback works similar to computed dependency attributes: The function's parameter names are matched against the rule's attributes, so for example if you pass outputs = _my_func with the definition def _my_func(srcs, deps): ... , the function has access to the attributes srcs and deps . Whether the dictionary is specified directly or via a function, it is interpreted as follows.

Each entry in the dictionary creates a predeclared output where the key is an identifier and the value is a string template that determines the output's label. In the rule's implementation function, the identifier becomes the field name used to access the output's File in ctx.outputs . The output's label has the same package as the rule, and the part after the package is produced by substituting each placeholder of the form "%{ATTR}" with a string formed from the value of the attribute ATTR :

  • String-typed attributes are substituted verbatim.
  • Label-typed attributes become the part of the label after the package, minus the file extension. For example, the label "//pkg:a/bc" becomes "a/b" .
  • Output-typed attributes become the part of the label after the package, including the file extension (for the above example, "a/bc" ).
  • All list-typed attributes (for example, attr.label_list ) used in placeholders are required to have exactly one element . Their conversion is the same as their non-list version ( attr.label ).
  • Other attribute types may not appear in placeholders.
  • The special non-attribute placeholders %{dirname} and %{basename} expand to those parts of the rule's label, excluding its package. For example, in "//pkg:a/bc" , the dirname is a and the basename is bc .

In practice, the most common substitution placeholder is "%{name}" . For example, for a target named "foo", the outputs dict {"bin": "%{name}.exe"} predeclares an output named foo.exe that is accessible in the implementation function as ctx.outputs.bin .

executable default = False
Whether this rule is considered executable, that is, whether it may be the subject of a blaze run command. See the Rules page for more information.
output_to_genfiles default = False
If true, the files will be generated in the genfiles directory instead of the bin directory. Unless you need it for compatibility with existing rules (eg when generating header files for C++), do not set this flag.
fragments sequence of string s ; default = []
List of names of configuration fragments that the rule requires in target configuration.
host_fragments sequence of string s ; default = []
List of names of configuration fragments that the rule requires in host configuration.
_skylark_testable default = False
(Experimental)

If true, this rule will expose its actions for inspection by rules that depend on it via an Actions provider. The provider is also available to the rule itself by calling ctx.created_actions() .

This should only be used for testing the analysis-time behavior of Starlark rules. This flag may be removed in the future.
toolchains sequence ; default = []
If set, the set of toolchains this rule requires. The list can contain String, Label, or StarlarkToolchainTypeApi objects, in any combination. Toolchains will be found by checking the current platform, and provided to the rule implementation via ctx.toolchain .
incompatible_use_toolchain_transition default = False
Deprecated, this is no longer in use and should be removed.
doc default = ''
A description of the rule that can be extracted by documentation generating tools.
provides default = []
A list of providers that the implementation function must return.

It is an error if the implementation function omits any of the types of providers listed here from its return value. However, the implementation function may return additional providers not listed here.

Each element of the list is an *Info object returned by provider() , except that a legacy provider is represented by its string name instead.

exec_compatible_with sequence of string s ; default = []
A list of constraints on the execution platform that apply to all targets of this rule type.
analysis_test default = False
If true, then this rule is treated as an analysis test.

Note: Analysis test rules are primarily defined using infrastructure provided in core Starlark libraries. See Testing for guidance.

If a rule is defined as an analysis test rule, it becomes allowed to use configuration transitions defined using analysis_test_transition on its attributes, but opts into some restrictions:

  • Targets of this rule are limited in the number of transitive dependencies they may have.
  • The rule is considered a test rule (as if test=True were set). This supersedes the value of test
  • The rule implementation function may not register actions. Instead, it must register a pass/fail result via providing AnalysisTestResultInfo .
build_setting BuildSetting ; or None ; default = None
If set, describes what kind of build setting this rule is. See the config module. If this is set, a mandatory attribute named "build_setting_default" is automatically added to this rule, with a type corresponding to the value passed in here.
cfg default = None
If set, points to the configuration transition the rule will apply to its own configuration before analysis.
exec_groups dict ; or None ; default = None
Dict of execution group name (string) to exec_group s . If set, allows rules to run actions on multiple execution platforms within a single target. See execution groups documentation for more info.
compile_one_filetype sequence of string s; or None ; default = None
Used by --compile_one_dependency: if multiple rules consume the specified file, should we choose this rule over others.
name string ; or None ; default = None
Deprecated: do not use.

The name of this rule, as understood by Bazel and reported in contexts such as logging, native.existing_rule(...)[kind] , and bazel query . Usually this is the same as the Starlark identifier that gets bound to this rule; for instance a rule called foo_library would typically be declared as foo_library = rule(...) and instantiated in a BUILD file as foo_library(...) .

If this parameter is omitted, the rule's name is set to the name of the first Starlark global variable to be bound to this rule within its declaring .bzl module. Thus, foo_library = rule(...) need not specify this parameter if the name is foo_library .

Specifying an explicit name for a rule does not change where you are allowed to instantiate the rule.

select

unknown select(x, no_match_error='')

select() is the helper function that makes a rule attribute configurable . See build encyclopedia for details.

Parameters

Parameter Description
x required
A dict that maps configuration conditions to values. Each key is a Label or a label string that identifies a config_setting or constraint_value instance. See the documentation on macros for when to use a Label instead of a string.
no_match_error default = ''
Optional custom error to report if no condition matches.

single_version_override

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

Specifies that a dependency should still come from a registry, but its version should be pinned, or its registry overridden, or a list of patches applied. This directive can only be used by the root module; in other words, if a module specifies any overrides, it cannot be used as a dependency by others.

Parameters

Parameter Description
module_name required
The name of the Bazel module dependency to apply this override to.
version default = ''
Overrides the declared version of this module in the dependency graph. In other words, this module will be "pinned" to this override version. This attribute can be omitted if all one wants to override is the registry or the patches.
registry default = ''
Overrides the registry for this module; instead of finding this module from the default list of registries, the given registry should be used.
patches Iterable of string s ; default = []
A list of labels pointing to patch files to apply for this module. The patch files must exist in the source tree of the top level project. They are applied in the list order.
patch_strip default = 0
Same as the --strip argument of Unix patch.

sorted

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

Returns a new sorted list containing all the elements of the supplied iterable sequence. An error may occur if any pair of elements x, y may not be compared using x < y. The elements are sorted into ascending order, unless the reverse argument is True, in which case the order is descending. Sorting is stable: elements that compare equal retain their original relative order.
sorted([3, 5, 4]) == [3, 4, 5]

Parameters

Parameter Description
iterable required
The iterable sequence to sort.
key default = None
An optional function applied to each element before comparison.
reverse default = False
Return results in descending order.

str

string str(x)

Converts any object to string. This is useful for debugging.
str("ab") == "ab"
str(8) == "8"

Parameters

Parameter Description
x required
The object to convert.

tag_class

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

Creates a new tag_class object, which defines an attribute schema for a class of tags, which are data objects usable by a module extension.

Parameters

Parameter Description
attrs default = {}
A dictionary to declare all the attributes of this tag class. It maps from an attribute name to an attribute object (see attr module).
doc default = ''
A description of the tag class that can be extracted by documentation generating tools.

tuple

tuple tuple(x=())

Returns a tuple with the same elements as the given iterable value.
tuple([1, 2]) == (1, 2)
tuple((2, 3, 2)) == (2, 3, 2)
tuple({5: "a", 2: "b", 4: "c"}) == (5, 2, 4)

Parameters

Parameter Description
x default = ()
The object to convert.

type

string type(x)

Returns the type name of its argument. This is useful for debugging and type-checking. Examples:
type(2) == "int"
type([1]) == "list"
type(struct(a = 2)) == "struct"
This function might change in the future. To write Python-compatible code and be future-proof, use it only to compare return values:
if type(x) == type([]):  # if x is a list

Parameters

Parameter Description
x required
The object to check type of.

use_extension

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

Returns a proxy object representing a module extension; its methods can be invoked to create module extension tags.

Parameters

Parameter Description
extension_bzl_file required
A label to the Starlark file defining the module extension.
extension_name required
The name of the module extension to use. A symbol with this name must be exported by the Starlark file.
dev_dependency default = False
If true, this usage of the module extension will be ignored if the current module is not the root module or `--ignore_dev_dependency` is enabled.

use_repo

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

Imports one or more repos generated by the given module extension into the scope of the current module.

Parameters

Parameter Description
extension_proxy required
A module extension proxy object returned by a use_extension call.
args required
The names of the repos to import.
kwargs required
Specifies certain repos to import into the scope of the current module with different names. The keys should be the name to use in the current scope, whereas the values should be the original names exported by the module extension.

visibility

None visibility(value)

(Experimental; enabled by --experimental_bzl_visibility . This feature's API may change. Only packages that appear in --experimental_bzl_visibility_allowlist are permitted to call this function. Known issue: This feature currently may not work under bzlmod.)

Sets the bzl-visibility of the .bzl module currently being initialized.

The bzl-visibility of a .bzl module (not to be confused with target visibility) governs whether or not a load() of that .bzl is permitted from within the BUILD and .bzl files of a particular package. Allowed values include:

  • "public" (default) : the .bzl can be loaded anywhere.
  • "private" : the .bzl can only be loaded by files in the same package (subpackages are excluded).
  • a list of package specifications (eg ["//pkg1","//pkg2/subpkg/..."] ): the .bzl can be loaded by files in any package matching one of the listed specifications. Package specifications may be package paths, or package paths with a trailing "/..." to include all subpackages; negated patterns are not currently supported. All package specifications are within the current repository; the "@" syntax is disallowed.

Generally, visibility() is called at the top of the .bzl file, immediately after its load() statements. (It is poor style to put this declaration later in the file or in a helper method.) It may not be called more than once per .bzl, or after the .bzl's top-level code has finished executing.

Note that a .bzl module having a public bzl-visibility does not necessarily imply that its corresponding file target has public visibility. This means that it's possible to be able to load() a .bzl file without being able to depend on it in a filegroup or other target.

Parameters

Parameter Description
value required
The bzl-visibility level to set. May be "public" , "private" , or a list of packages.

workspace

None workspace(name)

This function can only be used in a WORKSPACE file and must be declared before all other functions in the WORKSPACE file. Each WORKSPACE file should have a workspace function.

Sets the name for this workspace. Workspace names should be a Java-package-style description of the project, using underscores as separators, eg, github.com/bazelbuild/bazel should use com_github_bazelbuild_bazel.

This name is used for the directory that the repository's runfiles are stored in. For example, if there is a runfile foo/bar in the local repository and the WORKSPACE file contains workspace(name = 'baz') , then the runfile will be available under mytarget.runfiles/baz/foo/bar . If no workspace name is specified, then the runfile will be symlinked to bar.runfiles/foo/bar .

Remote repository rule names must be valid workspace names. For example, you could have maven_jar(name = 'foo') , but not maven_jar(name = 'foo%bar') , as Bazel would attempt to write a WORKSPACE file for the maven_jar containing workspace(name = 'foo%bar') .

Parameters

Parameter Description
name required
the name of the workspace. Names must start with a letter and can only contain letters, numbers, underscores, dashes, and dots.

zip

list zip(*args)

Returns a list of tuple s, where the i-th tuple contains the i-th element from each of the argument sequences or iterables. The list has the size of the shortest input. With a single iterable argument, it returns a list of 1-tuples. With no arguments, it returns an empty list. Examples:
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)]

Parameters

Parameter Description
args required
lists to zip.