<commit_before><?xml version="1.0"?>
<xs:schema 
 targetNamespace="urn:X-fi-uta-sis-fire:qs-config" 
 xmlns:config="urn:X-fi-uta-sis-fire:qs-config"
 xmlns:xs="http://www.w3.org/2001/XMLSchema" >

 <!-- Root element -->
 <xs:element name="qsconf">
  <xs:complexType>
   <xs:all>
    <xs:element name="files" type="config:files" form="qualified" />
    <xs:element name="sessions" type="config:sessions" form="qualified" />
    <xs:element name="defaults" type="config:defaults" form="qualified" />
    <xs:element name="options" type="config:options" form="qualified" minOccurs="0" />
    <xs:element name="runs" type="config:runs" form="qualified" minOccurs="0" />
   </xs:all>
  </xs:complexType>
  
  <xs:key name="session-id">
   <xs:selector xpath="config:sessions/config:session" />
   <xs:field xpath="@id" />
  </xs:key>
  
  <xs:unique name="gain-relevance-level">
   <xs:selector xpath="config:defaults/config:gains/config:gain" />
   <xs:field xpath="@relevance-level" />
  </xs:unique>
     
 </xs:element>

 <!-- TODO: move to external file, since this is used in both config and qsdl -->
 <xs:simpleType name="probability-value-direct">
  <xs:restriction base="xs:decimal">
   <xs:minInclusive value="0.0" />
   <xs:maxInclusive value="1.0" />
  </xs:restriction>
 </xs:simpleType>

 <!-- TODO: move to external file, since this is used in both config and qsdl -->
 <xs:simpleType name="probability-value-variable">
  <xs:restriction base="xs:string">
   <xs:pattern value="\$[A-Za-z0-9]+" />
  </xs:restriction>
 </xs:simpleType>

 <xs:complexType name="runs">
  <xs:sequence>
   <xs:element name="run" minOccurs="1" maxOccurs="unbounded" form="qualified">
    <xs:complexType>
     <xs:sequence>
      <xs:element name="probability" minOccurs="0" maxOccurs="unbounded" form="qualified">
       <xs:complexType>
        <xs:simpleContent>
         <xs:extension base="config:probability-value-direct">
          <xs:attribute name="name" type="config:probability-value-variable" use="required" />
         </xs:extension>
        </xs:simpleContent>
       </xs:complexType>
      </xs:element>
     </xs:sequence>
    </xs:complexType>
   </xs:element>
  </xs:sequence>
 </xs:complexType>
 
 <xs:complexType name="files">
  <xs:sequence>
   <xs:element name="input-directory" type="xs:string" minOccurs="0" maxOccurs="1" form="qualified" />
   <xs:element name="relevance-file" type="config:relevance-file" minOccurs="1" maxOccurs="unbounded" form="qualified" />
   <xs:element name="simulation" type="xs:string" form="qualified" />
   <xs:element name="condition-callbacks" default="customConditionCallbacks.py" minOccurs="0" type="xs:string" form="qualified" />
   <xs:element name="cost-callbacks" default="customCostCallbacks.py" minOccurs="0" type="xs:string" form="qualified" />
   <xs:element name="decay-callbacks" default="customDecayCallbacks.py" minOccurs="0" type="xs:string" form="qualified" /><commit_msg>Force run definition to have an id for the run<commit_after><?xml version="1.0"?>
<xs:schema 
 targetNamespace="urn:X-fi-uta-sis-fire:qs-config" 
 xmlns:config="urn:X-fi-uta-sis-fire:qs-config"
 xmlns:xs="http://www.w3.org/2001/XMLSchema" >

 <!-- Root element -->
 <xs:element name="qsconf">
  <xs:complexType>
   <xs:all>
    <xs:element name="files" type="config:files" form="qualified" />
    <xs:element name="sessions" type="config:sessions" form="qualified" />
    <xs:element name="defaults" type="config:defaults" form="qualified" />
    <xs:element name="options" type="config:options" form="qualified" minOccurs="0" />
    <xs:element name="runs" type="config:runs" form="qualified" minOccurs="0" />
   </xs:all>
  </xs:complexType>
  
  <xs:key name="session-id">
   <xs:selector xpath="config:sessions/config:session" />
   <xs:field xpath="@id" />
  </xs:key>
  
  <xs:unique name="gain-relevance-level">
   <xs:selector xpath="config:defaults/config:gains/config:gain" />
   <xs:field xpath="@relevance-level" />
  </xs:unique>
     
 </xs:element>

 <!-- TODO: move to external file, since this is used in both config and qsdl -->
 <xs:simpleType name="probability-value-direct">
  <xs:restriction base="xs:decimal">
   <xs:minInclusive value="0.0" />
   <xs:maxInclusive value="1.0" />
  </xs:restriction>
 </xs:simpleType>

 <!-- TODO: move to external file, since this is used in both config and qsdl -->
 <xs:simpleType name="probability-value-variable">
  <xs:restriction base="xs:string">
   <xs:pattern value="\$[A-Za-z0-9]+" />
  </xs:restriction>
 </xs:simpleType>

 <xs:complexType name="runs">
  <xs:sequence>
   <xs:element name="run" minOccurs="1" maxOccurs="unbounded" form="qualified">
    <xs:complexType>
     <xs:sequence>
      <xs:element name="probability" minOccurs="0" maxOccurs="unbounded" form="qualified">
       <xs:complexType>
        <xs:simpleContent>
         <xs:extension base="config:probability-value-direct">
          <xs:attribute name="name" type="config:probability-value-variable" use="required" />
         </xs:extension>
        </xs:simpleContent>
       </xs:complexType>
      </xs:element>
     </xs:sequence>
     <xs:attribute name="id" use="required" type="xs:string" />
    </xs:complexType>
   </xs:element>
  </xs:sequence>
 </xs:complexType>
 
 <xs:complexType name="files">
  <xs:sequence>
   <xs:element name="input-directory" type="xs:string" minOccurs="0" maxOccurs="1" form="qualified" />
   <xs:element name="relevance-file" type="config:relevance-file" minOccurs="1" maxOccurs="unbounded" form="qualified" />
   <xs:element name="simulation" type="xs:string" form="qualified" />
   <xs:element name="condition-callbacks" default="customConditionCallbacks.py" minOccurs="0" type="xs:string" form="qualified" />
   <xs:element name="cost-callbacks" default="customCostCallbacks.py" minOccurs="0" type="xs:string" form="qualified" />
   <xs:element name="decay-callbacks" default="customDecayCallbacks.py" minOccurs="0" type="xs:string" form="qualified" />
{'fraction_non_alphanumeric': 0.18803418803418803, 'fraction_numerical': 0.0077090665325959444, 'mean_word_length': 4.766183574879227, 'pattern_counts': {'":': 0, '<': 128, '<?xml version=': 2, '>': 128, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 6}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2948728', 'n_tokens_mistral': 2105, 'n_tokens_neox': 2017, 'n_words': 345}