csvpath 0.0.519__tar.gz → 0.0.520__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 (336) hide show
  1. {csvpath-0.0.519 → csvpath-0.0.520}/PKG-INFO +1 -1
  2. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/cli/asker.py +9 -2
  3. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/types/decimal.py +29 -20
  4. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/productions/header.py +20 -25
  5. {csvpath-0.0.519 → csvpath-0.0.520}/pyproject.toml +1 -1
  6. {csvpath-0.0.519 → csvpath-0.0.520}/LICENSE +0 -0
  7. {csvpath-0.0.519 → csvpath-0.0.520}/README.md +0 -0
  8. {csvpath-0.0.519 → csvpath-0.0.520}/config/config.ini +0 -0
  9. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/__init__.py +0 -0
  10. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/cli/__init__.py +0 -0
  11. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/cli/cli.py +0 -0
  12. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/cli/debug_config.py +0 -0
  13. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/cli/drill_down.py +0 -0
  14. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/cli/selecter.py +0 -0
  15. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/csvpath.py +0 -0
  16. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/csvpaths.py +0 -0
  17. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/__init__.py +0 -0
  18. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/errors/error.py +0 -0
  19. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/errors/error_collector.py +0 -0
  20. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/errors/error_comms.py +0 -0
  21. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/errors/error_manager.py +0 -0
  22. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/files/file_cacher.py +0 -0
  23. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/files/file_manager.py +0 -0
  24. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/files/file_metadata.py +0 -0
  25. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/files/file_registrar.py +0 -0
  26. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/files/files_listener.py +0 -0
  27. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/integrations/ckan/ckan.py +0 -0
  28. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/integrations/ckan/ckan_listener.py +0 -0
  29. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/integrations/ckan/datafile.py +0 -0
  30. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/integrations/ckan/dataset.py +0 -0
  31. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/integrations/ol/event.py +0 -0
  32. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/integrations/ol/event_result.py +0 -0
  33. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/integrations/ol/file_listener_ol.py +0 -0
  34. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/integrations/ol/job.py +0 -0
  35. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/integrations/ol/ol_listener.py +0 -0
  36. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/integrations/ol/paths_listener_ol.py +0 -0
  37. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/integrations/ol/result_listener_ol.py +0 -0
  38. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/integrations/ol/results_listener_ol.py +0 -0
  39. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/integrations/ol/run.py +0 -0
  40. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/integrations/ol/run_listener_ol.py +0 -0
  41. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/integrations/ol/run_state.py +0 -0
  42. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/integrations/ol/sender.py +0 -0
  43. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/integrations/otlp/error_metrics.py +0 -0
  44. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/integrations/otlp/metrics.py +0 -0
  45. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/integrations/otlp/otlp_error_listener.py +0 -0
  46. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/integrations/otlp/otlp_listener.py +0 -0
  47. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/integrations/otlp/otlp_result_listener.py +0 -0
  48. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/integrations/otlp/otlp_results_listener.py +0 -0
  49. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/integrations/sftp/sftp_sender.py +0 -0
  50. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/integrations/sftpplus/arrival_handler.py +0 -0
  51. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/integrations/sftpplus/rpc.py +0 -0
  52. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/integrations/sftpplus/sftpplus_listener.py +0 -0
  53. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/integrations/sftpplus/transfer_creator.py +0 -0
  54. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/integrations/sftpplus/transfers.py +0 -0
  55. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/integrations/slack/event.py +0 -0
  56. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/integrations/slack/sender.py +0 -0
  57. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/listener.py +0 -0
  58. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/metadata.py +0 -0
  59. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/paths/paths_listener.py +0 -0
  60. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/paths/paths_manager.py +0 -0
  61. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/paths/paths_metadata.py +0 -0
  62. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/paths/paths_registrar.py +0 -0
  63. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/registrar.py +0 -0
  64. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/results/readers/file_errors_reader.py +0 -0
  65. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/results/readers/file_lines_reader.py +0 -0
  66. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/results/readers/file_printouts_reader.py +0 -0
  67. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/results/readers/file_unmatched_reader.py +0 -0
  68. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/results/readers/readers.py +0 -0
  69. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/results/result.py +0 -0
  70. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/results/result_file_reader.py +0 -0
  71. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/results/result_metadata.py +0 -0
  72. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/results/result_registrar.py +0 -0
  73. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/results/result_serializer.py +0 -0
  74. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/results/results_manager.py +0 -0
  75. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/results/results_metadata.py +0 -0
  76. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/results/results_registrar.py +0 -0
  77. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/run/run_listener_stdout.py +0 -0
  78. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/run/run_metadata.py +0 -0
  79. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/managers/run/run_registrar.py +0 -0
  80. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/__init__.py +0 -0
  81. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/__init__.py +0 -0
  82. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/args.py +0 -0
  83. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/args_helper.py +0 -0
  84. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/boolean/all.py +0 -0
  85. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/boolean/andf.py +0 -0
  86. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/boolean/any.py +0 -0
  87. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/boolean/between.py +0 -0
  88. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/boolean/empty.py +0 -0
  89. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/boolean/exists.py +0 -0
  90. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/boolean/inf.py +0 -0
  91. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/boolean/no.py +0 -0
  92. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/boolean/notf.py +0 -0
  93. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/boolean/orf.py +0 -0
  94. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/boolean/yes.py +0 -0
  95. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/counting/count.py +0 -0
  96. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/counting/count_bytes.py +0 -0
  97. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/counting/count_headers.py +0 -0
  98. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/counting/count_lines.py +0 -0
  99. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/counting/count_scans.py +0 -0
  100. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/counting/counter.py +0 -0
  101. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/counting/every.py +0 -0
  102. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/counting/has_matches.py +0 -0
  103. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/counting/increment.py +0 -0
  104. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/counting/tally.py +0 -0
  105. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/counting/total_lines.py +0 -0
  106. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/dates/now.py +0 -0
  107. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/function.py +0 -0
  108. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/function_factory.py +0 -0
  109. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/function_finder.py +0 -0
  110. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/function_focus.py +0 -0
  111. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/headers/append.py +0 -0
  112. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/headers/collect.py +0 -0
  113. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/headers/empty_stack.py +0 -0
  114. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/headers/end.py +0 -0
  115. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/headers/header_name.py +0 -0
  116. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/headers/header_names_mismatch.py +0 -0
  117. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/headers/headers.py +0 -0
  118. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/headers/mismatch.py +0 -0
  119. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/headers/replace.py +0 -0
  120. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/headers/reset_headers.py +0 -0
  121. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/lines/advance.py +0 -0
  122. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/lines/after_blank.py +0 -0
  123. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/lines/dups.py +0 -0
  124. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/lines/first.py +0 -0
  125. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/lines/first_line.py +0 -0
  126. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/lines/last.py +0 -0
  127. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/lines/stop.py +0 -0
  128. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/math/above.py +0 -0
  129. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/math/add.py +0 -0
  130. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/math/divide.py +0 -0
  131. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/math/equals.py +0 -0
  132. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/math/intf.py +0 -0
  133. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/math/mod.py +0 -0
  134. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/math/multiply.py +0 -0
  135. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/math/odd.py +0 -0
  136. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/math/round.py +0 -0
  137. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/math/subtotal.py +0 -0
  138. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/math/subtract.py +0 -0
  139. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/math/sum.py +0 -0
  140. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/misc/fingerprint.py +0 -0
  141. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/misc/importf.py +0 -0
  142. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/misc/random.py +0 -0
  143. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/print/jinjaf.py +0 -0
  144. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/print/print_line.py +0 -0
  145. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/print/print_queue.py +0 -0
  146. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/print/printf.py +0 -0
  147. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/print/table.py +0 -0
  148. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/stats/minf.py +0 -0
  149. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/stats/percent.py +0 -0
  150. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/stats/percent_unique.py +0 -0
  151. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/stats/stdev.py +0 -0
  152. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/strings/alter.py +0 -0
  153. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/strings/caps.py +0 -0
  154. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/strings/concat.py +0 -0
  155. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/strings/contains.py +0 -0
  156. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/strings/length.py +0 -0
  157. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/strings/lower.py +0 -0
  158. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/strings/metaphone.py +0 -0
  159. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/strings/regex.py +0 -0
  160. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/strings/starts_with.py +0 -0
  161. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/strings/strip.py +0 -0
  162. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/strings/substring.py +0 -0
  163. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/strings/upper.py +0 -0
  164. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/testing/debug.py +0 -0
  165. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/types/__init__.py +0 -0
  166. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/types/boolean.py +0 -0
  167. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/types/datef.py +0 -0
  168. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/types/email.py +0 -0
  169. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/types/nonef.py +0 -0
  170. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/types/string.py +0 -0
  171. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/types/type.py +0 -0
  172. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/types/url.py +0 -0
  173. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/validity/fail.py +0 -0
  174. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/validity/failed.py +0 -0
  175. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/validity/line.py +0 -0
  176. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/variables/get.py +0 -0
  177. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/variables/pushpop.py +0 -0
  178. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/variables/put.py +0 -0
  179. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/variables/track.py +0 -0
  180. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/functions/variables/variables.py +0 -0
  181. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/lark_parser.py +0 -0
  182. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/lark_transformer.py +0 -0
  183. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/matcher.py +0 -0
  184. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/productions/__init__.py +0 -0
  185. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/productions/equality.py +0 -0
  186. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/productions/expression.py +0 -0
  187. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/productions/matchable.py +0 -0
  188. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/productions/qualified.py +0 -0
  189. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/productions/reference.py +0 -0
  190. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/productions/term.py +0 -0
  191. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/productions/variable.py +0 -0
  192. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/util/exceptions.py +0 -0
  193. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/util/expression_encoder.py +0 -0
  194. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/util/expression_utility.py +0 -0
  195. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/util/lark_print_parser.py +0 -0
  196. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/util/print_parser.py +0 -0
  197. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/matching/util/runtime_data_collector.py +0 -0
  198. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/modes/error_mode.py +0 -0
  199. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/modes/explain_mode.py +0 -0
  200. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/modes/files_mode.py +0 -0
  201. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/modes/logic_mode.py +0 -0
  202. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/modes/mode_controller.py +0 -0
  203. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/modes/print_mode.py +0 -0
  204. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/modes/return_mode.py +0 -0
  205. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/modes/run_mode.py +0 -0
  206. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/modes/source_mode.py +0 -0
  207. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/modes/transfer_mode.py +0 -0
  208. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/modes/unmatched_mode.py +0 -0
  209. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/modes/validation_mode.py +0 -0
  210. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/scanning/__init__.py +0 -0
  211. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/scanning/exceptions.py +0 -0
  212. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/scanning/parser.out +0 -0
  213. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/scanning/parsetab.py +0 -0
  214. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/scanning/scanner.py +0 -0
  215. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/scanning/scanning_lexer.py +0 -0
  216. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/util/box.py +0 -0
  217. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/util/cache.py +0 -0
  218. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/util/class_loader.py +0 -0
  219. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/util/config.py +0 -0
  220. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/util/config_exception.py +0 -0
  221. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/util/exceptions.py +0 -0
  222. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/util/file_info.py +0 -0
  223. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/util/file_readers.py +0 -0
  224. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/util/file_writers.py +0 -0
  225. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/util/hasher.py +0 -0
  226. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/util/last_line_stats.py +0 -0
  227. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/util/line_counter.py +0 -0
  228. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/util/line_monitor.py +0 -0
  229. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/util/line_spooler.py +0 -0
  230. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/util/log_utility.py +0 -0
  231. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/util/metadata_parser.py +0 -0
  232. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/util/nos.py +0 -0
  233. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/util/pandas_data_reader.py +0 -0
  234. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/util/printer.py +0 -0
  235. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/util/reference_parser.py +0 -0
  236. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/util/s3/s3_data_reader.py +0 -0
  237. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/util/s3/s3_data_writer.py +0 -0
  238. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/util/s3/s3_fingerprinter.py +0 -0
  239. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/util/s3/s3_utils.py +0 -0
  240. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/util/s3/s3_xlsx_data_reader.py +0 -0
  241. {csvpath-0.0.519 → csvpath-0.0.520}/csvpath/util/var_utility.py +0 -0
  242. {csvpath-0.0.519 → csvpath-0.0.520}/docs/asbool.md +0 -0
  243. {csvpath-0.0.519 → csvpath-0.0.520}/docs/assignment.md +0 -0
  244. {csvpath-0.0.519 → csvpath-0.0.520}/docs/comments.md +0 -0
  245. {csvpath-0.0.519 → csvpath-0.0.520}/docs/config.md +0 -0
  246. {csvpath-0.0.519 → csvpath-0.0.520}/docs/examples.md +0 -0
  247. {csvpath-0.0.519 → csvpath-0.0.520}/docs/files.md +0 -0
  248. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/above.md +0 -0
  249. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/advance.md +0 -0
  250. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/after_blank.md +0 -0
  251. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/all.md +0 -0
  252. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/andor.md +0 -0
  253. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/any.md +0 -0
  254. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/average.md +0 -0
  255. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/between.md +0 -0
  256. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/collect.md +0 -0
  257. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/contains.md +0 -0
  258. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/correlate.md +0 -0
  259. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/count.md +0 -0
  260. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/count_bytes.md +0 -0
  261. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/count_headers.md +0 -0
  262. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/counter.md +0 -0
  263. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/date.md +0 -0
  264. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/email.md +0 -0
  265. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/empty.md +0 -0
  266. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/empty_stack.md +0 -0
  267. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/end.md +0 -0
  268. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/equal.md +0 -0
  269. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/every.md +0 -0
  270. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/fail.md +0 -0
  271. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/fingerprint.md +0 -0
  272. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/first.md +0 -0
  273. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/get.md +0 -0
  274. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/has_dups.md +0 -0
  275. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/has_matches.md +0 -0
  276. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/header.md +0 -0
  277. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/header_name.md +0 -0
  278. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/header_names_mismatch.md +0 -0
  279. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/implementing_functions.md +0 -0
  280. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/import.md +0 -0
  281. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/in.md +0 -0
  282. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/increment.md +0 -0
  283. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/intf.md +0 -0
  284. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/jinja.md +0 -0
  285. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/last.md +0 -0
  286. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/line.md +0 -0
  287. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/line_number.md +0 -0
  288. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/max.md +0 -0
  289. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/metaphone.md +0 -0
  290. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/mismatch.md +0 -0
  291. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/no.md +0 -0
  292. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/not.md +0 -0
  293. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/now.md +0 -0
  294. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/odd.md +0 -0
  295. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/percent_unique.md +0 -0
  296. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/pop.md +0 -0
  297. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/print.md +0 -0
  298. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/print_line.md +0 -0
  299. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/print_queue.md +0 -0
  300. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/random.md +0 -0
  301. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/regex.md +0 -0
  302. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/replace.md +0 -0
  303. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/reset_headers.md +0 -0
  304. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/stdev.md +0 -0
  305. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/stop.md +0 -0
  306. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/string_functions.md +0 -0
  307. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/subtotal.md +0 -0
  308. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/subtract.md +0 -0
  309. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/sum.md +0 -0
  310. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/tally.md +0 -0
  311. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/total_lines.md +0 -0
  312. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/track.md +0 -0
  313. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/types.md +0 -0
  314. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/variables.md +0 -0
  315. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions/variables_and_headers.md +0 -0
  316. {csvpath-0.0.519 → csvpath-0.0.520}/docs/functions.md +0 -0
  317. {csvpath-0.0.519 → csvpath-0.0.520}/docs/grammar.md +0 -0
  318. {csvpath-0.0.519 → csvpath-0.0.520}/docs/headers.md +0 -0
  319. {csvpath-0.0.519 → csvpath-0.0.520}/docs/images/ckan-logo-sm.png +0 -0
  320. {csvpath-0.0.519 → csvpath-0.0.520}/docs/images/csvpath-icon-sm.png +0 -0
  321. {csvpath-0.0.519 → csvpath-0.0.520}/docs/images/csvpath-logo-wordmark-tight-2.svg +0 -0
  322. {csvpath-0.0.519 → csvpath-0.0.520}/docs/images/logo-wordmark-3.svg +0 -0
  323. {csvpath-0.0.519 → csvpath-0.0.520}/docs/images/logo-wordmark-4.svg +0 -0
  324. {csvpath-0.0.519 → csvpath-0.0.520}/docs/images/logo-wordmark-white-on-black-trimmed-padded.png +0 -0
  325. {csvpath-0.0.519 → csvpath-0.0.520}/docs/images/logo-wordmark-white-trimmed.png +0 -0
  326. {csvpath-0.0.519 → csvpath-0.0.520}/docs/images/marquez-logo-sm.png +0 -0
  327. {csvpath-0.0.519 → csvpath-0.0.520}/docs/images/openlineage-logo-sm.png +0 -0
  328. {csvpath-0.0.519 → csvpath-0.0.520}/docs/images/opentelemetry.png +0 -0
  329. {csvpath-0.0.519 → csvpath-0.0.520}/docs/images/sftpplus-logo2.png +0 -0
  330. {csvpath-0.0.519 → csvpath-0.0.520}/docs/images/sftpplus-logo3.png +0 -0
  331. {csvpath-0.0.519 → csvpath-0.0.520}/docs/paths.md +0 -0
  332. {csvpath-0.0.519 → csvpath-0.0.520}/docs/printing.md +0 -0
  333. {csvpath-0.0.519 → csvpath-0.0.520}/docs/qualifiers.md +0 -0
  334. {csvpath-0.0.519 → csvpath-0.0.520}/docs/references.md +0 -0
  335. {csvpath-0.0.519 → csvpath-0.0.520}/docs/terms.md +0 -0
  336. {csvpath-0.0.519 → csvpath-0.0.520}/docs/variables.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: csvpath
