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.
- {csvpath-0.0.560 → csvpath-0.0.561}/PKG-INFO +2 -1
- {csvpath-0.0.560 → csvpath-0.0.561}/config/config.ini +5 -5
- csvpath-0.0.561/config/env.json +1 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/csvpaths.py +12 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/otlp/metrics.py +52 -33
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/otlp/otlp_paths_listener.py +8 -1
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/otlp/otlp_results_listener.py +1 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/registrar.py +24 -19
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/validity/line.py +3 -2
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/config.py +207 -181
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/config_env.py +1 -3
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/s3/s3_utils.py +2 -4
- {csvpath-0.0.560 → csvpath-0.0.561}/pyproject.toml +2 -1
- csvpath-0.0.560/config/env.json +0 -1
- {csvpath-0.0.560 → csvpath-0.0.561}/LICENSE +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/README.md +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/config/config.ini +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/config/function.imports +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/config/jenkins-local-azure.ini +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/config/jenkins-local-filesystem-mysql.ini +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/config/jenkins-local-gcs.ini +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/config/jenkins-local-s3.ini +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/config/jenkins-local-sftp.ini +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/config/jenkins-windows-azure.ini +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/config/jenkins-windows-gcs.ini +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/config/jenkins-windows-local.ini +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/config/jenkins-windows-s3.ini +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/config/jenkins-windows-sftp.ini +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/config/local-localhost-sftp.ini +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/mac/azure-pipeline.gopipeline.json +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/mac/azure.sh +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/mac/gcs-pipeline.gopipeline.json +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/mac/gcs.sh +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/mac/local-pipeline.gopipeline copy.json +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/mac/local.sh +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/mac/s3-pipeline.gopipeline.json +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/mac/s3.sh +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/mac/sftp-pipeline.gopipeline.json +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/mac/sftp.sh +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/windows/azure.bat +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/windows/gcs.bat +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/windows/local.bat +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/windows/s3.bat +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/windows/sftp.bat +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/windows/windows-azure.gopipeline.json +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/windows/windows-gcs.gopipeline.json +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/windows/windows-local.gopipeline.json +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/windows/windows-s3.gopipeline.json +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/gocd/windows/windows-sftp.gopipeline.json +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/integrations/sftpplus/handle_auto_arrival.bat +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/integrations/sftpplus/handle_auto_arrival.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/integrations/sftpplus/handle_auto_arrival.sh +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/integrations/sftpplus/handle_mailbox_arrival.bat +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/integrations/sftpplus/handle_mailbox_arrival.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/integrations/sftpplus/handle_mailbox_arrival.sh +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/integrations/sqlite/csvpath +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/assets/integrations/sqlite/schema.sql +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/__init__.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/cli/__init__.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/cli/asker.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/cli/cli.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/cli/const.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/cli/debug_config.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/cli/drill_down.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/cli/function_describer.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/cli/function_lister.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/cli/selecter.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/csvpath.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/__init__.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/errors/error.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/errors/error_collector.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/errors/error_comms.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/errors/error_manager.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/files/file_manager.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/files/file_metadata.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/files/file_registrar.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/files/files_listener.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/files/lines_and_headers_cacher.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/ckan/ckan.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/ckan/ckan_listener.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/ckan/datafile.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/ckan/dataset.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/ol/event.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/ol/event_result.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/ol/file_listener_ol.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/ol/job.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/ol/ol_listener.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/ol/paths_listener_ol.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/ol/result_listener_ol.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/ol/results_listener_ol.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/ol/run.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/ol/run_listener_ol.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/ol/run_state.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/ol/sender.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/otlp/error_metrics.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/otlp/otlp_error_listener.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/otlp/otlp_file_listener.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/otlp/otlp_listener.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/otlp/otlp_result_listener.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/scripts/scripts_results_listener.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sftp/sftp_sender.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sftpplus/arrival_handler.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sftpplus/rpc.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sftpplus/sftpplus_listener.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sftpplus/transfer_creator.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sftpplus/transfers.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/slack/event.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/slack/sender.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sql/engine.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sql/sql_file_listener.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sql/sql_listener.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sql/sql_paths_listener.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sql/sql_result_listener.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sql/sql_results_listener.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sql/tables.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sql/updates.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sqlite/schema.sql +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sqlite/sqlite_result_listener.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/sqlite/sqlite_results_listener.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/webhook/webhook_listener.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/webhook/webhook_results_listener.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/listener.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/metadata.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/paths/paths_listener.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/paths/paths_manager.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/paths/paths_metadata.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/paths/paths_registrar.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/results/readers/file_errors_reader.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/results/readers/file_lines_reader.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/results/readers/file_printouts_reader.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/results/readers/file_unmatched_reader.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/results/readers/readers.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/results/result.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/results/result_file_reader.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/results/result_metadata.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/results/result_registrar.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/results/result_serializer.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/results/results_manager.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/results/results_metadata.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/results/results_registrar.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/run/run_listener_stdout.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/run/run_metadata.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/run/run_registrar.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/test_listener.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/__init__.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/__init__.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/args.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/args_helper.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/boolean/all.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/boolean/andf.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/boolean/any.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/boolean/between.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/boolean/empty.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/boolean/exists.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/boolean/inf.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/boolean/no.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/boolean/notf.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/boolean/orf.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/boolean/yes.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/counting/count.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/counting/count_bytes.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/counting/count_headers.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/counting/count_lines.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/counting/count_scans.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/counting/counter.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/counting/every.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/counting/has_matches.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/counting/increment.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/counting/tally.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/counting/total_lines.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/dates/now.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/function.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/function_factory.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/function_finder.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/function_focus.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/headers/append.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/headers/collect.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/headers/empty_stack.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/headers/end.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/headers/header_name.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/headers/header_names_mismatch.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/headers/headers.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/headers/insert.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/headers/mismatch.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/headers/replace.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/headers/reset_headers.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/lines/advance.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/lines/after_blank.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/lines/dups.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/lines/first.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/lines/first_line.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/lines/last.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/lines/stop.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/math/above.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/math/add.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/math/divide.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/math/equals.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/math/intf.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/math/mod.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/math/multiply.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/math/odd.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/math/round.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/math/subtotal.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/math/subtract.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/math/sum.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/misc/fingerprint.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/misc/importf.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/misc/random.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/print/jinjaf.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/print/print_line.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/print/print_queue.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/print/printf.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/print/table.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/stats/minf.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/stats/nminmax.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/stats/percent.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/stats/percent_unique.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/stats/stdev.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/strings/alter.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/strings/caps.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/strings/concat.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/strings/contains.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/strings/length.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/strings/lower.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/strings/metaphone.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/strings/regex.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/strings/starts_with.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/strings/strip.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/strings/substring.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/strings/upper.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/testing/debug.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/types/__init__.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/types/boolean.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/types/datatype.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/types/datef.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/types/decimal.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/types/email.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/types/nonef.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/types/string.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/types/type.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/types/url.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/validity/fail.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/validity/failed.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/variables/get.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/variables/pushpop.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/variables/put.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/variables/track.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/functions/variables/variables.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/lark_parser.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/lark_transformer.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/matcher.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/productions/__init__.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/productions/equality.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/productions/expression.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/productions/header.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/productions/matchable.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/productions/qualified.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/productions/reference.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/productions/term.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/productions/variable.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/util/exceptions.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/util/expression_encoder.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/util/expression_utility.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/util/lark_print_parser.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/util/print_parser.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/matching/util/runtime_data_collector.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/modes/error_mode.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/modes/explain_mode.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/modes/files_mode.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/modes/logic_mode.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/modes/mode_controller.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/modes/print_mode.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/modes/return_mode.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/modes/run_mode.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/modes/source_mode.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/modes/transfer_mode.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/modes/unmatched_mode.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/modes/validation_mode.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/scanning/__init__.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/scanning/scanner2.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/scanning/scanner2_parser.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/scanning/scanner2_transformer.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/azure/azure_data_reader.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/azure/azure_data_writer.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/azure/azure_fingerprinter.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/azure/azure_nos.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/azure/azure_utils.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/azure/azure_xlsx_data_reader.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/backend_check.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/box.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/cache.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/caser.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/class_loader.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/code.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/config_exception.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/date_util.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/exceptions.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/file_info.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/file_readers.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/file_writers.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/gcs/gcs_data_reader.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/gcs/gcs_data_writer.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/gcs/gcs_fingerprinter.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/gcs/gcs_nos.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/gcs/gcs_utils.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/gcs/gcs_xlsx_data_reader.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/hasher.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/http/http_data_reader.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/intermediary.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/last_line_stats.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/line_counter.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/line_monitor.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/line_spooler.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/log_utility.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/metadata_parser.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/nos.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/pandas_data_reader.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/path_util.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/printer.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/files_reference_finder_2.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/files_tools/fingerprint_finder.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/files_tools/range_finder.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/ref_utils.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/reference_exceptions.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/reference_grammar.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/reference_manifest_entry_finder.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/reference_parser.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/reference_results.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/reference_transformer.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/results_reference_finder_2.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/results_tools/data_finder.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/results_tools/date_filter.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/results_tools/identity_finder.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/results_tools/path_filter.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/results_tools/resolve_possibles.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/results_tools/token_filters.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/results_tools/yesterday_or_today_translator.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/references/tools/date_completer.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/run_home_maker.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/s3/s3_data_reader.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/s3/s3_data_writer.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/s3/s3_fingerprinter.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/s3/s3_nos.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/s3/s3_xlsx_data_reader.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/sftp/sftp_config.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/sftp/sftp_data_reader.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/sftp/sftp_data_writer.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/sftp/sftp_fingerprinter.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/sftp/sftp_nos.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/sftp/sftp_walk.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/sftp/sftp_xlsx_data_reader.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/sqliter.py +0 -0
- {csvpath-0.0.560 → csvpath-0.0.561}/csvpath/util/template_util.py +0 -0
- {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.
|
|
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 =
|
|
21
|
-
csvpaths =
|
|
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 =
|
|
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
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
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
|
{csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/otlp/otlp_paths_listener.py
RENAMED
|
@@ -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":
|
|
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),
|
{csvpath-0.0.560 → csvpath-0.0.561}/csvpath/managers/integrations/otlp/otlp_results_listener.py
RENAMED
|
@@ -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
|
-
|
|
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
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
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
|
-
|
|
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
|