udtools 0.2.4__tar.gz → 0.2.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. udtools-0.2.5/MANIFEST.in +1 -0
  2. {udtools-0.2.4 → udtools-0.2.5}/PKG-INFO +1 -1
  3. {udtools-0.2.4 → udtools-0.2.5}/pyproject.toml +3 -2
  4. {udtools-0.2.4 → udtools-0.2.5}/src/udtools/__init__.py +1 -1
  5. {udtools-0.2.4 → udtools-0.2.5}/src/udtools/cli.py +16 -1
  6. {udtools-0.2.4 → udtools-0.2.5}/src/udtools/data/feats.json +1 -1
  7. {udtools-0.2.4 → udtools-0.2.5}/src/udtools/incident.py +1 -2
  8. {udtools-0.2.4 → udtools-0.2.5}/src/udtools/state.py +24 -0
  9. {udtools-0.2.4 → udtools-0.2.5}/src/udtools/utils.py +1 -3
  10. {udtools-0.2.4 → udtools-0.2.5}/src/udtools/validator.py +1 -1
  11. {udtools-0.2.4 → udtools-0.2.5}/src/udtools.egg-info/PKG-INFO +1 -1
  12. udtools-0.2.5/src/udtools.egg-info/SOURCES.txt +144 -0
  13. udtools-0.2.5/src/udtools.egg-info/entry_points.txt +3 -0
  14. udtools-0.2.5/tests/test-cases/README.md +5 -0
  15. udtools-0.2.5/tests/test-cases/eval/cs_pud-gold.conllu +25064 -0
  16. udtools-0.2.5/tests/test-cases/eval/cs_pud-plain.txt +1928 -0
  17. udtools-0.2.5/tests/test-cases/eval/cs_pud-udpipe-pdtc-ud-2.17-251125.conllu +22129 -0
  18. udtools-0.2.5/tests/test-cases/eval/eval.txt +17 -0
  19. udtools-0.2.5/tests/test-cases/invalid-functions/columns-format-minimal.conllu +5 -0
  20. udtools-0.2.5/tests/test-cases/invalid-functions/columns-format.conllu +24 -0
  21. udtools-0.2.5/tests/test-cases/invalid-functions/extra-empty-line.conllu +13 -0
  22. udtools-0.2.5/tests/test-cases/invalid-functions/invalid-line.conllu +24 -0
  23. udtools-0.2.5/tests/test-cases/invalid-functions/invalid-word-id.conllu +5 -0
  24. udtools-0.2.5/tests/test-cases/invalid-functions/invalid-word-interval.conllu +11 -0
  25. udtools-0.2.5/tests/test-cases/invalid-functions/misplaced-comment.conllu +24 -0
  26. udtools-0.2.5/tests/test-cases/invalid-functions/misplaced-empty-node-2.conllu +13 -0
  27. udtools-0.2.5/tests/test-cases/invalid-functions/misplaced-empty-node.conllu +12 -0
  28. udtools-0.2.5/tests/test-cases/invalid-functions/misplaced-word-interval.conllu +12 -0
  29. udtools-0.2.5/tests/test-cases/invalid-functions/multiple-sent-id.conllu +24 -0
  30. udtools-0.2.5/tests/test-cases/invalid-functions/mwt-nonempty-2.conllu +7 -0
  31. udtools-0.2.5/tests/test-cases/invalid-functions/mwt-nonempty-field.conllu +12 -0
  32. udtools-0.2.5/tests/test-cases/invalid-functions/non-unix-newline.conllu +23 -0
  33. udtools-0.2.5/tests/test-cases/invalid-functions/overlapping-word-interval.conllu +12 -0
  34. udtools-0.2.5/tests/test-cases/invalid-functions/pseudo-empty-line.conllu +11 -0
  35. udtools-0.2.5/tests/test-cases/invalid-functions/reversed-word-interval.conllu +11 -0
  36. udtools-0.2.5/tests/test-cases/invalid-functions/unicode-normalization.conllu +9 -0
  37. udtools-0.2.5/tests/test-cases/invalid-functions/word-id-sequence-2.conllu +6 -0
  38. udtools-0.2.5/tests/test-cases/invalid-functions/word-id-sequence.conllu +6 -0
  39. udtools-0.2.5/tests/test-cases/invalid-level1-2/ambiguous-feature.conllu +5 -0
  40. udtools-0.2.5/tests/test-cases/invalid-level1-2/cyclic-deps.conllu +7 -0
  41. udtools-0.2.5/tests/test-cases/invalid-level1-2/deprel-not-empty-in-empty.conllu +7 -0
  42. udtools-0.2.5/tests/test-cases/invalid-level1-2/dos-newlines.conllu +23 -0
  43. udtools-0.2.5/tests/test-cases/invalid-level1-2/duplicate-feature.conllu +5 -0
  44. udtools-0.2.5/tests/test-cases/invalid-level1-2/duplicate-id.conllu +6 -0
  45. udtools-0.2.5/tests/test-cases/invalid-level1-2/duplicate-layered-feature.conllu +5 -0
  46. udtools-0.2.5/tests/test-cases/invalid-level1-2/duplicate-value.conllu +5 -0
  47. udtools-0.2.5/tests/test-cases/invalid-level1-2/empty-field.conllu +5 -0
  48. udtools-0.2.5/tests/test-cases/invalid-level1-2/empty-head.conllu +5 -0
  49. udtools-0.2.5/tests/test-cases/invalid-level1-2/empty-sentence.conllu +8 -0
  50. udtools-0.2.5/tests/test-cases/invalid-level1-2/extra-empty-line.conllu +12 -0
  51. udtools-0.2.5/tests/test-cases/invalid-level1-2/extra-field.conllu +5 -0
  52. udtools-0.2.5/tests/test-cases/invalid-level1-2/head-0-deprel-not-root.conllu +5 -0
  53. udtools-0.2.5/tests/test-cases/invalid-level1-2/head-not-0-deprel-root.conllu +6 -0
  54. udtools-0.2.5/tests/test-cases/invalid-level1-2/head-not-empty-in-empty.conllu +7 -0
  55. udtools-0.2.5/tests/test-cases/invalid-level1-2/id-starting-from-2.conllu +10 -0
  56. udtools-0.2.5/tests/test-cases/invalid-level1-2/id-with-extra-0.conllu +5 -0
  57. udtools-0.2.5/tests/test-cases/invalid-level1-2/invalid-deps-id.conllu +6 -0
  58. udtools-0.2.5/tests/test-cases/invalid-level1-2/invalid-deps-order.conllu +10 -0
  59. udtools-0.2.5/tests/test-cases/invalid-level1-2/invalid-deps-syntax.conllu +6 -0
  60. udtools-0.2.5/tests/test-cases/invalid-level1-2/invalid-head.conllu +6 -0
  61. udtools-0.2.5/tests/test-cases/invalid-level1-2/invalid-range-format.conllu +11 -0
  62. udtools-0.2.5/tests/test-cases/invalid-level1-2/invalid-range.conllu +11 -0
  63. udtools-0.2.5/tests/test-cases/invalid-level1-2/lowercase-feature-in-empty.conllu +7 -0
  64. udtools-0.2.5/tests/test-cases/invalid-level1-2/lowercase-feature-value-in-empty.conllu +7 -0
  65. udtools-0.2.5/tests/test-cases/invalid-level1-2/lowercase-feature.conllu +6 -0
  66. udtools-0.2.5/tests/test-cases/invalid-level1-2/lowercase-postag-in-empty.conllu +7 -0
  67. udtools-0.2.5/tests/test-cases/invalid-level1-2/lowercase-postag.conllu +5 -0
  68. udtools-0.2.5/tests/test-cases/invalid-level1-2/lowercase-value.conllu +6 -0
  69. udtools-0.2.5/tests/test-cases/invalid-level1-2/malformed_deps.conllu +23 -0
  70. udtools-0.2.5/tests/test-cases/invalid-level1-2/misindexed-empty-node.conllu +7 -0
  71. udtools-0.2.5/tests/test-cases/invalid-level1-2/misordered-feature.conllu +6 -0
  72. udtools-0.2.5/tests/test-cases/invalid-level1-2/misordered-layered-feature.conllu +6 -0
  73. udtools-0.2.5/tests/test-cases/invalid-level1-2/misordered-multiword.conllu +12 -0
  74. udtools-0.2.5/tests/test-cases/invalid-level1-2/misplaced-comment-end.conllu +13 -0
  75. udtools-0.2.5/tests/test-cases/invalid-level1-2/misplaced-comment-mid.conllu +12 -0
  76. udtools-0.2.5/tests/test-cases/invalid-level1-2/misplaced-range.conllu +10 -0
  77. udtools-0.2.5/tests/test-cases/invalid-level1-2/missing-final-line.conllu +4 -0
  78. udtools-0.2.5/tests/test-cases/invalid-level1-2/missing-space-after.conllu +6 -0
  79. udtools-0.2.5/tests/test-cases/invalid-level1-2/multiple-sent_id.conllu +24 -0
  80. udtools-0.2.5/tests/test-cases/invalid-level1-2/multiple_roots.conllu +5 -0
  81. udtools-0.2.5/tests/test-cases/invalid-level1-2/multiword-with-pos.conllu +12 -0
  82. udtools-0.2.5/tests/test-cases/invalid-level1-2/nan-id.conllu +10 -0
  83. udtools-0.2.5/tests/test-cases/invalid-level1-2/no-sent_id.conllu +22 -0
  84. udtools-0.2.5/tests/test-cases/invalid-level1-2/nonsequential-empty-node-id.conllu +7 -0
  85. udtools-0.2.5/tests/test-cases/invalid-level1-2/nonsequential-id.conllu +6 -0
  86. udtools-0.2.5/tests/test-cases/invalid-level1-2/out-of-bounds-range.conllu +10 -0
  87. udtools-0.2.5/tests/test-cases/invalid-level1-2/overlapping-multiword.conllu +12 -0
  88. udtools-0.2.5/tests/test-cases/invalid-level1-2/overlapping-range.conllu +12 -0
  89. udtools-0.2.5/tests/test-cases/invalid-level1-2/parallel-id.conllu +351 -0
  90. udtools-0.2.5/tests/test-cases/invalid-level1-2/seemingly-empty-line.conllu +9 -0
  91. udtools-0.2.5/tests/test-cases/invalid-level1-2/self-cycle-deps.conllu +6 -0
  92. udtools-0.2.5/tests/test-cases/invalid-level1-2/self-cycle-head.conllu +6 -0
  93. udtools-0.2.5/tests/test-cases/invalid-level1-2/space-in-field.conllu +5 -0
  94. udtools-0.2.5/tests/test-cases/invalid-level1-2/tanl-broken.conllu +24 -0
  95. udtools-0.2.5/tests/test-cases/invalid-level1-2/token_with_cols_filled.conllu +11 -0
  96. udtools-0.2.5/tests/test-cases/invalid-level1-2/trailing-tab.conllu +5 -0
  97. udtools-0.2.5/tests/test-cases/invalid-level1-2/unnormalized-unicode.conllu +9 -0
  98. udtools-0.2.5/tests/test-cases/invalid-level1-2/uppercase-deprel.conllu +6 -0
  99. udtools-0.2.5/tests/test-cases/invalid-level1-2/uppercase-deps-deprel.conllu +6 -0
  100. udtools-0.2.5/tests/test-cases/invalid-level3/nmod-obl.conllu +8 -0
  101. udtools-0.2.5/tests/test-cases/invalid-level3/non-proj.conllu +8 -0
  102. udtools-0.2.5/tests/test-cases/invalid-level3/rel-upos.conllu +275 -0
  103. udtools-0.2.5/tests/test-cases/invalid-level3/right-to-left.conllu +69 -0
  104. udtools-0.2.5/tests/test-cases/invalid-level3/too-many-objects.conllu +10 -0
  105. udtools-0.2.5/tests/test-cases/invalid-level3/too-many-subjects.conllu +55 -0
  106. udtools-0.2.5/tests/test-cases/invalid-level4-5/cs_pud-ud-test.conllu +50 -0
  107. udtools-0.2.5/tests/test-cases/invalid-level4-5/yrl_complin-mwt-typo-yes.conllu +30 -0
  108. udtools-0.2.5/tests/test-cases/test.bat +59 -0
  109. udtools-0.2.5/tests/test-cases/test.log +784 -0
  110. udtools-0.2.5/tests/test-cases/valid/empty-file.conllu +0 -0
  111. udtools-0.2.5/tests/test-cases/valid/empty-nodes.conllu +10 -0
  112. udtools-0.2.5/tests/test-cases/valid/layered-features.conllu +6 -0
  113. udtools-0.2.5/tests/test-cases/valid/maximal-empty-node.conllu +7 -0
  114. udtools-0.2.5/tests/test-cases/valid/minimal-empty-node.conllu +7 -0
  115. udtools-0.2.5/tests/test-cases/valid/multiple-features.conllu +6 -0
  116. udtools-0.2.5/tests/test-cases/valid/nmod-obl.conllu +9 -0
  117. udtools-0.2.5/tests/test-cases/valid/tanl.conllu +23 -0
  118. udtools-0.2.5/tests/test-cases/valid/whitespace.conllu +7 -0
  119. udtools-0.2.5/tests/test_cases.py +45 -0
  120. udtools-0.2.5/tests/test_checks.py +0 -0
  121. udtools-0.2.5/tests/test_regex.py +224 -0
  122. udtools-0.2.5/tests/test_utils.py +51 -0
  123. udtools-0.2.5/tests/test_validate.py +53 -0
  124. udtools-0.2.4/src/udtools.egg-info/SOURCES.txt +0 -33
  125. udtools-0.2.4/src/udtools.egg-info/entry_points.txt +0 -2
  126. {udtools-0.2.4 → udtools-0.2.5}/LICENSE.txt +0 -0
  127. {udtools-0.2.4 → udtools-0.2.5}/README.md +0 -0
  128. {udtools-0.2.4 → udtools-0.2.5}/setup.cfg +0 -0
  129. {udtools-0.2.4 → udtools-0.2.5}/src/udtools/argparser.py +0 -0
  130. {udtools-0.2.4 → udtools-0.2.5}/src/udtools/data/data.json +0 -0
  131. {udtools-0.2.4 → udtools-0.2.5}/src/udtools/data/deprels.json +0 -0
  132. {udtools-0.2.4 → udtools-0.2.5}/src/udtools/data/docdeps.json +0 -0
  133. {udtools-0.2.4 → udtools-0.2.5}/src/udtools/data/docfeats.json +0 -0
  134. {udtools-0.2.4 → udtools-0.2.5}/src/udtools/data/edeprels.json +0 -0
  135. {udtools-0.2.4 → udtools-0.2.5}/src/udtools/data/tospace.json +0 -0
  136. {udtools-0.2.4 → udtools-0.2.5}/src/udtools/data/udeprels.json +0 -0
  137. {udtools-0.2.4 → udtools-0.2.5}/src/udtools/data/upos.json +0 -0
  138. {udtools-0.2.4 → udtools-0.2.5}/src/udtools/data.py +0 -0
  139. {udtools-0.2.4 → udtools-0.2.5}/src/udtools/level1.py +0 -0
  140. {udtools-0.2.4 → udtools-0.2.5}/src/udtools/level2.py +0 -0
  141. {udtools-0.2.4 → udtools-0.2.5}/src/udtools/level3.py +0 -0
  142. {udtools-0.2.4 → udtools-0.2.5}/src/udtools/level4.py +0 -0
  143. {udtools-0.2.4 → udtools-0.2.5}/src/udtools/level5.py +0 -0
  144. {udtools-0.2.4 → udtools-0.2.5}/src/udtools/level6.py +0 -0
  145. {udtools-0.2.4 → udtools-0.2.5}/src/udtools/udeval.py +0 -0
  146. {udtools-0.2.4 → udtools-0.2.5}/src/udtools.egg-info/dependency_links.txt +0 -0
  147. {udtools-0.2.4 → udtools-0.2.5}/src/udtools.egg-info/requires.txt +0 -0
  148. {udtools-0.2.4 → udtools-0.2.5}/src/udtools.egg-info/top_level.txt +0 -0