3
- Version: 0.0.519
3
+ Version: 0.0.520
4
4
  Summary: An edge governance framework for managing and validating CSV, Excel, and other tabular data files
5
5
  Author: David Kershaw
6
6
  Author-email: dk107dk@hotmail.com
@@ -22,7 +22,7 @@ class Asker:
22
22
  names = self._cli.csvpaths.file_manager.named_file_names
23
23
  names.sort()
24
24
  elif name_type == "paths":
25
- names = self._cli.csvpaths.file_manager.named_file_names
25
+ names = self._cli.csvpaths.paths_manager.named_paths_names
26
26
  names.sort()
27
27
  else:
28
28
  raise ValueError("Name type must be files or paths")
@@ -31,15 +31,21 @@ class Asker:
31
31
 
32
32
  def create_prompt_application(self, prompt_text=None):
33
33
  if prompt_text is None:
34
- prompt_text = "Named-file name? " if self.name_type == "files" else "Named-paths name? "
34
+ prompt_text = (
35
+ "Named-file name? "
36
+ if self.name_type == "files"
37
+ else "Named-paths name? "
38
+ )
35
39
  # Create a buffer to store input
36
40
  buffer = Buffer(completer=self.completer, complete_while_typing=True)
37
41
  # Create key bindings
38
42
  kb = KeyBindings()
