csvpath 0.0.586__tar.gz → 0.0.587__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.586 → csvpath-0.0.587}/PKG-INFO +1 -1
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/function_factory.py +20 -4
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/function_finder.py +17 -1
- {csvpath-0.0.586 → csvpath-0.0.587}/pyproject.toml +1 -1
- {csvpath-0.0.586 → csvpath-0.0.587}/LICENSE +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/README.md +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/config/config.ini +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/config/extra-functions.imports +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/config/function.imports +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/config/jenkins-local-azure.ini +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/config/jenkins-local-filesystem-mysql.ini +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/config/jenkins-local-gcs.ini +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/config/jenkins-local-s3.ini +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/config/jenkins-local-sftp.ini +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/config/jenkins-windows-azure.ini +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/config/jenkins-windows-gcs.ini +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/config/jenkins-windows-local.ini +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/config/jenkins-windows-s3.ini +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/config/jenkins-windows-sftp.ini +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/gocd/mac/azure-pipeline.gopipeline.json +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/gocd/mac/azure.sh +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/gocd/mac/gcs-pipeline.gopipeline.json +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/gocd/mac/gcs.sh +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/gocd/mac/local-pipeline.gopipeline copy.json +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/gocd/mac/local.sh +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/gocd/mac/s3-pipeline.gopipeline.json +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/gocd/mac/s3.sh +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/gocd/mac/sftp-pipeline.gopipeline.json +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/gocd/mac/sftp.sh +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/gocd/windows/azure.bat +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/gocd/windows/gcs.bat +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/gocd/windows/local.bat +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/gocd/windows/s3.bat +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/gocd/windows/sftp.bat +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/gocd/windows/windows-azure.gopipeline.json +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/gocd/windows/windows-gcs.gopipeline.json +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/gocd/windows/windows-local.gopipeline.json +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/gocd/windows/windows-s3.gopipeline.json +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/gocd/windows/windows-sftp.gopipeline.json +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/integrations/sftpplus/handle_auto_arrival.bat +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/integrations/sftpplus/handle_auto_arrival.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/integrations/sftpplus/handle_auto_arrival.sh +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/integrations/sftpplus/handle_mailbox_arrival.bat +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/integrations/sftpplus/handle_mailbox_arrival.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/integrations/sftpplus/handle_mailbox_arrival.sh +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/integrations/sqlite/csvpath +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/assets/integrations/sqlite/schema.sql +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/config/config.ini +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/config/env.json +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/__init__.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/cli/__init__.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/cli/asker.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/cli/cli.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/cli/const.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/cli/debug_config.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/cli/drill_down.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/cli/function_describer.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/cli/function_lister.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/cli/selecter.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/csvpath.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/csvpaths.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/__init__.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/errors/error.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/errors/error_collector.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/errors/error_comms.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/errors/error_manager.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/files/file_manager.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/files/file_metadata.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/files/file_registrar.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/files/files_listener.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/files/lines_and_headers_cacher.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/ckan/ckan.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/ckan/ckan_listener.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/ckan/datafile.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/ckan/dataset.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/ol/event.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/ol/event_result.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/ol/file_listener_ol.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/ol/job.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/ol/ol_listener.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/ol/paths_listener_ol.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/ol/result_listener_ol.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/ol/results_listener_ol.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/ol/run.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/ol/run_listener_ol.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/ol/run_state.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/ol/sender.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/otlp/error_metrics.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/otlp/metrics.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/otlp/otlp_error_listener.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/otlp/otlp_file_listener.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/otlp/otlp_listener.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/otlp/otlp_paths_listener.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/otlp/otlp_result_listener.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/otlp/otlp_results_listener.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/scripts/scripts_results_listener.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/sftp/sftp_sender.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/sftpplus/arrival_handler.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/sftpplus/rpc.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/sftpplus/sftpplus_listener.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/sftpplus/transfer_creator.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/sftpplus/transfers.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/slack/event.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/slack/sender.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/sql/engine.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/sql/sql_file_listener.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/sql/sql_listener.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/sql/sql_paths_listener.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/sql/sql_result_listener.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/sql/sql_results_listener.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/sql/tables.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/sql/updates.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/sqlite/schema.sql +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/sqlite/sqlite_result_listener.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/sqlite/sqlite_results_listener.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/webhook/webhook_listener.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/webhook/webhook_results_listener.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/listener.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/metadata.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/paths/paths_listener.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/paths/paths_manager.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/paths/paths_metadata.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/paths/paths_registrar.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/registrar.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/results/readers/file_errors_reader.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/results/readers/file_lines_reader.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/results/readers/file_printouts_reader.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/results/readers/file_unmatched_reader.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/results/readers/readers.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/results/result.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/results/result_file_reader.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/results/result_metadata.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/results/result_registrar.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/results/result_serializer.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/results/results_manager.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/results/results_metadata.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/results/results_registrar.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/run/run_listener_stdout.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/run/run_metadata.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/run/run_registrar.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/test_listener.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/__init__.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/__init__.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/args.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/args_helper.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/boolean/all.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/boolean/andf.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/boolean/any.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/boolean/between.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/boolean/empty.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/boolean/exists.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/boolean/inf.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/boolean/no.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/boolean/notf.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/boolean/orf.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/boolean/yes.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/counting/count.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/counting/count_bytes.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/counting/count_headers.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/counting/count_lines.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/counting/count_scans.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/counting/counter.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/counting/every.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/counting/has_matches.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/counting/increment.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/counting/tally.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/counting/total_lines.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/dates/now.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/dates/part.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/dates/roll.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/function.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/function_focus.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/headers/append.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/headers/collect.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/headers/empty_stack.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/headers/end.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/headers/header_name.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/headers/header_names_mismatch.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/headers/headers.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/headers/headers_stack.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/headers/insert.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/headers/line_before.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/headers/mismatch.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/headers/remove.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/headers/rename.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/headers/replace.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/headers/reset_headers.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/json/jsonpath.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/lines/advance.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/lines/after_blank.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/lines/dups.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/lines/first.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/lines/first_line.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/lines/last.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/lines/stop.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/math/above.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/math/add.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/math/divide.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/math/equals.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/math/intf.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/math/mod.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/math/multiply.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/math/odd.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/math/round.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/math/subtotal.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/math/subtract.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/math/sum.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/misc/fingerprint.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/misc/importf.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/misc/random.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/print/jinjaf.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/print/print_line.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/print/print_queue.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/print/printf.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/print/table.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/stats/minf.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/stats/nminmax.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/stats/percent.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/stats/percent_unique.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/stats/stdev.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/strings/alter.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/strings/caps.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/strings/concat.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/strings/contains.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/strings/format.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/strings/length.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/strings/lower.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/strings/metaphone.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/strings/regex.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/strings/starts_with.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/strings/strip.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/strings/substring.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/strings/upper.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/testing/debug.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/types/__init__.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/types/blank.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/types/boolean.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/types/datatype.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/types/datef.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/types/decimal.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/types/email.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/types/nonef.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/types/string.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/types/type.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/types/url.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/types/wildcard.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/validity/fail.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/validity/failed.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/validity/line.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/variables/clear.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/variables/get.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/variables/index_of.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/variables/pushpop.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/variables/put.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/variables/track.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/variables/variables.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/xml/xpath.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/lark_parser.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/lark_transformer.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/matcher.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/productions/__init__.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/productions/equality.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/productions/expression.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/productions/header.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/productions/matchable.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/productions/qualified.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/productions/reference.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/productions/term.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/productions/variable.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/util/exceptions.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/util/expression_encoder.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/util/expression_utility.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/util/lark_print_parser.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/util/print_parser.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/util/runtime_data_collector.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/modes/error_mode.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/modes/explain_mode.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/modes/files_mode.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/modes/logic_mode.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/modes/mode_controller.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/modes/print_mode.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/modes/return_mode.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/modes/run_mode.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/modes/source_mode.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/modes/transfer_mode.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/modes/unmatched_mode.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/modes/validation_mode.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/scanning/__init__.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/scanning/scanner2.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/scanning/scanner2_parser.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/scanning/scanner2_transformer.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/azure/azure_data_reader.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/azure/azure_data_writer.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/azure/azure_fingerprinter.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/azure/azure_json_data_reader.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/azure/azure_nos.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/azure/azure_utils.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/azure/azure_xlsx_data_reader.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/backend_check.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/box.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/cache.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/caser.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/class_loader.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/code.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/config.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/config_env.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/config_exception.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/date_util.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/exceptions.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/file_info.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/file_readers.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/file_writers.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/gcs/gcs_data_reader.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/gcs/gcs_data_writer.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/gcs/gcs_fingerprinter.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/gcs/gcs_json_data_reader.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/gcs/gcs_nos.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/gcs/gcs_utils.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/gcs/gcs_xlsx_data_reader.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/hasher.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/http/http_data_reader.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/intermediary.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/json/json_data_reader.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/json/json_reader_helper.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/last_line_stats.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/line_counter.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/line_monitor.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/line_spooler.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/log_utility.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/metadata_parser.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/nos.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/pandas_data_reader.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/path_util.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/printer.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/py_file_utility.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/references/files_reference_finder_2.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/references/files_tools/fingerprint_finder.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/references/files_tools/range_finder.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/references/ref_utils.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/references/reference_exceptions.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/references/reference_grammar.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/references/reference_manifest_entry_finder.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/references/reference_parser.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/references/reference_results.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/references/reference_transformer.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/references/results_reference_finder_2.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/references/results_tools/data_finder.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/references/results_tools/date_filter.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/references/results_tools/identity_finder.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/references/results_tools/path_filter.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/references/results_tools/resolve_possibles.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/references/results_tools/token_filters.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/references/results_tools/yesterday_or_today_translator.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/references/tools/date_completer.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/run_home_maker.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/s3/s3_data_reader.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/s3/s3_data_writer.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/s3/s3_fingerprinter.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/s3/s3_json_data_reader.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/s3/s3_nos.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/s3/s3_utils.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/s3/s3_xlsx_data_reader.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/sftp/sftp_config.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/sftp/sftp_data_reader.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/sftp/sftp_data_writer.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/sftp/sftp_fingerprinter.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/sftp/sftp_json_data_reader.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/sftp/sftp_nos.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/sftp/sftp_walk.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/sftp/sftp_xlsx_data_reader.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/sqliter.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/template_util.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/var_utility.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/xlsx/xlsx_data_reader.py +0 -0
- {csvpath-0.0.586 → csvpath-0.0.587}/csvpath/util/xlsx/xlsx_reader_helper.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.587
|
|
4
4
|
Summary: A data preboarding framework for ingesting, managing, and validating CSV, Excel, and other tabular data files using a Collect, Store, Validate, Publish architecture to create a trusted publisher for downstream data consumers.
|
|
5
5
|
Author: David Kershaw
|
|
6
6
|
Author-email: info@csvpath.org
|
|
@@ -139,6 +139,7 @@ class FunctionFactory:
|
|
|
139
139
|
@classmethod
|
|
140
140
|
def add_function(cls, name: str, function: Function) -> None:
|
|
141
141
|
"""use to add a new, external function at runtime"""
|
|
142
|
+
|
|
142
143
|
if name is None:
|
|
143
144
|
name = function.name
|
|
144
145
|
if name is None:
|
|
@@ -150,18 +151,27 @@ class FunctionFactory:
|
|
|
150
151
|
raise InvalidNameException("Name must not be an empty string")
|
|
151
152
|
if not cls.valid_function_name(name): # name.isalpha():
|
|
152
153
|
raise InvalidNameException(f"Name {name} is not valid")
|
|
154
|
+
cls._debug(function.matcher, "Looking for an existing function named %s", name)
|
|
153
155
|
if cls.get_function(None, name=name, find_external_functions=False) is not None:
|
|
154
156
|
function.matcher.csvpath.logger.warning(
|
|
155
157
|
"Internal function is overriden by external function: %s", name
|
|
156
158
|
)
|
|
157
|
-
# raise InvalidNameException("Built-in functions cannot be overriden")
|
|
158
159
|
if not isinstance(function, Function):
|
|
159
160
|
# pass as an instance, not a class, for specificity. good to do?
|
|
160
161
|
raise InvalidChildException(
|
|
161
162
|
"Function being registered must be passed as an instance"
|
|
162
163
|
)
|
|
164
|
+
cls._debug(function.matcher, "Adding %s as key to %s", name, function.__class__)
|
|
163
165
|
cls.NOT_MY_FUNCTION[name] = function.__class__
|
|
164
166
|
|
|
167
|
+
@classmethod
|
|
168
|
+
def _debug(cls, matcher, txt: str, obj=None, obj2=None) -> None:
|
|
169
|
+
if matcher is None:
|
|
170
|
+
return
|
|
171
|
+
if matcher.csvpath is None:
|
|
172
|
+
return
|
|
173
|
+
matcher.csvpath.logger.debug(txt, obj, obj2)
|
|
174
|
+
|
|
165
175
|
#
|
|
166
176
|
# valid function names start with a letter and contain only letters,
|
|
167
177
|
# numbers, periods, and/or underscores. the grammar allows '.' and '_' at the
|
|
@@ -287,9 +297,15 @@ class FunctionFactory:
|
|
|
287
297
|
# if proj not set we check for name
|
|
288
298
|
#
|
|
289
299
|
qname = cls.qname(matcher=matcher, name=name)
|
|
300
|
+
cls._debug(matcher, "Qualified name of %s is %s", name, qname)
|
|
290
301
|
if qname in FunctionFactory.NOT_MY_FUNCTION:
|
|
291
302
|
f = cls.NOT_MY_FUNCTION[qname]
|
|
292
303
|
f = f(matcher, name, child)
|
|
304
|
+
cls._debug(matcher, "Found %s as %s", qname, f)
|
|
305
|
+
if f is None:
|
|
306
|
+
cls._debug(
|
|
307
|
+
matcher, "%s not in: %s", qname, FunctionFactory.NOT_MY_FUNCTION
|
|
308
|
+
)
|
|
293
309
|
return f
|
|
294
310
|
|
|
295
311
|
@classmethod
|
|
@@ -308,10 +324,10 @@ class FunctionFactory:
|
|
|
308
324
|
return qname
|
|
309
325
|
|
|
310
326
|
@classmethod
|
|
311
|
-
def improve_name(cls, name:str) -> str:
|
|
327
|
+
def improve_name(cls, name: str) -> str:
|
|
312
328
|
ffrom = " `~!@#$%^&*()_+-=[]\\{}|;':\",./<>?"
|
|
313
|
-
to
|
|
314
|
-
table = str.maketrans(ffrom,to)
|
|
329
|
+
to = "1234567890abcdefghijklmnopqrstuvw"
|
|
330
|
+
table = str.maketrans(ffrom, to)
|
|
315
331
|
name = name.translate(table)
|
|
316
332
|
return name
|
|
317
333
|
|
|
@@ -24,6 +24,7 @@ class FunctionFinder: # pylint: disable=R0903
|
|
|
24
24
|
if path is None or path.strip() == "":
|
|
25
25
|
matcher.csvpath.logger.error("No [functions][imports] in config.ini")
|
|
26
26
|
return
|
|
27
|
+
cls._debug(matcher, "Functions import file is at %s", path)
|
|
27
28
|
if not os.path.exists(path):
|
|
28
29
|
matcher.csvpath.logger.error(
|
|
29
30
|
f"[functions][imports] path {path} in {config.configpath} does not exist"
|
|
@@ -35,8 +36,10 @@ class FunctionFinder: # pylint: disable=R0903
|
|
|
35
36
|
i = 0
|
|
36
37
|
for line in file:
|
|
37
38
|
i += 1
|
|
38
|
-
|
|
39
|
+
line = str(line).strip()
|
|
40
|
+
if line == "" or line.startswith("#"):
|
|
39
41
|
continue
|
|
42
|
+
cls._debug(matcher, "Adding function %s", line)
|
|
40
43
|
cls._add_function(matcher, func_fact, line)
|
|
41
44
|
matcher.csvpath.logger.info("Added %s external functions", i)
|
|
42
45
|
# add a sentinel to keep us from attempting reload.
|
|
@@ -44,6 +47,15 @@ class FunctionFinder: # pylint: disable=R0903
|
|
|
44
47
|
# never be empty
|
|
45
48
|
e = cls.externals_sentinel(matcher)
|
|
46
49
|
func_fact.add_function(e, Yes(None, e))
|
|
50
|
+
cls._debug(matcher, "Added sentinel function %s", e)
|
|
51
|
+
|
|
52
|
+
@classmethod
|
|
53
|
+
def _debug(cls, matcher, txt: str, obj=None, obj2=None) -> None:
|
|
54
|
+
if matcher is None:
|
|
55
|
+
return
|
|
56
|
+
if matcher.csvpath is None:
|
|
57
|
+
return
|
|
58
|
+
matcher.csvpath.logger.debug(txt, obj, obj2)
|
|
47
59
|
|
|
48
60
|
@classmethod
|
|
49
61
|
def externals_sentinel(cls, matcher) -> str:
|
|
@@ -79,10 +91,14 @@ class FunctionFinder: # pylint: disable=R0903
|
|
|
79
91
|
# lines in config are like:
|
|
80
92
|
# from module import class as function-name
|
|
81
93
|
#
|
|
94
|
+
matcher.csvpath.logger.debug("Import line is %s", cs)
|
|
82
95
|
if len(cs) == 6 and cs[0] == "from" and cs[2] == "import" and cs[4] == "as":
|
|
83
96
|
config = matcher.csvpath.config
|
|
84
97
|
instance = ClassLoader.load_private_function(config, s, matcher, cs[5])
|
|
85
98
|
qname = func_fact.qname(matcher=matcher, name=cs[5])
|
|
99
|
+
matcher.csvpath.logger.debug(
|
|
100
|
+
"Adding custom function %s: %s", qname, instance
|
|
101
|
+
)
|
|
86
102
|
func_fact.add_function(qname, instance)
|
|
87
103
|
else:
|
|
88
104
|
raise ConfigurationException("Unclear external function imports: {s}")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "csvpath"
|
|
3
|
-
version = "0.0.
|
|
3
|
+
version = "0.0.587"
|
|
4
4
|
description = "A data preboarding framework for ingesting, managing, and validating CSV, Excel, and other tabular data files using a Collect, Store, Validate, Publish architecture to create a trusted publisher for downstream data consumers."
|
|
5
5
|
authors = ["David Kershaw <info@csvpath.org>"]
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/otlp/otlp_error_listener.py
RENAMED
|
File without changes
|
{csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/otlp/otlp_file_listener.py
RENAMED
|
File without changes
|
|
File without changes
|
{csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/otlp/otlp_paths_listener.py
RENAMED
|
File without changes
|
{csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/otlp/otlp_result_listener.py
RENAMED
|
File without changes
|
{csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/otlp/otlp_results_listener.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/sftpplus/arrival_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
{csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/sftpplus/sftpplus_listener.py
RENAMED
|
File without changes
|
{csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/sftpplus/transfer_creator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/sql/sql_result_listener.py
RENAMED
|
File without changes
|
{csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/sql/sql_results_listener.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/sqlite/sqlite_result_listener.py
RENAMED
|
File without changes
|
{csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/sqlite/sqlite_results_listener.py
RENAMED
|
File without changes
|
{csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/integrations/webhook/webhook_listener.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/results/readers/file_printouts_reader.py
RENAMED
|
File without changes
|
{csvpath-0.0.586 → csvpath-0.0.587}/csvpath/managers/results/readers/file_unmatched_reader.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csvpath-0.0.586 → csvpath-0.0.587}/csvpath/matching/functions/headers/header_names_mismatch.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|