csvpath 0.0.581__tar.gz → 0.0.583__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.581 → csvpath-0.0.583}/PKG-INFO +1 -1
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/config/jenkins-local-sftp.ini +3 -3
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/csvpath.py +7 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/file_readers.py +17 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/json/json_data_reader.py +4 -1
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/json/json_reader_helper.py +10 -1
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/line_counter.py +10 -1
- {csvpath-0.0.581 → csvpath-0.0.583}/pyproject.toml +1 -1
- {csvpath-0.0.581 → csvpath-0.0.583}/LICENSE +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/README.md +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/config/config.ini +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/config/extra-functions.imports +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/config/function.imports +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/config/jenkins-local-azure.ini +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/config/jenkins-local-filesystem-mysql.ini +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/config/jenkins-local-gcs.ini +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/config/jenkins-local-s3.ini +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/config/jenkins-windows-azure.ini +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/config/jenkins-windows-gcs.ini +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/config/jenkins-windows-local.ini +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/config/jenkins-windows-s3.ini +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/config/jenkins-windows-sftp.ini +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/gocd/mac/azure-pipeline.gopipeline.json +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/gocd/mac/azure.sh +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/gocd/mac/gcs-pipeline.gopipeline.json +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/gocd/mac/gcs.sh +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/gocd/mac/local-pipeline.gopipeline copy.json +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/gocd/mac/local.sh +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/gocd/mac/s3-pipeline.gopipeline.json +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/gocd/mac/s3.sh +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/gocd/mac/sftp-pipeline.gopipeline.json +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/gocd/mac/sftp.sh +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/gocd/windows/azure.bat +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/gocd/windows/gcs.bat +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/gocd/windows/local.bat +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/gocd/windows/s3.bat +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/gocd/windows/sftp.bat +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/gocd/windows/windows-azure.gopipeline.json +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/gocd/windows/windows-gcs.gopipeline.json +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/gocd/windows/windows-local.gopipeline.json +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/gocd/windows/windows-s3.gopipeline.json +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/gocd/windows/windows-sftp.gopipeline.json +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/integrations/sftpplus/handle_auto_arrival.bat +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/integrations/sftpplus/handle_auto_arrival.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/integrations/sftpplus/handle_auto_arrival.sh +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/integrations/sftpplus/handle_mailbox_arrival.bat +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/integrations/sftpplus/handle_mailbox_arrival.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/integrations/sftpplus/handle_mailbox_arrival.sh +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/integrations/sqlite/csvpath +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/assets/integrations/sqlite/schema.sql +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/config/config.ini +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/config/env.json +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/__init__.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/cli/__init__.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/cli/asker.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/cli/cli.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/cli/const.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/cli/debug_config.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/cli/drill_down.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/cli/function_describer.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/cli/function_lister.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/cli/selecter.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/csvpaths.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/__init__.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/errors/error.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/errors/error_collector.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/errors/error_comms.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/errors/error_manager.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/files/file_manager.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/files/file_metadata.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/files/file_registrar.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/files/files_listener.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/files/lines_and_headers_cacher.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/ckan/ckan.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/ckan/ckan_listener.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/ckan/datafile.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/ckan/dataset.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/ol/event.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/ol/event_result.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/ol/file_listener_ol.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/ol/job.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/ol/ol_listener.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/ol/paths_listener_ol.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/ol/result_listener_ol.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/ol/results_listener_ol.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/ol/run.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/ol/run_listener_ol.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/ol/run_state.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/ol/sender.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/otlp/error_metrics.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/otlp/metrics.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/otlp/otlp_error_listener.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/otlp/otlp_file_listener.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/otlp/otlp_listener.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/otlp/otlp_paths_listener.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/otlp/otlp_result_listener.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/otlp/otlp_results_listener.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/scripts/scripts_results_listener.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/sftp/sftp_sender.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/sftpplus/arrival_handler.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/sftpplus/rpc.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/sftpplus/sftpplus_listener.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/sftpplus/transfer_creator.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/sftpplus/transfers.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/slack/event.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/slack/sender.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/sql/engine.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/sql/sql_file_listener.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/sql/sql_listener.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/sql/sql_paths_listener.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/sql/sql_result_listener.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/sql/sql_results_listener.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/sql/tables.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/sql/updates.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/sqlite/schema.sql +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/sqlite/sqlite_result_listener.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/sqlite/sqlite_results_listener.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/webhook/webhook_listener.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/webhook/webhook_results_listener.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/listener.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/metadata.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/paths/paths_listener.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/paths/paths_manager.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/paths/paths_metadata.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/paths/paths_registrar.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/registrar.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/results/readers/file_errors_reader.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/results/readers/file_lines_reader.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/results/readers/file_printouts_reader.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/results/readers/file_unmatched_reader.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/results/readers/readers.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/results/result.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/results/result_file_reader.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/results/result_metadata.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/results/result_registrar.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/results/result_serializer.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/results/results_manager.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/results/results_metadata.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/results/results_registrar.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/run/run_listener_stdout.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/run/run_metadata.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/run/run_registrar.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/test_listener.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/__init__.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/__init__.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/args.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/args_helper.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/boolean/all.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/boolean/andf.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/boolean/any.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/boolean/between.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/boolean/empty.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/boolean/exists.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/boolean/inf.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/boolean/no.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/boolean/notf.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/boolean/orf.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/boolean/yes.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/counting/count.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/counting/count_bytes.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/counting/count_headers.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/counting/count_lines.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/counting/count_scans.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/counting/counter.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/counting/every.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/counting/has_matches.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/counting/increment.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/counting/tally.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/counting/total_lines.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/dates/now.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/dates/part.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/dates/roll.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/function.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/function_factory.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/function_finder.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/function_focus.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/headers/append.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/headers/collect.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/headers/empty_stack.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/headers/end.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/headers/header_name.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/headers/header_names_mismatch.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/headers/headers.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/headers/headers_stack.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/headers/insert.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/headers/line_before.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/headers/mismatch.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/headers/remove.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/headers/rename.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/headers/replace.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/headers/reset_headers.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/json/jsonpath.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/lines/advance.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/lines/after_blank.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/lines/dups.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/lines/first.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/lines/first_line.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/lines/last.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/lines/stop.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/math/above.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/math/add.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/math/divide.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/math/equals.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/math/intf.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/math/mod.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/math/multiply.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/math/odd.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/math/round.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/math/subtotal.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/math/subtract.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/math/sum.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/misc/fingerprint.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/misc/importf.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/misc/random.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/print/jinjaf.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/print/print_line.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/print/print_queue.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/print/printf.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/print/table.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/stats/minf.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/stats/nminmax.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/stats/percent.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/stats/percent_unique.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/stats/stdev.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/strings/alter.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/strings/caps.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/strings/concat.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/strings/contains.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/strings/format.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/strings/length.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/strings/lower.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/strings/metaphone.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/strings/regex.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/strings/starts_with.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/strings/strip.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/strings/substring.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/strings/upper.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/testing/debug.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/types/__init__.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/types/blank.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/types/boolean.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/types/datatype.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/types/datef.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/types/decimal.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/types/email.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/types/nonef.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/types/string.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/types/type.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/types/url.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/types/wildcard.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/validity/fail.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/validity/failed.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/validity/line.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/variables/clear.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/variables/get.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/variables/index_of.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/variables/pushpop.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/variables/put.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/variables/track.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/variables/variables.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/functions/xml/xpath.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/lark_parser.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/lark_transformer.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/matcher.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/productions/__init__.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/productions/equality.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/productions/expression.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/productions/header.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/productions/matchable.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/productions/qualified.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/productions/reference.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/productions/term.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/productions/variable.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/util/exceptions.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/util/expression_encoder.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/util/expression_utility.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/util/lark_print_parser.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/util/print_parser.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/matching/util/runtime_data_collector.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/modes/error_mode.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/modes/explain_mode.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/modes/files_mode.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/modes/logic_mode.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/modes/mode_controller.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/modes/print_mode.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/modes/return_mode.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/modes/run_mode.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/modes/source_mode.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/modes/transfer_mode.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/modes/unmatched_mode.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/modes/validation_mode.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/scanning/__init__.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/scanning/scanner2.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/scanning/scanner2_parser.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/scanning/scanner2_transformer.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/azure/azure_data_reader.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/azure/azure_data_writer.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/azure/azure_fingerprinter.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/azure/azure_json_data_reader.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/azure/azure_nos.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/azure/azure_utils.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/azure/azure_xlsx_data_reader.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/backend_check.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/box.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/cache.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/caser.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/class_loader.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/code.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/config.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/config_env.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/config_exception.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/date_util.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/exceptions.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/file_info.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/file_writers.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/gcs/gcs_data_reader.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/gcs/gcs_data_writer.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/gcs/gcs_fingerprinter.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/gcs/gcs_json_data_reader.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/gcs/gcs_nos.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/gcs/gcs_utils.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/gcs/gcs_xlsx_data_reader.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/hasher.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/http/http_data_reader.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/intermediary.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/last_line_stats.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/line_monitor.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/line_spooler.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/log_utility.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/metadata_parser.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/nos.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/pandas_data_reader.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/path_util.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/printer.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/py_file_utility.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/references/files_reference_finder_2.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/references/files_tools/fingerprint_finder.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/references/files_tools/range_finder.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/references/ref_utils.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/references/reference_exceptions.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/references/reference_grammar.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/references/reference_manifest_entry_finder.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/references/reference_parser.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/references/reference_results.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/references/reference_transformer.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/references/results_reference_finder_2.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/references/results_tools/data_finder.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/references/results_tools/date_filter.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/references/results_tools/identity_finder.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/references/results_tools/path_filter.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/references/results_tools/resolve_possibles.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/references/results_tools/token_filters.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/references/results_tools/yesterday_or_today_translator.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/references/tools/date_completer.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/run_home_maker.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/s3/s3_data_reader.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/s3/s3_data_writer.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/s3/s3_fingerprinter.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/s3/s3_json_data_reader.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/s3/s3_nos.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/s3/s3_utils.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/s3/s3_xlsx_data_reader.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/sftp/sftp_config.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/sftp/sftp_data_reader.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/sftp/sftp_data_writer.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/sftp/sftp_fingerprinter.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/sftp/sftp_json_data_reader.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/sftp/sftp_nos.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/sftp/sftp_walk.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/sftp/sftp_xlsx_data_reader.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/sqliter.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/template_util.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/var_utility.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/csvpath/util/xlsx/xlsx_data_reader.py +0 -0
- {csvpath-0.0.581 → csvpath-0.0.583}/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.583
|
|
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
|
|
@@ -25,7 +25,7 @@ path = cache
|
|
|
25
25
|
use_cache = no
|
|
26
26
|
|
|
27
27
|
[functions]
|
|
28
|
-
imports =
|
|
28
|
+
imports =
|
|
29
29
|
|
|
30
30
|
[results]
|
|
31
31
|
archive = tmp/sftp/archive
|
|
@@ -94,7 +94,7 @@ port = SFTPPLUS_PORT
|
|
|
94
94
|
admin_username = SFTPPLUS_ADMIN_USERNAME
|
|
95
95
|
admin_password = SFTPPLUS_ADMIN_PASSWORD
|
|
96
96
|
api_url = https://. . . :10020/json
|
|
97
|
-
scripts_dir =
|
|
97
|
+
scripts_dir =
|
|
98
98
|
execute_timeout = 300
|
|
99
99
|
|
|
100
100
|
[ckan]
|
|
@@ -109,5 +109,5 @@ timeout = 5
|
|
|
109
109
|
verify = False
|
|
110
110
|
|
|
111
111
|
[slack]
|
|
112
|
-
webhook_url =
|
|
112
|
+
webhook_url =
|
|
113
113
|
|
|
@@ -1234,6 +1234,13 @@ class CsvPath(ErrorCollector, Printer): # pylint: disable=R0902, R0904
|
|
|
1234
1234
|
)
|
|
1235
1235
|
for line in reader.next():
|
|
1236
1236
|
self.track_line(line=line)
|
|
1237
|
+
#
|
|
1238
|
+
# some formats embed headers in each line. JSONL headers are the dict keys in
|
|
1239
|
+
# each line that uses a dict
|
|
1240
|
+
#
|
|
1241
|
+
if reader.updates_headers:
|
|
1242
|
+
_ = reader.current_headers
|
|
1243
|
+
self.headers = self.headers if _ is None else _
|
|
1237
1244
|
yield line
|
|
1238
1245
|
self.finalize()
|
|
1239
1246
|
|
|
@@ -23,6 +23,23 @@ class DataFileReader(ABC):
|
|
|
23
23
|
self._encoding = None
|
|
24
24
|
self.mode = mode
|
|
25
25
|
self.encoding = encoding
|
|
26
|
+
self._current_headers = None
|
|
27
|
+
self._updates_headers = False
|
|
28
|
+
|
|
29
|
+
#
|
|
30
|
+
# some formats -- esp. JSONL -- embed their headers line-by-line
|
|
31
|
+
#
|
|
32
|
+
@property
|
|
33
|
+
def updates_headers(self) -> bool:
|
|
34
|
+
return self._updates_headers
|
|
35
|
+
|
|
36
|
+
@property
|
|
37
|
+
def current_headers(self) -> list[str]:
|
|
38
|
+
return self._current_headers
|
|
39
|
+
|
|
40
|
+
@current_headers.setter
|
|
41
|
+
def current_headers(self, headers: list[str]) -> None:
|
|
42
|
+
self._current_headers = headers
|
|
26
43
|
|
|
27
44
|
@classmethod
|
|
28
45
|
def register_data(cls, *, path, filelike) -> None:
|
|
@@ -27,6 +27,7 @@ class JsonDataReader(DataFileReader):
|
|
|
27
27
|
self.path = path
|
|
28
28
|
self.mode = mode
|
|
29
29
|
self.encoding = encoding
|
|
30
|
+
self._updates_headers = True
|
|
30
31
|
|
|
31
32
|
def next(self) -> list[str]:
|
|
32
33
|
with jsonlines.open(self.path) as reader:
|
|
@@ -35,10 +36,12 @@ class JsonDataReader(DataFileReader):
|
|
|
35
36
|
line = JsonReaderHelper.line_from_obj(obj, i)
|
|
36
37
|
if isinstance(line, tuple):
|
|
37
38
|
headers = line[0]
|
|
39
|
+
self.current_headers = headers
|
|
38
40
|
line = line[1]
|
|
39
|
-
yield headers
|
|
41
|
+
# yield headers
|
|
40
42
|
yield line
|
|
41
43
|
else:
|
|
44
|
+
self.current_headers = line[:]
|
|
42
45
|
yield line
|
|
43
46
|
i += 1
|
|
44
47
|
|
|
@@ -74,7 +74,13 @@ class JsonReaderHelper:
|
|
|
74
74
|
if isinstance(obj, (tuple, list)):
|
|
75
75
|
return ["" if o is None else str(o) for o in obj]
|
|
76
76
|
elif isinstance(obj, dict):
|
|
77
|
-
|
|
77
|
+
#
|
|
78
|
+
# new theory is that we don't sort the keys because headers change on a row-by-row
|
|
79
|
+
# so the positions in the header list don't have meaning and there is no other value
|
|
80
|
+
# to the keys being sorted, and, moreover, if the key order had any meaning to the
|
|
81
|
+
# data generator that information is lost if we sort.
|
|
82
|
+
#
|
|
83
|
+
# obj = {key: obj[key] for key in sorted(obj)}
|
|
78
84
|
keys = list(obj.keys())
|
|
79
85
|
#
|
|
80
86
|
# we sort because a dict does require a certain order of its keys.
|
|
@@ -82,12 +88,14 @@ class JsonReaderHelper:
|
|
|
82
88
|
# order on any given line.
|
|
83
89
|
#
|
|
84
90
|
line = [cls.string_or_date_string(obj[k]) for k in keys]
|
|
91
|
+
return (keys, line)
|
|
85
92
|
#
|
|
86
93
|
# make a header row if line number is 0 else just a data row
|
|
87
94
|
#
|
|
88
95
|
#
|
|
89
96
|
# check if we have headers for values. i.e. keys == values in first line
|
|
90
97
|
#
|
|
98
|
+
"""
|
|
91
99
|
same = True
|
|
92
100
|
if line_number == 0:
|
|
93
101
|
for i, _ in enumerate(line):
|
|
@@ -97,6 +105,7 @@ class JsonReaderHelper:
|
|
|
97
105
|
if line_number == 0 and not same:
|
|
98
106
|
return (keys, line)
|
|
99
107
|
return line
|
|
108
|
+
"""
|
|
100
109
|
else:
|
|
101
110
|
return cls.string_or_date_string(obj)
|
|
102
111
|
|
|
@@ -36,7 +36,16 @@ class LineCounter:
|
|
|
36
36
|
lm.next_line(last_line=[], data=line)
|
|
37
37
|
if len(line) == 0 and self.csvpathx.skip_blank_lines:
|
|
38
38
|
continue
|
|
39
|
-
|
|
39
|
+
#
|
|
40
|
+
# some data formats embed headers in each line -- e.g. JSONL.
|
|
41
|
+
# in that case, we never have a header line. we'll just take the
|
|
42
|
+
# first headers available. in JSONL headers are an even looser
|
|
43
|
+
# concept than in CSV. it is very possible that a JSONL file's
|
|
44
|
+
# headers never settle for more than one line.
|
|
45
|
+
#
|
|
46
|
+
if reader.updates_headers and reader.current_headers:
|
|
47
|
+
line = reader.current_headers
|
|
48
|
+
if (not headers or len(headers) == 0) and line and len(line) > 0:
|
|
40
49
|
headers = line[:]
|
|
41
50
|
if not headers:
|
|
42
51
|
headers = []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "csvpath"
|
|
3
|
-
version = "0.0.
|
|
3
|
+
version = "0.0.583"
|
|
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
|
{csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/otlp/otlp_error_listener.py
RENAMED
|
File without changes
|
{csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/otlp/otlp_file_listener.py
RENAMED
|
File without changes
|
|
File without changes
|
{csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/otlp/otlp_paths_listener.py
RENAMED
|
File without changes
|
{csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/otlp/otlp_result_listener.py
RENAMED
|
File without changes
|
{csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/otlp/otlp_results_listener.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/sftpplus/arrival_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
{csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/sftpplus/sftpplus_listener.py
RENAMED
|
File without changes
|
{csvpath-0.0.581 → csvpath-0.0.583}/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.581 → csvpath-0.0.583}/csvpath/managers/integrations/sql/sql_result_listener.py
RENAMED
|
File without changes
|
{csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/sql/sql_results_listener.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/sqlite/sqlite_result_listener.py
RENAMED
|
File without changes
|
{csvpath-0.0.581 → csvpath-0.0.583}/csvpath/managers/integrations/sqlite/sqlite_results_listener.py
RENAMED
|
File without changes
|
{csvpath-0.0.581 → csvpath-0.0.583}/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.581 → csvpath-0.0.583}/csvpath/managers/results/readers/file_printouts_reader.py
RENAMED
|
File without changes
|
{csvpath-0.0.581 → csvpath-0.0.583}/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
|