43
+
39
44
  @kb.add("enter")
40
45
  def _(event):
41
46
  self.result = buffer.text
42
47
  event.app.exit()
48
+
43
49
  @kb.add("c-c")
44
50
  @kb.add("c-q")
45
51
  def _(event):
@@ -85,5 +91,6 @@ class Asker:
85
91
  except Exception as e:
86
92
  self._cli.csvpaths.logger.error(e)
87
93
  import traceback
94
+
88
95
  print(traceback.format_exc())
89
96
  return None
@@ -45,19 +45,10 @@ class Decimal(ValueProducer, Type):
45
45
  h = self._value_one(skip=skip)
46
46
  if h is None:
47
47
  #
48
- # Matcher via Type will take care of mismatches and Nones
48
+ # Matcher via Type will take care of mismatches and Nones. Args handles nonnone
49
49
  #
50
50
  if self.notnone is True:
51
51
  self.match = False
52
- #
53
- # should be caught by Args
54
- #
55
- """ """
56
- msg = f"'{self._value_one(skip=skip)}' cannot be empty"
57
- self.matcher.csvpath.error_manager.handle_error(source=self, msg=msg)
58
- if self.matcher.csvpath.do_i_raise():
59
- raise MatchException(msg)
60
- """ """
61
52
  return
