Cara menggunakan pydantic untuk mengurai kunci. pasangan nilai yang berisi daftar atau kunci lainnya. pasangan nilai di bidang "nilai"?
Mengambil { 'key1': 'value1', 'key2': '2', 'key3': 'value 3' }_1 pasangan dari input cli arg dan menginisialisasi konteks dengan kamus di mana setiap pasangan menjadi elemen kamus
ketentuan
$ pypyr my-pipeline key1=value1 key2=2 key3="value 3" _ _
Ini akan mengurai ke konteks seperti ini
{ 'key1': 'value1', 'key2': '2', 'key3': 'value 3' }
Keluar dari ruang literal dengan tanda kutip tunggal atau ganda
Argumen apa pun tanpa { 'key1': 'value1', 'key2': '2', 'key3': 'value 3' }_2 akan diuraikan menjadi { 'key1': 'value1', 'key2': '2', 'key3': 'value 3' }3
ketentuan
$ pypyr my-pipeline arg0 key1=value1 key2=2 key3="value 3" _
Ini akan mengurai ke konteks seperti ini
{ 'arg0': '', 'key1': 'value1', 'key2': '2', 'key3': 'value 3' }_
karakter spesial
Perhatikan bahwa Anda dapat memiliki kunci dan nilai dengan spasi menggunakan tanda kutip tunggal atau ganda. Jika Anda perlu menghindari tanda kutip, lihat dokumentasi shell Anda untuk karakter melarikan diri
ketentuan
$ pypyr my-pipeline param1=value1 param2='value 2' "param 3"=123 {'param1': 'value1', 'param2': 'value 2', 'param 3': '123'}
Meskipun Anda dapat memiliki spasi dan karakter khusus seperti tanda baca di kunci Anda (seperti "param 3" di atas), untuk kehidupan yang mudah Anda mungkin ingin menghindarinya.
Alasannya adalah ketika Anda ingin mereferensikan kunci konteks Anda dalam {memformat ekspresi} atau variabel dalam ekspresi string py atau dalam pypyr. Langkah. langkah py Anda akan mengalami masalah - jadi yang terbaik adalah tetap menggunakan kunci yang merupakan pengidentifikasi Python yang valid
Sederhananya, tidak memiliki tanda baca selain { 'key1': 'value1', 'key2': '2', 'key3': 'value 3' }4 di kunci Anda kecuali Anda benar-benar yakin Anda bersedia hidup dengan efek samping
Meskipun Anda mungkin ingin menyimpan kunci Anda sebebas mungkin dari karakter khusus, nilainya bisa apa pun yang Anda inginkan
ketentuan
$ pypyr my-pipeline key1='value !@£$%^&' key_2=nothing_special _ _
Akan menginisialisasi konteks seperti ini
{ 'key1': 'value !@£$%^&', 'key_2': 'nothing_special' }
Saat mem-parsing pasangan kunci=nilai, pypyr hanya menganggap { 'key1': 'value1', 'key2': '2', 'key3': 'value 3' }2 pertama sebagai menandai kunci, { 'key1': 'value1', 'key2': '2', 'key3': 'value 3' }2 berikutnya dalam arg yang sama akan dianggap sebagai bagian dari nilai
ketentuan
$ pypyr my-pipeline k1=one+two=three k2=arb _
Akan menghasilkan
{ 'k1': 'one+two=three', 'k2': 'arb' }
contoh
Diberi saluran pipa seperti ini, disimpan secara sewenang-wenang sebagai { 'key1': 'value1', 'key2': '2', 'key3': 'value 3' }7
# ./keyvaluepairs-parser.yaml context_parser: pypyr.parser.keyvaluepairs steps: - pypyr.steps.debug # prints at log level <=20
Anda kemudian dapat meneruskan key-value pair dari cli ke pipeline untuk menginisialisasi konteks. Perhatikan bahwa Anda dapat memiliki kunci dan nilai dengan spasi menggunakan tanda kutip tunggal atau ganda