csvpath 0.0.560__tar.gz → 0.0.561__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 (354) hide show
  1. {csvpath-0.0.560 → csvpath-0.0.561}/PKG-INFO +2 -1
  2. {csvpath-0.0.560 → csvpath-0.0.561}/config/config.ini +5 -5
  3. csvpath-0.0.561/config/env.json +1 -0
  4. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/csvpaths.py +12 -0
  5. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/otlp/metrics.py +52 -33
  6. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/otlp/otlp_paths_listener.py +8 -1
  7. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/otlp/otlp_results_listener.py +1 -0
  8. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/registrar.py +24 -19
  9. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/validity/line.py +3 -2
  10. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/config.py +207 -181
  11. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/config_env.py +1 -3
  12. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/s3/s3_utils.py +2 -4
  13. {csvpath-0.0.560 → csvpath-0.0.561}/pyproject.toml +2 -1
  14. csvpath-0.0.560/config/env.json +0 -1
  15. {csvpath-0.0.560 → csvpath-0.0.561}/LICENSE +0 -0
  16. {csvpath-0.0.560 → csvpath-0.0.561}/README.md +0 -0
  17. {csvpath-0.0.560 → csvpath-0.0.561}/assets/config/config.ini +0 -0
  18. {csvpath-0.0.560 → csvpath-0.0.561}/assets/config/function.imports +0 -0
  19. {csvpath-0.0.560 → csvpath-0.0.561}/assets/config/jenkins-local-azure.ini +0 -0
  20. {csvpath-0.0.560 → csvpath-0.0.561}/assets/config/jenkins-local-filesystem-mysql.ini +0 -0
  21. {csvpath-0.0.560 → csvpath-0.0.561}/assets/config/jenkins-local-gcs.ini +0 -0
  22. {csvpath-0.0.560 → csvpath-0.0.561}/assets/config/jenkins-local-s3.ini +0 -0
  23. {csvpath-0.0.560 → csvpath-0.0.561}/assets/config/jenkins-local-sftp.ini +0 -0
  24. {csvpath-0.0.560 → csvpath-0.0.561}/assets/config/jenkins-windows-azure.ini +0 -0
  25. {csvpath-0.0.560 → csvpath-0.0.561}/assets/config/jenkins-windows-gcs.ini +0 -0
  26. {csvpath-0.0.560 → csvpath-0.0.561}/assets/config/jenkins-windows-local.ini +0 -0
  27. {csvpath-0.0.560 → csvpath-0.0.561}/assets/config/jenkins-windows-s3.ini +0 -0
  28. {csvpath-0.0.560 → csvpath-0.0.561}/assets/config/jenkins-windows-sftp.ini +0 -0
  29. {csvpath-0.0.560 → csvpath-0.0.561}/assets/config/local-localhost-sftp.ini +0 -0
  30. {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/mac/azure-pipeline.gopipeline.json +0 -0
  31. {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/mac/azure.sh +0 -0
  32. {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/mac/gcs-pipeline.gopipeline.json +0 -0
  33. {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/mac/gcs.sh +0 -0
  34. {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/mac/local-pipeline.gopipeline copy.json +0 -0
  35. {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/mac/local.sh +0 -0
  36. {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/mac/s3-pipeline.gopipeline.json +0 -0
  37. {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/mac/s3.sh +0 -0
  38. {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/mac/sftp-pipeline.gopipeline.json +0 -0
  39. {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/mac/sftp.sh +0 -0
  40. {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/windows/azure.bat +0 -0
  41. {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/windows/gcs.bat +0 -0
  42. {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/windows/local.bat +0 -0
  43. {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/windows/s3.bat +0 -0
  44. {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/windows/sftp.bat +0 -0
  45. {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/windows/windows-azure.gopipeline.json +0 -0
  46. {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/windows/windows-gcs.gopipeline.json +0 -0
  47. {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/windows/windows-local.gopipeline.json +0 -0
  48. {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/windows/windows-s3.gopipeline.json +0 -0
  49. {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/windows/windows-sftp.gopipeline.json +0 -0
  50. {csvpath-0.0.560 → csvpath-0.0.561}/assets/integrations/sftpplus/handle_auto_arrival.bat +0 -0
  51. {csvpath-0.0.560 → csvpath-0.0.561}/assets/integrations/sftpplus/handle_auto_arrival.py +0 -0
  52. {csvpath-0.0.560 → csvpath-0.0.561}/assets/integrations/sftpplus/handle_auto_arrival.sh +0 -0
  53. {csvpath-0.0.560 → csvpath-0.0.561}/assets/integrations/sftpplus/handle_mailbox_arrival.bat +0 -0
  54. {csvpath-0.0.560 → csvpath-0.0.561}/assets/integrations/sftpplus/handle_mailbox_arrival.py +0 -0
  55. {csvpath-0.0.560 → csvpath-0.0.561}/assets/integrations/sftpplus/handle_mailbox_arrival.sh +0 -0
  56. {csvpath-0.0.560 → csvpath-0.0.561}/assets/integrations/sqlite/csvpath +0 -0
  57. {csvpath-0.0.560 → csvpath-0.0.561}/assets/integrations/sqlite/schema.sql +0 -0
  58. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/__init__.py +0 -0
  59. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/cli/__init__.py +0 -0
  60. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/cli/asker.py +0 -0
  61. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/cli/cli.py +0 -0
  62. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/cli/const.py +0 -0
  63. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/cli/debug_config.py +0 -0
  64. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/cli/drill_down.py +0 -0
  65. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/cli/function_describer.py +0 -0
  66. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/cli/function_lister.py +0 -0
  67. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/cli/selecter.py +0 -0
  68. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/csvpath.py +0 -0
  69. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/__init__.py +0 -0
  70. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/errors/error.py +0 -0
  71. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/errors/error_collector.py +0 -0
  72. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/errors/error_comms.py +0 -0
  73. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/errors/error_manager.py +0 -0
  74. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/files/file_manager.py +0 -0
  75. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/files/file_metadata.py +0 -0
  76. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/files/file_registrar.py +0 -0
  77. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/files/files_listener.py +0 -0
  78. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/files/lines_and_headers_cacher.py +0 -0
  79. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/ckan/ckan.py +0 -0
  80. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/ckan/ckan_listener.py +0 -0
  81. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/ckan/datafile.py +0 -0
  82. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/ckan/dataset.py +0 -0
  83. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/ol/event.py +0 -0
  84. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/ol/event_result.py +0 -0
  85. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/ol/file_listener_ol.py +0 -0
  86. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/ol/job.py +0 -0
  87. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/ol/ol_listener.py +0 -0
  88. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/ol/paths_listener_ol.py +0 -0
  89. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/ol/result_listener_ol.py +0 -0
  90. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/ol/results_listener_ol.py +0 -0
  91. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/ol/run.py +0 -0
  92. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/ol/run_listener_ol.py +0 -0
  93. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/ol/run_state.py +0 -0
  94. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/ol/sender.py +0 -0
  95. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/otlp/error_metrics.py +0 -0
  96. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/otlp/otlp_error_listener.py +0 -0
  97. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/otlp/otlp_file_listener.py +0 -0
  98. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/otlp/otlp_listener.py +0 -0
  99. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/otlp/otlp_result_listener.py +0 -0
  100. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/scripts/scripts_results_listener.py +0 -0
  101. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sftp/sftp_sender.py +0 -0
  102. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sftpplus/arrival_handler.py +0 -0
  103. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sftpplus/rpc.py +0 -0
  104. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sftpplus/sftpplus_listener.py +0 -0
  105. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sftpplus/transfer_creator.py +0 -0
  106. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sftpplus/transfers.py +0 -0
  107. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/slack/event.py +0 -0
  108. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/slack/sender.py +0 -0
  109. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sql/engine.py +0 -0
  110. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sql/sql_file_listener.py +0 -0
  111. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sql/sql_listener.py +0 -0
  112. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sql/sql_paths_listener.py +0 -0
  113. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sql/sql_result_listener.py +0 -0
  114. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sql/sql_results_listener.py +0 -0
  115. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sql/tables.py +0 -0
  116. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sql/updates.py +0 -0
  117. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sqlite/schema.sql +0 -0
  118. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sqlite/sqlite_result_listener.py +0 -0
  119. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sqlite/sqlite_results_listener.py +0 -0
  120. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/webhook/webhook_listener.py +0 -0
  121. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/webhook/webhook_results_listener.py +0 -0
  122. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/listener.py +0 -0
  123. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/metadata.py +0 -0
  124. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/paths/paths_listener.py +0 -0
  125. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/paths/paths_manager.py +0 -0
  126. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/paths/paths_metadata.py +0 -0
  127. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/paths/paths_registrar.py +0 -0
  128. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/results/readers/file_errors_reader.py +0 -0
  129. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/results/readers/file_lines_reader.py +0 -0
  130. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/results/readers/file_printouts_reader.py +0 -0
  131. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/results/readers/file_unmatched_reader.py +0 -0
  132. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/results/readers/readers.py +0 -0
  133. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/results/result.py +0 -0
  134. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/results/result_file_reader.py +0 -0
  135. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/results/result_metadata.py +0 -0
  136. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/results/result_registrar.py +0 -0
  137. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/results/result_serializer.py +0 -0
  138. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/results/results_manager.py +0 -0
  139. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/results/results_metadata.py +0 -0
  140. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/results/results_registrar.py +0 -0
  141. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/run/run_listener_stdout.py +0 -0
  142. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/run/run_metadata.py +0 -0
  143. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/run/run_registrar.py +0 -0
  144. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/test_listener.py +0 -0
  145. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/__init__.py +0 -0
  146. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/__init__.py +0 -0
  147. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/args.py +0 -0
  148. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/args_helper.py +0 -0
  149. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/boolean/all.py +0 -0
  150. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/boolean/andf.py +0 -0
  151. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/boolean/any.py +0 -0
  152. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/boolean/between.py +0 -0
  153. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/boolean/empty.py +0 -0
  154. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/boolean/exists.py +0 -0
  155. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/boolean/inf.py +0 -0
  156. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/boolean/no.py +0 -0
  157. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/boolean/notf.py +0 -0
  158. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/boolean/orf.py +0 -0
  159. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/boolean/yes.py +0 -0
  160. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/counting/count.py +0 -0
  161. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/counting/count_bytes.py +0 -0
  162. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/counting/count_headers.py +0 -0
  163. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/counting/count_lines.py +0 -0
  164. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/counting/count_scans.py +0 -0
  165. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/counting/counter.py +0 -0
  166. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/counting/every.py +0 -0
  167. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/counting/has_matches.py +0 -0
  168. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/counting/increment.py +0 -0
  169. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/counting/tally.py +0 -0
  170. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/counting/total_lines.py +0 -0
  171. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/dates/now.py +0 -0
  172. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/function.py +0 -0
  173. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/function_factory.py +0 -0
  174. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/function_finder.py +0 -0
  175. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/function_focus.py +0 -0
  176. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/headers/append.py +0 -0
  177. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/headers/collect.py +0 -0
  178. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/headers/empty_stack.py +0 -0
  179. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/headers/end.py +0 -0
  180. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/headers/header_name.py +0 -0
  181. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/headers/header_names_mismatch.py +0 -0
  182. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/headers/headers.py +0 -0
  183. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/headers/insert.py +0 -0
  184. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/headers/mismatch.py +0 -0
  185. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/headers/replace.py +0 -0
  186. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/headers/reset_headers.py +0 -0
  187. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/lines/advance.py +0 -0
  188. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/lines/after_blank.py +0 -0
  189. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/lines/dups.py +0 -0
  190. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/lines/first.py +0 -0
  191. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/lines/first_line.py +0 -0
  192. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/lines/last.py +0 -0
  193. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/lines/stop.py +0 -0
  194. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/math/above.py +0 -0
  195. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/math/add.py +0 -0
  196. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/math/divide.py +0 -0
  197. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/math/equals.py +0 -0
  198. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/math/intf.py +0 -0
  199. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/math/mod.py +0 -0
  200. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/math/multiply.py +0 -0
  201. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/math/odd.py +0 -0
  202. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/math/round.py +0 -0
  203. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/math/subtotal.py +0 -0
  204. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/math/subtract.py +0 -0
  205. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/math/sum.py +0 -0
  206. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/misc/fingerprint.py +0 -0
  207. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/misc/importf.py +0 -0
  208. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/misc/random.py +0 -0
  209. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/print/jinjaf.py +0 -0
  210. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/print/print_line.py +0 -0
  211. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/print/print_queue.py +0 -0
  212. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/print/printf.py +0 -0
  213. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/print/table.py +0 -0
  214. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/stats/minf.py +0 -0
  215. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/stats/nminmax.py +0 -0
  216. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/stats/percent.py +0 -0
  217. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/stats/percent_unique.py +0 -0
  218. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/stats/stdev.py +0 -0
  219. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/strings/alter.py +0 -0
  220. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/strings/caps.py +0 -0
  221. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/strings/concat.py +0 -0
  222. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/strings/contains.py +0 -0
  223. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/strings/length.py +0 -0
  224. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/strings/lower.py +0 -0
  225. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/strings/metaphone.py +0 -0
  226. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/strings/regex.py +0 -0
  227. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/strings/starts_with.py +0 -0
  228. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/strings/strip.py +0 -0
  229. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/strings/substring.py +0 -0
  230. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/strings/upper.py +0 -0
  231. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/testing/debug.py +0 -0
  232. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/types/__init__.py +0 -0
  233. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/types/boolean.py +0 -0
  234. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/types/datatype.py +0 -0
  235. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/types/datef.py +0 -0
  236. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/types/decimal.py +0 -0
  237. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/types/email.py +0 -0
  238. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/types/nonef.py +0 -0
  239. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/types/string.py +0 -0
  240. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/types/type.py +0 -0
  241. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/types/url.py +0 -0
  242. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/validity/fail.py +0 -0
  243. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/validity/failed.py +0 -0
  244. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/variables/get.py +0 -0
  245. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/variables/pushpop.py +0 -0
  246. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/variables/put.py +0 -0
  247. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/variables/track.py +0 -0
  248. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/variables/variables.py +0 -0
  249. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/lark_parser.py +0 -0
  250. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/lark_transformer.py +0 -0
  251. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/matcher.py +0 -0
  252. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/productions/__init__.py +0 -0
  253. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/productions/equality.py +0 -0
  254. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/productions/expression.py +0 -0
  255. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/productions/header.py +0 -0
  256. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/productions/matchable.py +0 -0
  257. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/productions/qualified.py +0 -0
  258. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/productions/reference.py +0 -0
  259. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/productions/term.py +0 -0
  260. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/productions/variable.py +0 -0
  261. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/util/exceptions.py +0 -0
  262. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/util/expression_encoder.py +0 -0
  263. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/util/expression_utility.py +0 -0
  264. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/util/lark_print_parser.py +0 -0
  265. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/util/print_parser.py +0 -0
  266. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/util/runtime_data_collector.py +0 -0
  267. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/modes/error_mode.py +0 -0
  268. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/modes/explain_mode.py +0 -0
  269. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/modes/files_mode.py +0 -0
  270. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/modes/logic_mode.py +0 -0
  271. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/modes/mode_controller.py +0 -0
  272. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/modes/print_mode.py +0 -0
  273. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/modes/return_mode.py +0 -0
  274. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/modes/run_mode.py +0 -0
  275. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/modes/source_mode.py +0 -0
  276. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/modes/transfer_mode.py +0 -0
  277. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/modes/unmatched_mode.py +0 -0
  278. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/modes/validation_mode.py +0 -0
  279. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/scanning/__init__.py +0 -0
  280. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/scanning/scanner2.py +0 -0
  281. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/scanning/scanner2_parser.py +0 -0
  282. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/scanning/scanner2_transformer.py +0 -0
  283. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/azure/azure_data_reader.py +0 -0
  284. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/azure/azure_data_writer.py +0 -0
  285. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/azure/azure_fingerprinter.py +0 -0
  286. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/azure/azure_nos.py +0 -0
  287. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/azure/azure_utils.py +0 -0
  288. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/azure/azure_xlsx_data_reader.py +0 -0
  289. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/backend_check.py +0 -0
  290. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/box.py +0 -0
  291. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/cache.py +0 -0
  292. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/caser.py +0 -0
  293. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/class_loader.py +0 -0
  294. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/code.py +0 -0
  295. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/config_exception.py +0 -0
  296. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/date_util.py +0 -0
  297. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/exceptions.py +0 -0
  298. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/file_info.py +0 -0
  299. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/file_readers.py +0 -0
  300. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/file_writers.py +0 -0
  301. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/gcs/gcs_data_reader.py +0 -0
  302. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/gcs/gcs_data_writer.py +0 -0
  303. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/gcs/gcs_fingerprinter.py +0 -0
  304. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/gcs/gcs_nos.py +0 -0
  305. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/gcs/gcs_utils.py +0 -0
  306. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/gcs/gcs_xlsx_data_reader.py +0 -0
  307. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/hasher.py +0 -0
  308. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/http/http_data_reader.py +0 -0
  309. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/intermediary.py +0 -0
  310. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/last_line_stats.py +0 -0
  311. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/line_counter.py +0 -0
  312. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/line_monitor.py +0 -0
  313. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/line_spooler.py +0 -0
  314. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/log_utility.py +0 -0
  315. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/metadata_parser.py +0 -0
  316. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/nos.py +0 -0
  317. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/pandas_data_reader.py +0 -0
  318. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/path_util.py +0 -0
  319. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/printer.py +0 -0
  320. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/files_reference_finder_2.py +0 -0
  321. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/files_tools/fingerprint_finder.py +0 -0
  322. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/files_tools/range_finder.py +0 -0
  323. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/ref_utils.py +0 -0
  324. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/reference_exceptions.py +0 -0
  325. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/reference_grammar.py +0 -0
  326. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/reference_manifest_entry_finder.py +0 -0
  327. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/reference_parser.py +0 -0
  328. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/reference_results.py +0 -0
  329. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/reference_transformer.py +0 -0
  330. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/results_reference_finder_2.py +0 -0
  331. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/results_tools/data_finder.py +0 -0
  332. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/results_tools/date_filter.py +0 -0
  333. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/results_tools/identity_finder.py +0 -0
  334. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/results_tools/path_filter.py +0 -0
  335. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/results_tools/resolve_possibles.py +0 -0
  336. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/results_tools/token_filters.py +0 -0
  337. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/results_tools/yesterday_or_today_translator.py +0 -0
  338. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/tools/date_completer.py +0 -0
  339. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/run_home_maker.py +0 -0
  340. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/s3/s3_data_reader.py +0 -0
  341. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/s3/s3_data_writer.py +0 -0
  342. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/s3/s3_fingerprinter.py +0 -0
  343. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/s3/s3_nos.py +0 -0
  344. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/s3/s3_xlsx_data_reader.py +0 -0
  345. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/sftp/sftp_config.py +0 -0
  346. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/sftp/sftp_data_reader.py +0 -0
  347. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/sftp/sftp_data_writer.py +0 -0
  348. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/sftp/sftp_fingerprinter.py +0 -0
  349. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/sftp/sftp_nos.py +0 -0
  350. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/sftp/sftp_walk.py +0 -0
  351. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/sftp/sftp_xlsx_data_reader.py +0 -0
  352. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/sqliter.py +0 -0
  353. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/template_util.py +0 -0
  354. {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/var_utility.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: csvpath
3
- Version: 0.0.560
3
+ Version: 0.0.561
4
4
  Summary: A data preboarding framework for managing and validating CSV, Excel, and other tabular data files using a Collect, Store, Validate, Publish pattern to create a trusted publisher for downstream data consumers.
5
5
  Author: David Kershaw
6
6
  Author-email: dk107dk@hotmail.com
@@ -34,6 +34,7 @@ Requires-Dist: metaphone (>=0.6,<0.7)
34
34
  Requires-Dist: mysqlclient (>=2.2.7,<3.0.0)
35
35
  Requires-Dist: openlineage-python (>=1.25.0,<2.0.0)
36
36
  Requires-Dist: opentelemetry-distro[otlp] (>=0.50b0,<0.51)
37
+ Requires-Dist: pandas (>=2.2.2,<3.0.0) ; extra == "pandas"
37
38
  Requires-Dist: paramiko (>=3.5.0,<4.0.0)
38
39
  Requires-Dist: pdoc (>=15.0.1,<16.0.0)
39
40
  Requires-Dist: prompt-toolkit (>=3.0.50,<4.0.0)
@@ -17,15 +17,15 @@ use_format = full
17
17
  pattern = {time}:{file}:{line}:{paths}:{instance}:{chain}: {message}
18
18
 
19
19
  [logging]
20
- csvpath = info
21
- csvpaths = info
20
+ csvpath = debug
21
+ csvpaths = debug
22
22
  log_file = logs/csvpath.log
23
23
  log_files_to_keep = 100
24
24
  log_file_size = 52428800
25
25
  handler = file
26
26
 
27
27
  [config]
28
- path = assets/config/config.ini
28
+ path = config/config.ini
29
29
  allow_var_sub = True
30
30
  var_sub_source = env
31
31
 
@@ -104,7 +104,7 @@ port = SFTPPLUS_PORT
104
104
  admin_username = SFTPPLUS_ADMIN_USERNAME
105
105
  admin_password = SFTPPLUS_ADMIN_PASSWORD
106
106
  api_url = https://localhost:10020/json
107
- scripts_dir =
107
+ scripts_dir =
108
108
  execute_timeout = 300
109
109
 
110
110
  [ckan]
@@ -119,7 +119,7 @@ timeout = 5
119
119
  verify = False
120
120
 
121
121
  [slack]
122
- webhook_url =
122
+ webhook_url =
123
123
 
124
124
  [scripts]
125
125
  run_scripts = yes
@@ -0,0 +1 @@
1
+ {}
@@ -160,6 +160,7 @@ class CsvPaths(CsvPathsCoordinator, ErrorCollector):
160
160
  """ @private """
161
161
  self._config._assure_logs_path()
162
162
  self.logger = LogUtility.logger(self)
163
+ self.info_dump()
163
164
  """ @private """
164
165
  self._errors = []
165
166
  # coordinator attributes
@@ -203,6 +204,17 @@ class CsvPaths(CsvPathsCoordinator, ErrorCollector):
203
204
  f"Initialized CsvPaths: {self} in thread: {threading.current_thread()}"
204
205
  )
205
206
 
207
+ def info_dump(self) -> None:
208
+ self.logger.info(
209
+ "Initated logging on log path: %s",
210
+ self.config.get(section="logging", name="log_file"),
211
+ )
212
+ self.logger.info("Config file is at: %s", self.config.configpath)
213
+ intgs = self.config.get(section="listeners", name="groups")
214
+ self.logger.debug("Active integrations:")
215
+ for _ in intgs:
216
+ self.logger.debug(" - %s", _)
217
+
206
218
  def _set_managers(self) -> None:
207
219
  self.paths_manager = PathsManager(csvpaths=self)
208
220
  self.file_manager = FileManager(csvpaths=self)
@@ -64,39 +64,57 @@ class Metrics:
64
64
  @property
65
65
  def provider(self) -> LoggerProvider:
66
66
  if self._provider is None:
67
- # Add resource information
68
- resource = Resource.create(
69
- {"service.name": "CsvPath", "service.version": "1.0.0"}
70
- )
71
- self._provider = LoggerProvider(resource=resource)
72
- set_logger_provider(self._provider)
73
- #
74
- # these were working values for openobserve. I don't think we need
75
- # OTEL_EXPORTER_OTLP_PROTOCOL since we are programmatically instantiating
76
- # the protobuf
77
- #
78
- # OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
79
- # OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:5080/api/default
80
- # OTEL_EXPORTER_OTLP_HEADERS=Authorization=Basic ZGsxMDdka0Bob3RtYWlsLmNvbTpoYW5nemhvdQ==,stream-name=FlightPath
81
- #
82
- # certificate_file=None,
83
- # client_key_file=None,
84
- # client_certificate_file=None,
85
- # timeout=None,
86
- # compression=None,
87
- # session=None
88
- #
89
- # in CsvPath and FlightPath Data these can come from regular env vars
90
- # but in FlightPath Server they must come from var_sub_source=config/env.json
91
- # because we plan to allow projects to push data to their own choice of OTLP
92
- # platform. FlightPath Data will have to provide an API for setting env.json
93
- # and assistence in copying its own env vars and the OS env vars to env.json
94
- # on the server.
95
- #
96
- endpoint = self._get(name="OTEL_EXPORTER_OTLP_ENDPOINT")
97
- headers = self._get(name="OTEL_EXPORTER_OTLP_HEADERS")
98
- exporter = OTLPLogExporter(endpoint=endpoint, headers=headers)
99
- self._provider.add_log_record_processor(BatchLogRecordProcessor(exporter))
67
+ try:
68
+ # Add resource information
69
+ resource = Resource.create(
70
+ {"service.name": "CsvPath", "service.version": "1.0.0"}
71
+ )
72
+ self._provider = LoggerProvider(resource=resource)
73
+ set_logger_provider(self._provider)
74
+ #
75
+ # these were working values for a local openobserve.
76
+ #
77
+ # OTEL_EXPORTER_OTLP_ENDPOINT=http://0.0.0.0:5080/api/default/v1/logs
78
+ # OTEL_EXPORTER_OTLP_HEADERS=Authorization=Basic ZGsxMDdka0Bob3RtYWlsLmNvbTpoYW5nemhvdQ==,stream-name=flightpath
79
+ #
80
+ # certificate_file=None,
81
+ # client_key_file=None,
82
+ # client_certificate_file=None,
83
+ # timeout=None,
84
+ # compression=None,
85
+ # session=None
86
+ #
87
+ # in CsvPath and FlightPath Data these can come from regular env vars
88
+ # but in FlightPath Server they must come from var_sub_source=config/env.json
89
+ # because we plan to allow projects to push data to their own choice of OTLP
90
+ # platform. FlightPath Data will have to provide an API for setting env.json
91
+ # and assistence in copying its own env vars and the OS env vars to env.json
92
+ # on the server.
93
+ #
94
+ endpoint = self._get(name="OTEL_EXPORTER_OTLP_LOGS_ENDPOINT")
95
+ if endpoint is None or endpoint == "OTEL_EXPORTER_OTLP_LOGS_ENDPOINT":
96
+ endpoint = self._get(name="OTEL_EXPORTER_OTLP_ENDPOINT")
97
+ if endpoint is None or endpoint == "OTEL_EXPORTER_OTLP_ENDPOINT":
98
+ raise ValueError(
99
+ "You must pass either OTEL_EXPORTER_OTLP_ENDPOINT or OTEL_EXPORTER_OTLP_LOGS_ENDPOINT, the latter preferred"
100
+ )
101
+ headers = self._get(name="OTEL_EXPORTER_OTLP_HEADERS")
102
+ if headers is None or headers == "OTEL_EXPORTER_OTLP_HEADERS":
103
+ raise ValueError("OTEL_EXPORTER_OTLP_HEADERS cannot be None")
104
+ headers = headers.split(",")
105
+ d = {}
106
+ for _ in headers:
107
+ k = _[0 : _.find("=")]
108
+ v = _[_.find("=") + 1 :]
109
+ d[k] = v
110
+ exporter = OTLPLogExporter(endpoint=endpoint, headers=d)
111
+ self._provider.add_log_record_processor(
112
+ BatchLogRecordProcessor(exporter)
113
+ )
114
+ except Exception as ex:
115
+ if self._csvpaths:
116
+ self._csvpaths.logger.error("Cannot configure OTLP")
117
+ self._csvpaths.logger.error(ex)
100
118
  return self._provider
101
119
 
102
120
  def logger(self, project: str = "csvpath") -> Logger:
@@ -114,4 +132,5 @@ class Metrics:
114
132
  # Prevent propagation to avoid duplicate logs
115
133
  logger.propagate = False
116
134
  Metrics.LOGGERS[project] = logger
135
+ # logging.basicConfig(level=logging.DEBUG)
117
136
  return logger
@@ -21,6 +21,13 @@ class OpenTelemetryPathsListener(OtlpListener):
21
21
  )
22
22
  self.assure_metrics()
23
23
  try:
24
+ ids = []
25
+ #
26
+ # otlp doesn't like Nones. should there not be any?
27
+ #
28
+ for _ in mdata.named_paths_identities:
29
+ if _:
30
+ ids.append(_)
24
31
  etype = "named-paths group load"
25
32
  extra = {
26
33
  "event_type": etype,
@@ -29,7 +36,7 @@ class OpenTelemetryPathsListener(OtlpListener):
29
36
  "named_paths_home": mdata.named_paths_home,
30
37
  "group_file_path": mdata.group_file_path,
31
38
  "named_paths_count": mdata.named_paths_count,
32
- "named_paths_identities": mdata.named_paths_identities,
39
+ "named_paths_identities": ids,
33
40
  "source_path": mdata.source_path,
34
41
  "template": mdata.template if mdata.template else "",
35
42
  **self.core_meta(mdata),
@@ -49,6 +49,7 @@ class OpenTelemetryResultsListener(OtlpListener):
49
49
  self.csvpaths.__class__.METRICS.logger().debug(
50
50
  "Csvpath completed", extra=extra
51
51
  )
52
+ self.csvpaths.logger.info("Csvpath shipped log entry to OTLP integration")
52
53
  except Exception as ex:
53
54
  print(traceback.format_exc())
54
55
  self.csvpaths.logger.error(ex)
@@ -51,13 +51,18 @@ class Registrar(ABC):
51
51
  # notable exception of errors, errors are not thrown in non-CsvPaths code.
52
52
  #
53
53
  if self.csvpaths is not None:
54
+ self.csvpaths.logger.info("Distributing updates to listeners")
54
55
  try:
55
56
  self.load_additional_listeners(self.type_name, listeners)
56
57
  except Exception as ex:
57
58
  print(traceback.format_exc())
58
59
  if self.csvpaths:
59
- self.csvpaths.logger(f"Error in loading listeners: {ex}")
60
+ self.csvpaths.logger.error(f"Error in loading listeners: {ex}")
60
61
  for lst in listeners:
62
+ if self.csvpaths:
63
+ self.csvpaths.logger.debug(
64
+ "Updating listener %s with metadata %s", lst, mdata
65
+ )
61
66
  try:
62
67
  lst.metadata_update(mdata)
63
68
  except Exception as ex:
@@ -75,27 +80,27 @@ class Registrar(ABC):
75
80
  """
76
81
  if self.csvpaths:
77
82
  ss = self.csvpaths.config.additional_listeners(listener_type_name)
83
+ self.csvpaths.logger.info("Loading additional listener type(s) %s", ss)
78
84
  if ss and not isinstance(ss, list):
79
85
  ss = [ss]
80
86
  if ss and len(ss) > 0:
81
87
  for lst in ss:
82
- try:
83
- self.load_additional_listener(lst, listeners)
84
- except Exception as ex:
85
- print(traceback.format_exc())
86
- self.csvpaths.logger.error(
87
- f"Failed to load listener {lst}: {ex}"
88
- )
88
+ self.load_additional_listener(lst, listeners)
89
89
 
90
90
  def load_additional_listener(self, load_cmd: str, listeners: list) -> None:
91
- loader = ClassLoader()
92
- alistener = loader.load(load_cmd)
93
- if alistener is not None:
94
- if hasattr(alistener, "csvpaths"):
95
- setattr(alistener, "csvpaths", self.csvpaths)
96
- if hasattr(alistener, "result"):
97
- setattr(alistener, "result", self.result)
98
- if hasattr(self, "csvpath") and hasattr(alistener, "csvpath"):
99
- alistener.csvpath = self.csvpath
100
- alistener.config = self.csvpaths.config
101
- listeners.append(alistener)
91
+ self.csvpaths.logger.info("Loading additional listener %s", load_cmd)
92
+ try:
93
+ loader = ClassLoader()
94
+ alistener = loader.load(load_cmd)
95
+ if alistener is not None:
96
+ if hasattr(alistener, "csvpaths"):
97
+ setattr(alistener, "csvpaths", self.csvpaths)
98
+ if hasattr(alistener, "result"):
99
+ setattr(alistener, "result", self.result)
100
+ if hasattr(self, "csvpath") and hasattr(alistener, "csvpath"):
101
+ alistener.csvpath = self.csvpath
102
+ alistener.config = self.csvpaths.config
103
+ listeners.append(alistener)
104
+ except Exception as e:
105
+ print(traceback.format_exc())
106
+ self.csvpaths.logger.error(e)
@@ -248,7 +248,8 @@ class Line(MatchDecider):
248
248
  #
249
249
  if t and t.name != self.matcher.csvpath.headers[i] and t.name != f"{i}":
250
250
  ii = i + 1
251
- msg = f"The {ExpressionUtility._numeric_string(ii)} item, {t}, does not match the current header"
251
+
252
+ msg = f"The {ExpressionUtility._numeric_string(ii)} item, {t}, does not match the current header '{self.matcher.csvpath.headers[i]}'"
252
253
  errors.append(msg)
253
254
  return True
254
255
 
@@ -264,6 +265,6 @@ class Line(MatchDecider):
264
265
  #
265
266
  if t and t.name != self.matcher.csvpath.headers[i] and t.name != f"{i}":
266
267
  ii = i + 1
267
- msg = f"The {ExpressionUtility._numeric_string(ii)} item, {t}, does not match the current header"
268
+ msg = f"The {ExpressionUtility._numeric_string(ii)} item, {t}, does not match the current header '{self.matcher.csvpath.headers[i]}'"
268
269
  errors.append(msg)
269
270
  return True