62
53
  self.match = True
63
54
  return
@@ -65,6 +56,9 @@ class Decimal(ValueProducer, Type):
65
56
  #
66
57
  # we know this value is a number because Args checked it.
67
58
  # but would a user know from looking at it that it was a float?
59
+ # if strict, we require the fractional part. if not strict any
60
+ # whole number can be a decimal with an unwritten .0 so we
61
+ # allow it.
68
62
  #
69
63
  if self.has_qualifier("strict"):
70
64
  if f"{h}".strip().find(".") == -1:
@@ -76,19 +70,34 @@ class Decimal(ValueProducer, Type):
76
70
  )
77
71
  if self.matcher.csvpath.do_i_raise():
78
72
  raise MatchException(msg)
73
+ self.match = False
79
74
  return
80
- self.match = True
81
- elif self.has_qualifier("weak"):
82
- self.match = True
83
- elif f"{h}".strip().find(".") == -1:
84
- self.match = False
85
- return
86
- else:
87
- self.match = True
75
+ self.match = True
88
76
  else:
89
77
  if f"{h}".find(".") > -1:
90
- self.match = False
91
- return
78
+ msg = "Integers cannot have a fractional part"
79
+ if self.has_qualifier("strict"):
80
+ self.matcher.csvpath.error_manager.handle_error(
81
+ source=self, msg=msg
82
+ )
83
+ if self.matcher.csvpath.do_i_raise():
84
+ raise MatchException(msg)
85
+ self.match = False
86
+ return
87
+ i = ExpressionUtility.to_int(h)
88
+ f = ExpressionUtility.to_float(h)
89
+ if i == f:
90
+ # the fractional part is 0, so we'll allow it
91
+ self.match = True
92
+ else:
93
+ self.matcher.csvpath.error_manager.handle_error(
94
+ source=self, msg=msg
95
+ )
96
+ if self.matcher.csvpath.do_i_raise():
97
+ raise MatchException(msg)
98
+ self.match = False
99
+ return
100
+ self.match = True
92
101
  #