@@ -0,0 +1 @@
1
+ recursive-include tests *.*
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: udtools
3
- Version: 0.2.4
3
+ Version: 0.2.5
4
4
  Summary: Python tools for Universal Dependencies
5
5
  Author: Filip Ginter, Sampo Pyysalo, Daniel Zeman, Milan Straka, Martin Popel, Gosse Bouma, John Bauer, Arianna Masciolini, Ludovica Pannitto
6
6
  Maintainer-email: Daniel Zeman <zeman@ufal.mff.cuni.cz>
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "udtools"
7
- version = "0.2.4"
7
+ version = "0.2.5"
8
8
  authors = [
9
9
  { name="Filip Ginter" },
10
10
  { name="Sampo Pyysalo" },
@@ -37,7 +37,8 @@ Homepage = "https://universaldependencies.org/"
37
37
  Issues = "https://github.com/UniversalDependencies/tools/issues"
38
38
 
39
39
  [project.scripts]
40
- udvalidate = "udtools.validate:main"
40
+ udvalidate = "udtools.cli:main"
41
+ udeval = "udtools.cli:main_eval"
41
42
 
42
43
  [tool.setuptools.packages.find]
43
44
  where = ["src"]
@@ -4,7 +4,7 @@ udtools.
4
4
  Python tools for Universal Dependencies.
5
5
  """
6
6
 
7
- __version__ = "0.2.4"
7
+ __version__ = "0.2.5"
8
8
  __author__ = 'Daniel Zeman'
9
9
  __credits__ = 'Universal Dependencies community'
10
10
 
@@ -5,8 +5,9 @@
5
5
  # 2025-08-31: Refactoring by @AngledLuffa
6
6
  # 2025-09: Refactoring by @harisont and @ellepannitto
7
7
  import sys
8
- from udtools.argparser import parse_args_validator
8
+ from udtools.argparser import parse_args_validator, parse_args_scorer
9
9
  from udtools.validator import Validator
10
+ from udtools.udeval import evaluate_wrapper, build_evaluation_table
10
11
 
11
12
 
12
13
 
@@ -29,6 +30,20 @@ def main():
29
30
  else:
30
31
  return 1
31
32
 
33
+
34
+
35
+ def main_eval():
36
+ # Parse arguments
37
+ args = parse_args_scorer()
38
+
39
+ # Evaluate
40
+ evaluation = evaluate_wrapper(args)
41
+ results = build_evaluation_table(evaluation, args.verbose, args.counts, args.enhanced)
42
+ print(results)
43
+ return 0
44
+
45
+
46
+
32
47
  if __name__=="__main__":
33
48
  errcode = main()
34
49
  sys.exit(errcode)
@@ -3692,7 +3692,7 @@
3692
3692
  "Person": {"type": "universal", "doc": "global", "permitted": 1, "errors": [], "uvalues": ["1", "3"], "lvalues": [], "unused_uvalues": ["0", "2", "4"], "unused_lvalues": [], "evalues": [], "byupos": {"AUX": {"1": 1, "3": 1}, "NOUN": {"1": 1, "3": 1}, "PRON": {"1": 1, "3": 1}, "PROPN": {"1": 1, "3": 1}, "VERB": {"1": 1, "3": 1}}, "lastchanged": "2022-11-07-07-40-50", "lastchanger": "sarves"},
3693
3693
  "Polarity": {"type": "universal", "doc": "global", "permitted": 1, "errors": [], "uvalues": ["Neg", "Pos"], "lvalues": [], "unused_uvalues": [], "unused_lvalues": [], "evalues": [], "byupos": {"AUX": {"Neg": 1, "Pos": 1}, "PART": {"Neg": 1, "Pos": 1}}, "lastchanged": "2022-10-27-10-46-29", "lastchanger": "sarves"},
3694
3694
  "Poss": {"type": "universal", "doc": "global", "permitted": 1, "errors": [], "uvalues": ["Yes"], "lvalues": [], "unused_uvalues": [], "unused_lvalues": [], "evalues": [], "byupos": {"NOUN": {"Yes": 1}, "PRON": {"Yes": 1}, "PROPN": {"Yes": 1}}, "lastchanged": "2022-10-26-11-51-54", "lastchanger": "sarves"},
3695
- "PronType": {"type": "universal", "doc": "global", "permitted": 1, "errors": [], "uvalues": ["Dem", "Ind", "Prs", "Rcp"], "lvalues": [], "unused_uvalues": ["Art", "Emp", "Exc", "Int", "Neg", "Rel", "Tot"], "unused_lvalues": [], "evalues": [], "byupos": {"PRON": {"Dem": 1, "Ind": 1, "Prs": 1, "Rcp": 1}}, "lastchanged": "2022-11-07-08-31-14", "lastchanger": "sarves"},
3695
+ "PronType": {"type": "universal", "doc": "global", "permitted": 1, "errors": [], "uvalues": ["Art", "Dem", "Ind", "Int", "Prs", "Rcp", "Rel"], "lvalues": [], "unused_uvalues": ["Emp", "Exc", "Neg", "Tot"], "unused_lvalues": [], "evalues": [], "byupos": {"DET": {"Art": 1, "Dem": 1, "Ind": 1}, "PRON": {"Dem": 1, "Ind": 1, "Int": 1, "Prs": 1, "Rcp": 1, "Rel": 1}}, "lastchanged": "2025-12-11-15-04-10", "lastchanger": "rahonalab"},
3696
3696
  "Tense": {"type": "universal", "doc": "global", "permitted": 1, "errors": [], "uvalues": ["Fut", "Past", "Pres"], "lvalues": [], "unused_uvalues": ["Imp", "Pqp"], "unused_lvalues": [], "evalues": [], "byupos": {"AUX": {"Fut": 1, "Past": 1, "Pres": 1}, "VERB": {"Fut": 1, "Past": 1, "Pres": 1}}, "lastchanged": "2022-10-25-19-30-06", "lastchanger": "sarves"},
3697
3697
  "Typo": {"type": "universal", "doc": "global", "permitted": 1, "errors": [], "uvalues": ["Yes"], "lvalues": [], "unused_uvalues": [], "unused_lvalues": [], "evalues": [], "byupos": {"ADJ": {"Yes": 1}, "ADP": {"Yes": 1}, "ADV": {"Yes": 1}, "AUX": {"Yes": 1}, "CCONJ": {"Yes": 1}, "DET": {"Yes": 1}, "INTJ": {"Yes": 1}, "NOUN": {"Yes": 1}, "NUM": {"Yes": 1}, "PART": {"Yes": 1}, "PRON": {"Yes": 1}, "PUNCT": {"Yes": 1}, "SCONJ": {"Yes": 1}, "SYM": {"Yes": 1}, "VERB": {"Yes": 1}}, "lastchanged": "2022-11-07-07-46-09", "lastchanger": "sarves"},
3698
3698
  "VerbForm": {"type": "universal", "doc": "global", "permitted": 1, "errors": [], "uvalues": ["Conv", "Fin", "Ger", "Inf", "Part", "Vnoun"], "lvalues": [], "unused_uvalues": ["Gdv", "Sup"], "unused_lvalues": [], "evalues": [], "byupos": {"AUX": {"Conv": 1, "Fin": 1, "Part": 1}, "NOUN": {"Ger": 1, "Vnoun": 1}, "VERB": {"Conv": 1, "Fin": 1, "Ger": 1, "Inf": 1, "Part": 1}}, "lastchanged": "2022-11-07-08-01-30", "lastchanger": "sarves"},
@@ -1,4 +1,3 @@
1
- import os
2
1
  from dataclasses import dataclass
3
2
  from enum import Enum
4
3
  from json import JSONEncoder
@@ -103,7 +102,7 @@ class Incident:
103
102
  self.explanation = explanation
104
103
  # File name. The default is the file from which we are reading right
105
104
  # now ('-' if reading from STDIN).
106
- self.filename = 'STDIN' if state.current_file_name == '-' else os.path.basename(state.current_file_name) if state.current_file_name else 'NONE'
105
+ self.filename = state.get_current_file_name()
107
106
  # Line number. The default is the most recently read line as recorded
108
107
  # in the state; but in most cases we need to get the number
109
108
  # during instantiation, as the most recently read line is the last line
@@ -1,3 +1,4 @@
1
+ import os
1
2
  from collections import defaultdict
2
3
  # Allow using this module from the root folder of tools even if it is not
3
4
  # installed as a package: use the relative path validator/src/validator for
@@ -121,6 +122,27 @@ class State:
121
122
  # Key: [eid][sentid][str(mention_span)]; value: set of node ids.
122
123
  self.entity_mention_spans = {}
123
124
 
125
+
126
+ def get_current_file_name(self):
127
+ """
128
+ Returns the current file name in the form suitable for Incident objects
129
+ and their string reports (i.e., 'STDIN' instead of '-', basename for
130
+ paths, 'NONE' otherwise).
131
+
132
+ Returns
133
+ -------
134
+ str
135
+ The modified name of the current input file.
136
+ """
137
+ if self.current_file_name:
138
+ if self.current_file_name == '-':
139
+ return 'STDIN'
140
+ else:
141
+ return os.path.basename(self.current_file_name)
142
+ else:
143
+ return 'NONE'
144
+
145
+
124
146
  def __str__(self):
125
147
  # Summarize the warnings and errors.
126
148
  result = ''
@@ -142,11 +164,13 @@ class State:
142
164
  result += f'*** FAILED *** with {nerror} errors'
143
165
  return result
144
166
 
167
+
145
168
  def passed(self):
146
169
  for k, v in self.error_counter[IncidentType.ERROR].items():
147
170
  if v > 0:
148
171
  return False
149
172
  return True
150
173
 
174
+
151
175
  def __bool__(self):
152
176
  return self.passed()
@@ -1,4 +1,3 @@
1
- import os
2
1
  import regex as re
3
2
  # Allow using this module from the root folder of tools even if it is not
4
3
  # installed as a package: use the relative path validator/src/validator for
@@ -394,5 +393,4 @@ def create_references(nodes, state, comment=''):
394
393
  -------
395
394
  references : list(udtools.incident.Reference)
396
395
  """
397
- filename = 'STDIN' if state.current_file_name == '-' else os.path.basename(state.current_file_name) if state.current_file_name else 'NONE'
398
- return [Reference(nodeid=str(x.ord), sentid=state.sentence_id, filename=filename, lineno=state.current_node_linenos[str(x.ord)], comment=comment) for x in nodes]
396
+ return [Reference(nodeid=str(x.ord), sentid=state.sentence_id, filename=state.get_current_file_name(), lineno=state.current_node_linenos[str(x.ord)], comment=comment) for x in nodes]
@@ -199,7 +199,7 @@ class Validator(Level6):
199
199
  The resulting state of the validation. May contain the overview
200
200
  of all encountered incidents (errors or warnings) if requested.
201
201
  """
202
- if not state:
202
+ if state == None:
203
203
  state = State()
204
204
  for lines in utils.next_sentence(state, inp):
205
205
  self.validate_sentence(lines, state)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: udtools
3
- Version: 0.2.4
3
+ Version: 0.2.5
4
4
  Summary: Python tools for Universal Dependencies
5
5
  Author: Filip Ginter, Sampo Pyysalo, Daniel Zeman, Milan Straka, Martin Popel, Gosse Bouma, John Bauer, Arianna Masciolini, Ludovica Pannitto
6
6
  Maintainer-email: Daniel Zeman <zeman@ufal.mff.cuni.cz>
@@ -0,0 +1,144 @@
1
+ LICENSE.txt
2
+ MANIFEST.in
3
+ README.md
4
+ pyproject.toml
5
+ src/udtools/__init__.py
6
+ src/udtools/argparser.py
7
+ src/udtools/cli.py
8
+ src/udtools/data.py
9
+ src/udtools/incident.py
10
+ src/udtools/level1.py
11
+ src/udtools/level2.py
12
+ src/udtools/level3.py
13
+ src/udtools/level4.py
14
+ src/udtools/level5.py
15
+ src/udtools/level6.py
16
+ src/udtools/state.py
17
+ src/udtools/udeval.py
18
+ src/udtools/utils.py
19
+ src/udtools/validator.py
20
+ src/udtools.egg-info/PKG-INFO
21
+ src/udtools.egg-info/SOURCES.txt
22
+ src/udtools.egg-info/dependency_links.txt
23
+ src/udtools.egg-info/entry_points.txt
24
+ src/udtools.egg-info/requires.txt
25
+ src/udtools.egg-info/top_level.txt
26
+ src/udtools/data/data.json
27
+ src/udtools/data/deprels.json
28
+ src/udtools/data/docdeps.json
29
+ src/udtools/data/docfeats.json
30
+ src/udtools/data/edeprels.json
31
+ src/udtools/data/feats.json
32
+ src/udtools/data/tospace.json
33
+ src/udtools/data/udeprels.json
34
+ src/udtools/data/upos.json
35
+ tests/test_cases.py
36
+ tests/test_checks.py
37
+ tests/test_regex.py
38
+ tests/test_utils.py
39
+ tests/test_validate.py
40
+ tests/test-cases/README.md
41
+ tests/test-cases/test.bat
42
+ tests/test-cases/test.log
43
+ tests/test-cases/eval/cs_pud-gold.conllu
44
+ tests/test-cases/eval/cs_pud-plain.txt
45
+ tests/test-cases/eval/cs_pud-udpipe-pdtc-ud-2.17-251125.conllu
46
+ tests/test-cases/eval/eval.txt
47
+ tests/test-cases/invalid-functions/columns-format-minimal.conllu
48
+ tests/test-cases/invalid-functions/columns-format.conllu
49
+ tests/test-cases/invalid-functions/extra-empty-line.conllu
50
+ tests/test-cases/invalid-functions/invalid-line.conllu
51
+ tests/test-cases/invalid-functions/invalid-word-id.conllu
52
+ tests/test-cases/invalid-functions/invalid-word-interval.conllu
53
+ tests/test-cases/invalid-functions/misplaced-comment.conllu
54
+ tests/test-cases/invalid-functions/misplaced-empty-node-2.conllu
55
+ tests/test-cases/invalid-functions/misplaced-empty-node.conllu
56
+ tests/test-cases/invalid-functions/misplaced-word-interval.conllu
57
+ tests/test-cases/invalid-functions/multiple-sent-id.conllu
58
+ tests/test-cases/invalid-functions/mwt-nonempty-2.conllu
59
+ tests/test-cases/invalid-functions/mwt-nonempty-field.conllu
60
+ tests/test-cases/invalid-functions/non-unix-newline.conllu
61
+ tests/test-cases/invalid-functions/overlapping-word-interval.conllu
62
+ tests/test-cases/invalid-functions/pseudo-empty-line.conllu
63
+ tests/test-cases/invalid-functions/reversed-word-interval.conllu
64
+ tests/test-cases/invalid-functions/unicode-normalization.conllu
65
+ tests/test-cases/invalid-functions/word-id-sequence-2.conllu
66
+ tests/test-cases/invalid-functions/word-id-sequence.conllu
67
+ tests/test-cases/invalid-level1-2/ambiguous-feature.conllu
68
+ tests/test-cases/invalid-level1-2/cyclic-deps.conllu
69
+ tests/test-cases/invalid-level1-2/deprel-not-empty-in-empty.conllu
70
+ tests/test-cases/invalid-level1-2/dos-newlines.conllu
71
+ tests/test-cases/invalid-level1-2/duplicate-feature.conllu
72
+ tests/test-cases/invalid-level1-2/duplicate-id.conllu
73
+ tests/test-cases/invalid-level1-2/duplicate-layered-feature.conllu
74
+ tests/test-cases/invalid-level1-2/duplicate-value.conllu
75
+ tests/test-cases/invalid-level1-2/empty-field.conllu
76
+ tests/test-cases/invalid-level1-2/empty-head.conllu
77
+ tests/test-cases/invalid-level1-2/empty-sentence.conllu
78
+ tests/test-cases/invalid-level1-2/extra-empty-line.conllu
79
+ tests/test-cases/invalid-level1-2/extra-field.conllu
80
+ tests/test-cases/invalid-level1-2/head-0-deprel-not-root.conllu
81
+ tests/test-cases/invalid-level1-2/head-not-0-deprel-root.conllu
82
+ tests/test-cases/invalid-level1-2/head-not-empty-in-empty.conllu
83
+ tests/test-cases/invalid-level1-2/id-starting-from-2.conllu
84
+ tests/test-cases/invalid-level1-2/id-with-extra-0.conllu
85
+ tests/test-cases/invalid-level1-2/invalid-deps-id.conllu
86
+ tests/test-cases/invalid-level1-2/invalid-deps-order.conllu
87
+ tests/test-cases/invalid-level1-2/invalid-deps-syntax.conllu
88
+ tests/test-cases/invalid-level1-2/invalid-head.conllu
89
+ tests/test-cases/invalid-level1-2/invalid-range-format.conllu
90
+ tests/test-cases/invalid-level1-2/invalid-range.conllu
91
+ tests/test-cases/invalid-level1-2/lowercase-feature-in-empty.conllu
92
+ tests/test-cases/invalid-level1-2/lowercase-feature-value-in-empty.conllu
93
+ tests/test-cases/invalid-level1-2/lowercase-feature.conllu
94
+ tests/test-cases/invalid-level1-2/lowercase-postag-in-empty.conllu
95
+ tests/test-cases/invalid-level1-2/lowercase-postag.conllu
96
+ tests/test-cases/invalid-level1-2/lowercase-value.conllu
97
+ tests/test-cases/invalid-level1-2/malformed_deps.conllu
98
+ tests/test-cases/invalid-level1-2/misindexed-empty-node.conllu
99
+ tests/test-cases/invalid-level1-2/misordered-feature.conllu
100
+ tests/test-cases/invalid-level1-2/misordered-layered-feature.conllu
101
+ tests/test-cases/invalid-level1-2/misordered-multiword.conllu
102
+ tests/test-cases/invalid-level1-2/misplaced-comment-end.conllu
103
+ tests/test-cases/invalid-level1-2/misplaced-comment-mid.conllu
104
+ tests/test-cases/invalid-level1-2/misplaced-range.conllu
105
+ tests/test-cases/invalid-level1-2/missing-final-line.conllu
106
+ tests/test-cases/invalid-level1-2/missing-space-after.conllu
107
+ tests/test-cases/invalid-level1-2/multiple-sent_id.conllu
108
+ tests/test-cases/invalid-level1-2/multiple_roots.conllu
109
+ tests/test-cases/invalid-level1-2/multiword-with-pos.conllu
110
+ tests/test-cases/invalid-level1-2/nan-id.conllu
111
+ tests/test-cases/invalid-level1-2/no-sent_id.conllu
112
+ tests/test-cases/invalid-level1-2/nonsequential-empty-node-id.conllu
113
+ tests/test-cases/invalid-level1-2/nonsequential-id.conllu
114
+ tests/test-cases/invalid-level1-2/out-of-bounds-range.conllu
115
+ tests/test-cases/invalid-level1-2/overlapping-multiword.conllu
116
+ tests/test-cases/invalid-level1-2/overlapping-range.conllu
117
+ tests/test-cases/invalid-level1-2/parallel-id.conllu
118
+ tests/test-cases/invalid-level1-2/seemingly-empty-line.conllu
119
+ tests/test-cases/invalid-level1-2/self-cycle-deps.conllu
120
+ tests/test-cases/invalid-level1-2/self-cycle-head.conllu
121
+ tests/test-cases/invalid-level1-2/space-in-field.conllu
122
+ tests/test-cases/invalid-level1-2/tanl-broken.conllu
123
+ tests/test-cases/invalid-level1-2/token_with_cols_filled.conllu
124
+ tests/test-cases/invalid-level1-2/trailing-tab.conllu
125
+ tests/test-cases/invalid-level1-2/unnormalized-unicode.conllu
126
+ tests/test-cases/invalid-level1-2/uppercase-deprel.conllu
127
+ tests/test-cases/invalid-level1-2/uppercase-deps-deprel.conllu
128
+ tests/test-cases/invalid-level3/nmod-obl.conllu
129
+ tests/test-cases/invalid-level3/non-proj.conllu
130
+ tests/test-cases/invalid-level3/rel-upos.conllu
131
+ tests/test-cases/invalid-level3/right-to-left.conllu
132
+ tests/test-cases/invalid-level3/too-many-objects.conllu
133
+ tests/test-cases/invalid-level3/too-many-subjects.conllu
134
+ tests/test-cases/invalid-level4-5/cs_pud-ud-test.conllu
135
+ tests/test-cases/invalid-level4-5/yrl_complin-mwt-typo-yes.conllu
136
+ tests/test-cases/valid/empty-file.conllu
137
+ tests/test-cases/valid/empty-nodes.conllu
138
+ tests/test-cases/valid/layered-features.conllu
139
+ tests/test-cases/valid/maximal-empty-node.conllu
140
+ tests/test-cases/valid/minimal-empty-node.conllu
141
+ tests/test-cases/valid/multiple-features.conllu
142
+ tests/test-cases/valid/nmod-obl.conllu
143
+ tests/test-cases/valid/tanl.conllu
144
+ tests/test-cases/valid/whitespace.conllu
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ udeval = udtools.cli:main_eval
3
+ udvalidate = udtools.cli:main
@@ -0,0 +1,5 @@
1
+ # Test the validator in Windows command line (cmd)
2
+
3
+ ```batch
4
+ tools\test-cases\test.bat 2> tools\test-cases\test.log
5
+ ```