سؤال

وأنا باستخدام YAML كتنسيق ملف التكوين لمشروع بيثون.

أن يكون مدقق مخطط الوحيدة المتاحة لبيثون وYAML

ومؤخرا وجدت آر إكس . : - / Kwalify يعمل مع YAML، ولكن هذا فقط لروبي وجافا. : (

ولقد تم قراءة الوثائق تفتقر لها كل يوم، وفقط لا يمكن أن يبدو لكتابة مخطط صالح لتمثيل بنية الملف الخاص بي. مساعدة؟

ولدي ملف YAML التكوين التالية:

cmd:
  exec: mycmd
  aliases: [my, cmd]
  filter:
    sms: 'regex .*'

load:
  exec: load
  filter:
    sms: 'load: .*$'

echo:
  exec: echo %

وأنا فشله في تمثل بنية متداخلة. ما أريده هو العنصر الخارجي الأكثر (كمد، تحميل وصدى، في هذه الحالة) لتكون سلسلة التعسفية وهذا بدوره يحتوي على عناصر أخرى. 'التنفيذي' هو سلسلة الثابتة واللازمة البند؛ أيضا تم إصلاحها "أسماء مستعارة" و "فلتر"، ولكن ينبغي أن يكون اختياريا. مرشح بدوره لديه مجموعة أخرى من العناصر المطلوبة والاختيارية. كيف ينبغي أن يمثل هذا مع آر إكس؟

وحتى الآن لدي المخطط التالي (في YAML)، الذي فشل آر إكس لتجميع:

type: //rec
required:
  type: //rec
  required:
    exec: //str
  optional:
    aliases:
      type: //arr
      contents: //str
      length: {min: 1, max: 10}
    filter:
      type: //rec
      optional:
        sms: //str
        email: //str
        all: //str

واختبار هذا في IPython يعطيني هذا:

/Rx.py in make_schema(self, schema)
     68       raise Error('invalid schema argument to make_schema')
     69
---> 70     uri = self.expand_uri(schema["type"])
     71
     72     if not self.type_registry.get(uri): raise "unknown type %s" % uri

KeyError: 'type'

والذي يقودني إلى الاعتقاد أنا لا تحديد "نوع" في مكان ما. : -S

وأي أفكار؟

وأنا متعب جدا القتال مع هذا الشيء ... هل هناك طريقة أخرى أستطيع أن أكتب مخطط واستخدامه للتحقق من صحة ملفات التكوين الخاصة بي؟

ويرجع الفضل في ذلك مسبقا،

وايفان

هل كانت مفيدة؟

المحلول

وجرب هذا:

type: //map
values:
  type: //rec
  required:
    exec: //str
  optional:
    aliases:
      type: //arr
      contents: //str
      length: {min: 1, max: 10}
    filter:
      type: //rec
      optional:
        sms: //str
        email: //str
        all: //str

وخريطة يمكن أن تحتوي على أي سلسلة كمفتاح، في حين أن تفصيل يمكن أن تحتوي فقط على المفاتيح المحددة في "مطلوب" و "اختياري".

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top