93
102
  # validate min and max
94
103
  #
@@ -8,8 +8,6 @@ class Header(Matchable):
8
8
  """a header is analogous to a column in a spreadsheet or
9
9
  RDBMS but with CSV characteristics"""
10
10
 
11
- NEVER = -9999999999
12
-
13
11
  def __str__(self) -> str:
14
12
  return f"""{self._simple_class_name()}({self.qualified_name}) """
15
13
 
@@ -17,12 +15,10 @@ class Header(Matchable):
17
15
  # header names can be quoted like "Last Year Number"
18
16
  if isinstance(name, str):
19
17
  name = name.strip()
20
- # if name[0] == '"' and name[len(name) - 1] == '"':
21
- # name = name[1 : len(name) - 1]
22
- super().__init__(matcher, value=Header.NEVER, name=name)
18
+ super().__init__(matcher, value=None, name=name)
23
19
 
24
20
  def reset(self) -> None:
25
- self.value = Header.NEVER
21
+ self.value = None
26
22
  self.match = None
27
23
  super().reset()
28
24
 
@@ -31,27 +27,26 @@ class Header(Matchable):
31
27
  ret = self._noop_value()
32
28
  self.valuing().result(ret).because("skip")
33
29
  return ret
34
- if self.value == Header.NEVER:
35
- ret = Header.NEVER
36
- if isinstance(self.name, int) or self.name.isdecimal():
37
- if int(self.name) >= len(self.matcher.line):
38
- ret = None
39
- else:
40
- ret = self.matcher.line[int(self.name)]
30
+ ret = None
31
+ if isinstance(self.name, int) or self.name.isdecimal():
32
+ if int(self.name) >= len(self.matcher.line):
33
+ ret = None
41
34
  else:
42
- n = self.matcher.header_index(self.name)
43
- if n is None:
44
- ret = None
45
- elif self.matcher.line and len(self.matcher.line) > n:
46
- ret = self.matcher.line[n]
47
- else:
48
- self.matcher.csvpath.logger.debug(
49
- f"Header.to_value: miss because n >= {len(self.matcher.line)}"
50
- )
51
- if self.asbool:
52
- self.value = ExpressionUtility.asbool(ret)
35
+ ret = self.matcher.line[int(self.name)]
36
+ else:
37
+ n = self.matcher.header_index(self.name)
38
+ if n is None:
39
+ ret = None
40
+ elif self.matcher.line and len(self.matcher.line) > n:
41
+ ret = self.matcher.line[n]
53
42
  else:
54
- self.value = ret
43
+ self.matcher.csvpath.logger.debug(
44
+ f"Header.to_value: miss because n >= {len(self.matcher.line)}"
45
+ )
46
+ if self.asbool:
47
+ self.value = ExpressionUtility.asbool(ret)
48
+ else:
49
+ self.value = ret
55
50
  if isinstance(self.value, str):
56
51
  self.value = self.value.strip()
57
52
  return self.value
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "csvpath"
3
- version = "0.0.519"
3
+ version = "0.0.520"
4
4
  description = "An edge governance framework for managing and validating CSV, Excel, and other tabular data files"
5
5
  authors = ["David Kershaw <dk107dk@hotmail.com>"]
6
6
  readme = "README.md"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes