From 5353b842c0474175dcfc9553c2f75eb1d7603956 Mon Sep 17 00:00:00 2001 From: Kristinn Date: Wed, 8 Aug 2018 18:44:30 +0000 Subject: [PATCH] Moving code from src/ to base and adding dependency checks (#10) * Moving code from src to root. --- .travis.yml | 2 +- appveyor.yml | 2 +- dependencies.ini | 35 ++ .../.style.yapf | 0 .../__init__.py | 0 .../bll/__init__.py | 0 .../bll/mappings/__init__.py | 0 .../bll/mappings/base_mapping_helper.py | 0 .../bll/mappings/base_sqliteplugin_mapping.py | 0 .../bll/mappings/formatter_init_mapping.py | 0 .../bll/mappings/formatter_mapping.py | 0 .../bll/mappings/formatter_test_mapping.py | 0 .../bll/mappings/mapping_helper.py | 0 .../bll/mappings/parser_init_mapping.py | 0 .../bll/mappings/parser_mapping.py | 0 .../bll/mappings/parser_test_mapping.py | 0 .../bll/services/__init__.py | 0 .../bll/services/base_sqlite_generator.py | 0 .../bll/services/base_sqlite_plugin_helper.py | 0 .../base_sqlite_plugin_path_helper.py | 0 .../bll/services/sqlite_generator.py | 0 .../bll/services/sqlite_plugin_helper.py | 0 .../bll/services/sqlite_plugin_path_helper.py | 0 .../bll/templates/__init__.py | 0 .../templates/formatter_init_template.jinja2 | 0 .../bll/templates/formatter_template.jinja2 | 0 .../templates/formatter_test_template.jinja2 | 0 .../bll/templates/parser_init_template.jinja2 | 0 .../bll/templates/parser_template.jinja2 | 0 .../bll/templates/parser_test_template.jinja2 | 0 .../common/__init__.py | 0 .../common/base_code_formatter.py | 0 .../common/base_file_handler.py | 0 .../common/base_output_handler.py | 0 .../common/code_formatter.py | 0 .../common/file_handler.py | 0 .../common/output_handler_click.py | 0 .../common/type_mapper.py | 0 .../dal/__init__.py | 0 .../dal/base_database_information.py | 0 .../dal/base_explain_query_plan.py | 0 .../dal/base_sql_query_execution.py | 0 .../dal/base_type_helper.py | 0 .../dal/explain_query_plan.py | 0 .../dal/sql_query_data.py | 0 .../dal/sqlite_database_information.py | 0 .../dal/sqlite_query_execution.py | 0 .../dal/sqlite_type_helper.py | 0 .../dependencies.py | 0 .../frontend/__init__.py | 0 .../frontend/controller/__init__.py | 0 .../frontend/controller/sqlite_controller.py | 0 .../frontend/main.py | 0 .../frontend/sqliteplugin/__init__.py | 0 .../frontend/sqliteplugin/commands.py | 0 .../model/__init__.py | 0 .../model/base_data_model.py | 0 .../model/formatter_data_model.py | 0 .../model/formatter_test_data_model.py | 0 .../model/init_data_model.py | 0 .../model/parser_data_model.py | 0 .../model/parser_test_data_model.py | 0 .../model/sql_query_column_model.py | 0 .../model/sql_query_column_model_data.py | 0 .../model/sql_query_column_model_timestamp.py | 0 .../model/sql_query_model.py | 0 src/run_tests.py => run_tests.py | 0 ...r_coverage.py => run_tests_for_coverage.py | 0 src/setup.py => setup.py | 0 {src/tests => tests}/.style.yapf | 0 {src/tests => tests}/__init__.py | 0 {src/tests => tests}/bll/__init__.py | 0 {src/tests => tests}/bll/mappings/__init__.py | 0 .../mappings/test_init_formatter_mapping.py | 0 .../bll/mappings/test_mapping_helper.py | 0 {src/tests => tests}/bll/services/__init__.py | 0 .../bll/services/test_sqlite_generator.py | 0 .../bll/services/test_sqlite_plugin_helper.py | 0 .../test_sqlite_plugin_path_helper.py | 0 {src/tests => tests}/common/__init__.py | 0 .../common/test_file_handler.py | 0 .../common/test_output_handler_click.py | 0 .../common/test_output_handler_file.py | 0 {src/tests => tests}/dal/__init__.py | 0 .../tests => tests}/dal/expected_id_name_data | 0 .../dal/expected_id_name_join_data | 0 .../dal/expected_join_query_data | 0 .../dal/expected_simple_query_data | 0 .../dal/test_explain_query_plan.py | 0 .../dal/test_sqlite_database_information.py | 0 .../dal/test_sqlite_query_execution.py | 0 .../dal/test_sqlite_type_helper.py | 0 .../ExpectedEasyGenerationFiles/formatters.py | 0 .../formatters_init.py | 0 .../formatters_test.py | 0 .../ExpectedEasyGenerationFiles/parsers.py | 0 .../parsers_init.py | 0 .../parsers_test.py | 0 .../formatters.py | 0 .../formatters_init.py | 0 .../formatters_test.py | 0 .../parsers.py | 0 .../parsers_init.py | 0 .../parsers_test.py | 0 .../formatters.py | 0 .../formatters_init.py | 0 .../formatters_test.py | 0 .../parsers.py | 0 .../parsers_init.py | 0 .../parsers_test.py | 0 .../formatters.py | 0 .../formatters_init.py | 0 .../formatters_test.py | 0 .../parsers.py | 0 .../parsers_init.py | 0 .../parsers_test.py | 0 .../formatters.py | 0 .../formatters_init.py | 0 .../formatters_test.py | 0 .../parsers.py | 0 .../parsers_init.py | 0 .../parsers_test.py | 0 .../formatters.py | 0 .../formatters_init.py | 0 .../formatters_test.py | 0 .../parsers.py | 0 .../parsers_init.py | 0 .../parsers_test.py | 0 .../formatters.py | 0 .../formatters_init.py | 0 .../formatters_test.py | 0 .../parsers.py | 0 .../parsers_init.py | 0 .../parsers_test.py | 0 .../formatters.py | 0 .../formatters_init.py | 0 .../formatters_test.py | 0 .../parsers.py | 0 .../parsers_init.py | 0 .../parsers_test.py | 0 .../ExpectedTwoPluginsFiles/formatters1.py | 0 .../ExpectedTwoPluginsFiles/formatters2.py | 0 .../formatters_init.py | 0 .../formatters_test1.py | 0 .../formatters_test2.py | 0 .../ExpectedTwoPluginsFiles/parsers1.py | 0 .../ExpectedTwoPluginsFiles/parsers2.py | 0 .../ExpectedTwoPluginsFiles/parsers_init.py | 0 .../ExpectedTwoPluginsFiles/parsers_test1.py | 0 .../ExpectedTwoPluginsFiles/parsers_test2.py | 0 .../ExpectedWithJoinFiles/formatters.py | 0 .../ExpectedWithJoinFiles/formatters_init.py | 0 .../ExpectedWithJoinFiles/formatters_test.py | 0 .../ExpectedWithJoinFiles/parsers.py | 0 .../ExpectedWithJoinFiles/parsers_init.py | 0 .../ExpectedWithJoinFiles/parsers_test.py | 0 .../end_to_end_test/__init__.py | 0 .../end_to_end_test/end_to_end_test_helper.py | 0 .../end_to_end_test/test_easy_generation.py | 0 .../test_easy_generation_with_abort.py | 0 .../test_easy_generation_with_customizing.py | 0 ...t_easy_generation_with_multiple_selects.py | 0 ...est_easy_generation_with_output_example.py | 0 .../test_easy_generation_with_own_row_name.py | 0 ...est_easy_generation_with_own_time_event.py | 0 .../test_generation_with_an_existing_name.py | 0 ...est_generation_with_option_at_tool_call.py | 0 .../end_to_end_test/test_help_function.py | 0 .../test_help_function_of_sqlite.py | 0 .../end_to_end_test/test_select_easy_join.py | 0 .../test_select_with_special_characters.py | 0 .../end_to_end_test/test_wrong_path.py | 0 .../end_to_end_test/test_wrong_plugin_name.py | 0 .../test_wrong_sql_query_input.py | 0 .../end_to_end_test/test_wrong_test_file.py | 0 {src/tests => tests}/fake/__init__.py | 0 .../fake/fake_database_information.py | 0 .../fake/fake_explain_query_plan.py | 0 .../tests => tests}/fake/fake_file_handler.py | 0 .../fake/fake_mapping_helper.py | 0 .../fake/fake_sqlite_database_information.py | 0 .../fake/fake_sqlite_plugin_helper.py | 0 .../fake/fake_sqlite_plugin_path_helper.py | 0 .../fake/fake_sqlite_query_execution.py | 0 .../fake/fake_sqliteplugin_mapping.py | 0 {src/tests => tests}/frontend/__init__.py | 0 .../frontend/controller/__init__.py | 0 .../controller/test_sqlite_controller.py | 0 .../frontend/sqliteplugin/__init__.py | 0 .../frontend/sqliteplugin/test_commands.py | 0 {src/tests => tests}/frontend/test_main.py | 0 .../integrationtests/__init__.py | 0 .../expected_files_twitterdb/formatters.py | 0 .../formatters_init.py | 0 .../formatters_test.py | 0 .../expected_files_twitterdb/parsers.py | 0 .../expected_files_twitterdb/parsers_init.py | 0 .../expected_files_twitterdb/parsers_test.py | 0 .../expected_files_typesdb/formatters.py | 0 .../expected_files_typesdb/formatters_init.py | 0 .../expected_files_typesdb/formatters_test.py | 0 .../expected_files_typesdb/parsers.py | 0 .../expected_files_typesdb/parsers_init.py | 0 .../expected_files_typesdb/parsers_test.py | 0 .../test_generating_the_files.py | 0 {src/tests => tests}/model/__init__.py | 0 .../model/test_sql_query_column_model.py | 0 .../test_sql_query_column_model_timestamp.py | 0 {src/tests => tests}/other/__init__.py | 0 .../other/test_dependencies.py | 0 {src/tests => tests}/other/test_version.py | 0 .../tests => tests}/test_database/__init__.py | 0 .../test_database/test_database_names.db | Bin .../test_database/test_database_types.db | Bin .../test_database/twitter_ios.db | Bin .../test_database/twitter_ios_error.db | Bin {src/tests => tests}/test_helper/__init__.py | 0 .../test_helper/output_handler_file.py | 0 .../test_helper/path_helper.py | 0 .../tests => tests}/test_template/__init__.py | 0 .../test_template/test_template.jinja2 | 0 utils/__init__.py | 1 + utils/check_dependencies.py | 25 ++ utils/dependencies.py | 383 ++++++++++++++++++ 224 files changed, 446 insertions(+), 2 deletions(-) create mode 100644 dependencies.ini rename {src/plasoscaffolder => plasoscaffolder}/.style.yapf (100%) rename {src/plasoscaffolder => plasoscaffolder}/__init__.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/bll/__init__.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/bll/mappings/__init__.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/bll/mappings/base_mapping_helper.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/bll/mappings/base_sqliteplugin_mapping.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/bll/mappings/formatter_init_mapping.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/bll/mappings/formatter_mapping.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/bll/mappings/formatter_test_mapping.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/bll/mappings/mapping_helper.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/bll/mappings/parser_init_mapping.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/bll/mappings/parser_mapping.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/bll/mappings/parser_test_mapping.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/bll/services/__init__.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/bll/services/base_sqlite_generator.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/bll/services/base_sqlite_plugin_helper.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/bll/services/base_sqlite_plugin_path_helper.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/bll/services/sqlite_generator.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/bll/services/sqlite_plugin_helper.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/bll/services/sqlite_plugin_path_helper.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/bll/templates/__init__.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/bll/templates/formatter_init_template.jinja2 (100%) rename {src/plasoscaffolder => plasoscaffolder}/bll/templates/formatter_template.jinja2 (100%) rename {src/plasoscaffolder => plasoscaffolder}/bll/templates/formatter_test_template.jinja2 (100%) rename {src/plasoscaffolder => plasoscaffolder}/bll/templates/parser_init_template.jinja2 (100%) rename {src/plasoscaffolder => plasoscaffolder}/bll/templates/parser_template.jinja2 (100%) rename {src/plasoscaffolder => plasoscaffolder}/bll/templates/parser_test_template.jinja2 (100%) rename {src/plasoscaffolder => plasoscaffolder}/common/__init__.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/common/base_code_formatter.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/common/base_file_handler.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/common/base_output_handler.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/common/code_formatter.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/common/file_handler.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/common/output_handler_click.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/common/type_mapper.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/dal/__init__.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/dal/base_database_information.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/dal/base_explain_query_plan.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/dal/base_sql_query_execution.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/dal/base_type_helper.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/dal/explain_query_plan.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/dal/sql_query_data.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/dal/sqlite_database_information.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/dal/sqlite_query_execution.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/dal/sqlite_type_helper.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/dependencies.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/frontend/__init__.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/frontend/controller/__init__.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/frontend/controller/sqlite_controller.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/frontend/main.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/frontend/sqliteplugin/__init__.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/frontend/sqliteplugin/commands.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/model/__init__.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/model/base_data_model.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/model/formatter_data_model.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/model/formatter_test_data_model.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/model/init_data_model.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/model/parser_data_model.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/model/parser_test_data_model.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/model/sql_query_column_model.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/model/sql_query_column_model_data.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/model/sql_query_column_model_timestamp.py (100%) rename {src/plasoscaffolder => plasoscaffolder}/model/sql_query_model.py (100%) rename src/run_tests.py => run_tests.py (100%) rename src/run_tests_for_coverage.py => run_tests_for_coverage.py (100%) rename src/setup.py => setup.py (100%) rename {src/tests => tests}/.style.yapf (100%) rename {src/tests => tests}/__init__.py (100%) rename {src/tests => tests}/bll/__init__.py (100%) rename {src/tests => tests}/bll/mappings/__init__.py (100%) rename {src/tests => tests}/bll/mappings/test_init_formatter_mapping.py (100%) rename {src/tests => tests}/bll/mappings/test_mapping_helper.py (100%) rename {src/tests => tests}/bll/services/__init__.py (100%) rename {src/tests => tests}/bll/services/test_sqlite_generator.py (100%) rename {src/tests => tests}/bll/services/test_sqlite_plugin_helper.py (100%) rename {src/tests => tests}/bll/services/test_sqlite_plugin_path_helper.py (100%) rename {src/tests => tests}/common/__init__.py (100%) rename {src/tests => tests}/common/test_file_handler.py (100%) rename {src/tests => tests}/common/test_output_handler_click.py (100%) rename {src/tests => tests}/common/test_output_handler_file.py (100%) rename {src/tests => tests}/dal/__init__.py (100%) rename {src/tests => tests}/dal/expected_id_name_data (100%) rename {src/tests => tests}/dal/expected_id_name_join_data (100%) rename {src/tests => tests}/dal/expected_join_query_data (100%) rename {src/tests => tests}/dal/expected_simple_query_data (100%) rename {src/tests => tests}/dal/test_explain_query_plan.py (100%) rename {src/tests => tests}/dal/test_sqlite_database_information.py (100%) rename {src/tests => tests}/dal/test_sqlite_query_execution.py (100%) rename {src/tests => tests}/dal/test_sqlite_type_helper.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationFiles/formatters.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationFiles/formatters_init.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationFiles/formatters_test.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationFiles/parsers.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationFiles/parsers_init.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationFiles/parsers_test.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationLongNameFiles/formatters.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationLongNameFiles/formatters_init.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationLongNameFiles/formatters_test.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationLongNameFiles/parsers.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationLongNameFiles/parsers_init.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationLongNameFiles/parsers_test.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationMultipleSelectsFiles/formatters.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationMultipleSelectsFiles/formatters_init.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationMultipleSelectsFiles/formatters_test.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationMultipleSelectsFiles/parsers.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationMultipleSelectsFiles/parsers_init.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationMultipleSelectsFiles/parsers_test.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationOwnColumnNameFiles/formatters.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationOwnColumnNameFiles/formatters_init.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationOwnColumnNameFiles/formatters_test.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationOwnColumnNameFiles/parsers.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationOwnColumnNameFiles/parsers_init.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationOwnColumnNameFiles/parsers_test.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationOwnTimestampFiles/formatters.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationOwnTimestampFiles/formatters_init.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationOwnTimestampFiles/formatters_test.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationOwnTimestampFiles/parsers.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationOwnTimestampFiles/parsers_init.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationOwnTimestampFiles/parsers_test.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationRowNameFiles/formatters.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationRowNameFiles/formatters_init.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationRowNameFiles/formatters_test.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationRowNameFiles/parsers.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationRowNameFiles/parsers_init.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationRowNameFiles/parsers_test.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationWithCustomizationFiles/formatters.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationWithCustomizationFiles/formatters_init.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationWithCustomizationFiles/formatters_test.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationWithCustomizationFiles/parsers.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationWithCustomizationFiles/parsers_init.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationWithCustomizationFiles/parsers_test.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationWithOutputFiles/formatters.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationWithOutputFiles/formatters_init.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationWithOutputFiles/formatters_test.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationWithOutputFiles/parsers.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationWithOutputFiles/parsers_init.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedEasyGenerationWithOutputFiles/parsers_test.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedTwoPluginsFiles/formatters1.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedTwoPluginsFiles/formatters2.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedTwoPluginsFiles/formatters_init.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedTwoPluginsFiles/formatters_test1.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedTwoPluginsFiles/formatters_test2.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedTwoPluginsFiles/parsers1.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedTwoPluginsFiles/parsers2.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedTwoPluginsFiles/parsers_init.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedTwoPluginsFiles/parsers_test1.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedTwoPluginsFiles/parsers_test2.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedWithJoinFiles/formatters.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedWithJoinFiles/formatters_init.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedWithJoinFiles/formatters_test.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedWithJoinFiles/parsers.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedWithJoinFiles/parsers_init.py (100%) rename {src/tests => tests}/end_to_end_test/ExpectedWithJoinFiles/parsers_test.py (100%) rename {src/tests => tests}/end_to_end_test/__init__.py (100%) rename {src/tests => tests}/end_to_end_test/end_to_end_test_helper.py (100%) rename {src/tests => tests}/end_to_end_test/test_easy_generation.py (100%) rename {src/tests => tests}/end_to_end_test/test_easy_generation_with_abort.py (100%) rename {src/tests => tests}/end_to_end_test/test_easy_generation_with_customizing.py (100%) rename {src/tests => tests}/end_to_end_test/test_easy_generation_with_multiple_selects.py (100%) rename {src/tests => tests}/end_to_end_test/test_easy_generation_with_output_example.py (100%) rename {src/tests => tests}/end_to_end_test/test_easy_generation_with_own_row_name.py (100%) rename {src/tests => tests}/end_to_end_test/test_easy_generation_with_own_time_event.py (100%) rename {src/tests => tests}/end_to_end_test/test_generation_with_an_existing_name.py (100%) rename {src/tests => tests}/end_to_end_test/test_generation_with_option_at_tool_call.py (100%) rename {src/tests => tests}/end_to_end_test/test_help_function.py (100%) rename {src/tests => tests}/end_to_end_test/test_help_function_of_sqlite.py (100%) rename {src/tests => tests}/end_to_end_test/test_select_easy_join.py (100%) rename {src/tests => tests}/end_to_end_test/test_select_with_special_characters.py (100%) rename {src/tests => tests}/end_to_end_test/test_wrong_path.py (100%) rename {src/tests => tests}/end_to_end_test/test_wrong_plugin_name.py (100%) rename {src/tests => tests}/end_to_end_test/test_wrong_sql_query_input.py (100%) rename {src/tests => tests}/end_to_end_test/test_wrong_test_file.py (100%) rename {src/tests => tests}/fake/__init__.py (100%) rename {src/tests => tests}/fake/fake_database_information.py (100%) rename {src/tests => tests}/fake/fake_explain_query_plan.py (100%) rename {src/tests => tests}/fake/fake_file_handler.py (100%) rename {src/tests => tests}/fake/fake_mapping_helper.py (100%) rename {src/tests => tests}/fake/fake_sqlite_database_information.py (100%) rename {src/tests => tests}/fake/fake_sqlite_plugin_helper.py (100%) rename {src/tests => tests}/fake/fake_sqlite_plugin_path_helper.py (100%) rename {src/tests => tests}/fake/fake_sqlite_query_execution.py (100%) rename {src/tests => tests}/fake/fake_sqliteplugin_mapping.py (100%) rename {src/tests => tests}/frontend/__init__.py (100%) rename {src/tests => tests}/frontend/controller/__init__.py (100%) rename {src/tests => tests}/frontend/controller/test_sqlite_controller.py (100%) rename {src/tests => tests}/frontend/sqliteplugin/__init__.py (100%) rename {src/tests => tests}/frontend/sqliteplugin/test_commands.py (100%) rename {src/tests => tests}/frontend/test_main.py (100%) rename {src/tests => tests}/integrationtests/__init__.py (100%) rename {src/tests => tests}/integrationtests/expected_files_twitterdb/formatters.py (100%) rename {src/tests => tests}/integrationtests/expected_files_twitterdb/formatters_init.py (100%) rename {src/tests => tests}/integrationtests/expected_files_twitterdb/formatters_test.py (100%) rename {src/tests => tests}/integrationtests/expected_files_twitterdb/parsers.py (100%) rename {src/tests => tests}/integrationtests/expected_files_twitterdb/parsers_init.py (100%) rename {src/tests => tests}/integrationtests/expected_files_twitterdb/parsers_test.py (100%) rename {src/tests => tests}/integrationtests/expected_files_typesdb/formatters.py (100%) rename {src/tests => tests}/integrationtests/expected_files_typesdb/formatters_init.py (100%) rename {src/tests => tests}/integrationtests/expected_files_typesdb/formatters_test.py (100%) rename {src/tests => tests}/integrationtests/expected_files_typesdb/parsers.py (100%) rename {src/tests => tests}/integrationtests/expected_files_typesdb/parsers_init.py (100%) rename {src/tests => tests}/integrationtests/expected_files_typesdb/parsers_test.py (100%) rename {src/tests => tests}/integrationtests/test_generating_the_files.py (100%) rename {src/tests => tests}/model/__init__.py (100%) rename {src/tests => tests}/model/test_sql_query_column_model.py (100%) rename {src/tests => tests}/model/test_sql_query_column_model_timestamp.py (100%) rename {src/tests => tests}/other/__init__.py (100%) rename {src/tests => tests}/other/test_dependencies.py (100%) rename {src/tests => tests}/other/test_version.py (100%) rename {src/tests => tests}/test_database/__init__.py (100%) rename {src/tests => tests}/test_database/test_database_names.db (100%) rename {src/tests => tests}/test_database/test_database_types.db (100%) rename {src/tests => tests}/test_database/twitter_ios.db (100%) rename {src/tests => tests}/test_database/twitter_ios_error.db (100%) rename {src/tests => tests}/test_helper/__init__.py (100%) rename {src/tests => tests}/test_helper/output_handler_file.py (100%) rename {src/tests => tests}/test_helper/path_helper.py (100%) rename {src/tests => tests}/test_template/__init__.py (100%) rename {src/tests => tests}/test_template/test_template.jinja2 (100%) create mode 100644 utils/__init__.py create mode 100755 utils/check_dependencies.py create mode 100644 utils/dependencies.py diff --git a/.travis.yml b/.travis.yml index 1985493..c8c2cff 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,6 +25,6 @@ install: - pip install -r requirements.txt - pip install coverage script: -- if test ${TARGET} = "linux-python36"; then coverage run --source=plasoscaffolder ./src/run_tests_for_coverage.py test; else ./src/run_tests.py; fi +- if test ${TARGET} = "linux-python36"; then coverage run --source=plasoscaffolder ./run_tests_for_coverage.py test; else ./run_tests.py; fi after_success: - if test ${TARGET} = "linux-python36"; then curl -o codecov.sh -s https://codecov.io/bash && /bin/bash ./codecov.sh; fi diff --git a/appveyor.yml b/appveyor.yml index 93fbdc0..b96ebf2 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -17,7 +17,7 @@ test_script: # Note that you must use the environment variable %PYTHON% to refer to # the interpreter you're using - Appveyor does not do anything special # to put the Python evrsion you want to use on PATH. - - "%PYTHON%\\python.exe src\\run_tests.py test" + - "%PYTHON%\\python.exe run_tests.py test" after_test: # This step builds your wheels. diff --git a/dependencies.ini b/dependencies.ini new file mode 100644 index 0000000..47eaadd --- /dev/null +++ b/dependencies.ini @@ -0,0 +1,35 @@ +[click] +dpkg_name: python3-click +minimum_version: 6.7 +pypi_name: click +version_property: __version__ + +[setuptools] +dpkg_name: python3-setuptools +minimum_version: 35.0.2 +pypi_name: setuptools +version_property: __version__ + +[jinja2] +dpkg_name: python3-jinja2 +minimum_version: 2.9.6 +pypi_name: jinja2 +version_property: __version__ + +[colorama] +dpkg_name: python3-colorama +minimum_version: 0.3.7 +pypi_name: colorama +version_property: __version__ + +[yapf] +dpkg_name: python3-yapf +minimum_version: 0.16.1 +pypi_name: yapf +version_property: __version__ + +[pexpect] +dpkg_name: python3-pexpect +minimum_version: 4.2.1 +pypi_name: pexpect +version_property: __version__ diff --git a/src/plasoscaffolder/.style.yapf b/plasoscaffolder/.style.yapf similarity index 100% rename from src/plasoscaffolder/.style.yapf rename to plasoscaffolder/.style.yapf diff --git a/src/plasoscaffolder/__init__.py b/plasoscaffolder/__init__.py similarity index 100% rename from src/plasoscaffolder/__init__.py rename to plasoscaffolder/__init__.py diff --git a/src/plasoscaffolder/bll/__init__.py b/plasoscaffolder/bll/__init__.py similarity index 100% rename from src/plasoscaffolder/bll/__init__.py rename to plasoscaffolder/bll/__init__.py diff --git a/src/plasoscaffolder/bll/mappings/__init__.py b/plasoscaffolder/bll/mappings/__init__.py similarity index 100% rename from src/plasoscaffolder/bll/mappings/__init__.py rename to plasoscaffolder/bll/mappings/__init__.py diff --git a/src/plasoscaffolder/bll/mappings/base_mapping_helper.py b/plasoscaffolder/bll/mappings/base_mapping_helper.py similarity index 100% rename from src/plasoscaffolder/bll/mappings/base_mapping_helper.py rename to plasoscaffolder/bll/mappings/base_mapping_helper.py diff --git a/src/plasoscaffolder/bll/mappings/base_sqliteplugin_mapping.py b/plasoscaffolder/bll/mappings/base_sqliteplugin_mapping.py similarity index 100% rename from src/plasoscaffolder/bll/mappings/base_sqliteplugin_mapping.py rename to plasoscaffolder/bll/mappings/base_sqliteplugin_mapping.py diff --git a/src/plasoscaffolder/bll/mappings/formatter_init_mapping.py b/plasoscaffolder/bll/mappings/formatter_init_mapping.py similarity index 100% rename from src/plasoscaffolder/bll/mappings/formatter_init_mapping.py rename to plasoscaffolder/bll/mappings/formatter_init_mapping.py diff --git a/src/plasoscaffolder/bll/mappings/formatter_mapping.py b/plasoscaffolder/bll/mappings/formatter_mapping.py similarity index 100% rename from src/plasoscaffolder/bll/mappings/formatter_mapping.py rename to plasoscaffolder/bll/mappings/formatter_mapping.py diff --git a/src/plasoscaffolder/bll/mappings/formatter_test_mapping.py b/plasoscaffolder/bll/mappings/formatter_test_mapping.py similarity index 100% rename from src/plasoscaffolder/bll/mappings/formatter_test_mapping.py rename to plasoscaffolder/bll/mappings/formatter_test_mapping.py diff --git a/src/plasoscaffolder/bll/mappings/mapping_helper.py b/plasoscaffolder/bll/mappings/mapping_helper.py similarity index 100% rename from src/plasoscaffolder/bll/mappings/mapping_helper.py rename to plasoscaffolder/bll/mappings/mapping_helper.py diff --git a/src/plasoscaffolder/bll/mappings/parser_init_mapping.py b/plasoscaffolder/bll/mappings/parser_init_mapping.py similarity index 100% rename from src/plasoscaffolder/bll/mappings/parser_init_mapping.py rename to plasoscaffolder/bll/mappings/parser_init_mapping.py diff --git a/src/plasoscaffolder/bll/mappings/parser_mapping.py b/plasoscaffolder/bll/mappings/parser_mapping.py similarity index 100% rename from src/plasoscaffolder/bll/mappings/parser_mapping.py rename to plasoscaffolder/bll/mappings/parser_mapping.py diff --git a/src/plasoscaffolder/bll/mappings/parser_test_mapping.py b/plasoscaffolder/bll/mappings/parser_test_mapping.py similarity index 100% rename from src/plasoscaffolder/bll/mappings/parser_test_mapping.py rename to plasoscaffolder/bll/mappings/parser_test_mapping.py diff --git a/src/plasoscaffolder/bll/services/__init__.py b/plasoscaffolder/bll/services/__init__.py similarity index 100% rename from src/plasoscaffolder/bll/services/__init__.py rename to plasoscaffolder/bll/services/__init__.py diff --git a/src/plasoscaffolder/bll/services/base_sqlite_generator.py b/plasoscaffolder/bll/services/base_sqlite_generator.py similarity index 100% rename from src/plasoscaffolder/bll/services/base_sqlite_generator.py rename to plasoscaffolder/bll/services/base_sqlite_generator.py diff --git a/src/plasoscaffolder/bll/services/base_sqlite_plugin_helper.py b/plasoscaffolder/bll/services/base_sqlite_plugin_helper.py similarity index 100% rename from src/plasoscaffolder/bll/services/base_sqlite_plugin_helper.py rename to plasoscaffolder/bll/services/base_sqlite_plugin_helper.py diff --git a/src/plasoscaffolder/bll/services/base_sqlite_plugin_path_helper.py b/plasoscaffolder/bll/services/base_sqlite_plugin_path_helper.py similarity index 100% rename from src/plasoscaffolder/bll/services/base_sqlite_plugin_path_helper.py rename to plasoscaffolder/bll/services/base_sqlite_plugin_path_helper.py diff --git a/src/plasoscaffolder/bll/services/sqlite_generator.py b/plasoscaffolder/bll/services/sqlite_generator.py similarity index 100% rename from src/plasoscaffolder/bll/services/sqlite_generator.py rename to plasoscaffolder/bll/services/sqlite_generator.py diff --git a/src/plasoscaffolder/bll/services/sqlite_plugin_helper.py b/plasoscaffolder/bll/services/sqlite_plugin_helper.py similarity index 100% rename from src/plasoscaffolder/bll/services/sqlite_plugin_helper.py rename to plasoscaffolder/bll/services/sqlite_plugin_helper.py diff --git a/src/plasoscaffolder/bll/services/sqlite_plugin_path_helper.py b/plasoscaffolder/bll/services/sqlite_plugin_path_helper.py similarity index 100% rename from src/plasoscaffolder/bll/services/sqlite_plugin_path_helper.py rename to plasoscaffolder/bll/services/sqlite_plugin_path_helper.py diff --git a/src/plasoscaffolder/bll/templates/__init__.py b/plasoscaffolder/bll/templates/__init__.py similarity index 100% rename from src/plasoscaffolder/bll/templates/__init__.py rename to plasoscaffolder/bll/templates/__init__.py diff --git a/src/plasoscaffolder/bll/templates/formatter_init_template.jinja2 b/plasoscaffolder/bll/templates/formatter_init_template.jinja2 similarity index 100% rename from src/plasoscaffolder/bll/templates/formatter_init_template.jinja2 rename to plasoscaffolder/bll/templates/formatter_init_template.jinja2 diff --git a/src/plasoscaffolder/bll/templates/formatter_template.jinja2 b/plasoscaffolder/bll/templates/formatter_template.jinja2 similarity index 100% rename from src/plasoscaffolder/bll/templates/formatter_template.jinja2 rename to plasoscaffolder/bll/templates/formatter_template.jinja2 diff --git a/src/plasoscaffolder/bll/templates/formatter_test_template.jinja2 b/plasoscaffolder/bll/templates/formatter_test_template.jinja2 similarity index 100% rename from src/plasoscaffolder/bll/templates/formatter_test_template.jinja2 rename to plasoscaffolder/bll/templates/formatter_test_template.jinja2 diff --git a/src/plasoscaffolder/bll/templates/parser_init_template.jinja2 b/plasoscaffolder/bll/templates/parser_init_template.jinja2 similarity index 100% rename from src/plasoscaffolder/bll/templates/parser_init_template.jinja2 rename to plasoscaffolder/bll/templates/parser_init_template.jinja2 diff --git a/src/plasoscaffolder/bll/templates/parser_template.jinja2 b/plasoscaffolder/bll/templates/parser_template.jinja2 similarity index 100% rename from src/plasoscaffolder/bll/templates/parser_template.jinja2 rename to plasoscaffolder/bll/templates/parser_template.jinja2 diff --git a/src/plasoscaffolder/bll/templates/parser_test_template.jinja2 b/plasoscaffolder/bll/templates/parser_test_template.jinja2 similarity index 100% rename from src/plasoscaffolder/bll/templates/parser_test_template.jinja2 rename to plasoscaffolder/bll/templates/parser_test_template.jinja2 diff --git a/src/plasoscaffolder/common/__init__.py b/plasoscaffolder/common/__init__.py similarity index 100% rename from src/plasoscaffolder/common/__init__.py rename to plasoscaffolder/common/__init__.py diff --git a/src/plasoscaffolder/common/base_code_formatter.py b/plasoscaffolder/common/base_code_formatter.py similarity index 100% rename from src/plasoscaffolder/common/base_code_formatter.py rename to plasoscaffolder/common/base_code_formatter.py diff --git a/src/plasoscaffolder/common/base_file_handler.py b/plasoscaffolder/common/base_file_handler.py similarity index 100% rename from src/plasoscaffolder/common/base_file_handler.py rename to plasoscaffolder/common/base_file_handler.py diff --git a/src/plasoscaffolder/common/base_output_handler.py b/plasoscaffolder/common/base_output_handler.py similarity index 100% rename from src/plasoscaffolder/common/base_output_handler.py rename to plasoscaffolder/common/base_output_handler.py diff --git a/src/plasoscaffolder/common/code_formatter.py b/plasoscaffolder/common/code_formatter.py similarity index 100% rename from src/plasoscaffolder/common/code_formatter.py rename to plasoscaffolder/common/code_formatter.py diff --git a/src/plasoscaffolder/common/file_handler.py b/plasoscaffolder/common/file_handler.py similarity index 100% rename from src/plasoscaffolder/common/file_handler.py rename to plasoscaffolder/common/file_handler.py diff --git a/src/plasoscaffolder/common/output_handler_click.py b/plasoscaffolder/common/output_handler_click.py similarity index 100% rename from src/plasoscaffolder/common/output_handler_click.py rename to plasoscaffolder/common/output_handler_click.py diff --git a/src/plasoscaffolder/common/type_mapper.py b/plasoscaffolder/common/type_mapper.py similarity index 100% rename from src/plasoscaffolder/common/type_mapper.py rename to plasoscaffolder/common/type_mapper.py diff --git a/src/plasoscaffolder/dal/__init__.py b/plasoscaffolder/dal/__init__.py similarity index 100% rename from src/plasoscaffolder/dal/__init__.py rename to plasoscaffolder/dal/__init__.py diff --git a/src/plasoscaffolder/dal/base_database_information.py b/plasoscaffolder/dal/base_database_information.py similarity index 100% rename from src/plasoscaffolder/dal/base_database_information.py rename to plasoscaffolder/dal/base_database_information.py diff --git a/src/plasoscaffolder/dal/base_explain_query_plan.py b/plasoscaffolder/dal/base_explain_query_plan.py similarity index 100% rename from src/plasoscaffolder/dal/base_explain_query_plan.py rename to plasoscaffolder/dal/base_explain_query_plan.py diff --git a/src/plasoscaffolder/dal/base_sql_query_execution.py b/plasoscaffolder/dal/base_sql_query_execution.py similarity index 100% rename from src/plasoscaffolder/dal/base_sql_query_execution.py rename to plasoscaffolder/dal/base_sql_query_execution.py diff --git a/src/plasoscaffolder/dal/base_type_helper.py b/plasoscaffolder/dal/base_type_helper.py similarity index 100% rename from src/plasoscaffolder/dal/base_type_helper.py rename to plasoscaffolder/dal/base_type_helper.py diff --git a/src/plasoscaffolder/dal/explain_query_plan.py b/plasoscaffolder/dal/explain_query_plan.py similarity index 100% rename from src/plasoscaffolder/dal/explain_query_plan.py rename to plasoscaffolder/dal/explain_query_plan.py diff --git a/src/plasoscaffolder/dal/sql_query_data.py b/plasoscaffolder/dal/sql_query_data.py similarity index 100% rename from src/plasoscaffolder/dal/sql_query_data.py rename to plasoscaffolder/dal/sql_query_data.py diff --git a/src/plasoscaffolder/dal/sqlite_database_information.py b/plasoscaffolder/dal/sqlite_database_information.py similarity index 100% rename from src/plasoscaffolder/dal/sqlite_database_information.py rename to plasoscaffolder/dal/sqlite_database_information.py diff --git a/src/plasoscaffolder/dal/sqlite_query_execution.py b/plasoscaffolder/dal/sqlite_query_execution.py similarity index 100% rename from src/plasoscaffolder/dal/sqlite_query_execution.py rename to plasoscaffolder/dal/sqlite_query_execution.py diff --git a/src/plasoscaffolder/dal/sqlite_type_helper.py b/plasoscaffolder/dal/sqlite_type_helper.py similarity index 100% rename from src/plasoscaffolder/dal/sqlite_type_helper.py rename to plasoscaffolder/dal/sqlite_type_helper.py diff --git a/src/plasoscaffolder/dependencies.py b/plasoscaffolder/dependencies.py similarity index 100% rename from src/plasoscaffolder/dependencies.py rename to plasoscaffolder/dependencies.py diff --git a/src/plasoscaffolder/frontend/__init__.py b/plasoscaffolder/frontend/__init__.py similarity index 100% rename from src/plasoscaffolder/frontend/__init__.py rename to plasoscaffolder/frontend/__init__.py diff --git a/src/plasoscaffolder/frontend/controller/__init__.py b/plasoscaffolder/frontend/controller/__init__.py similarity index 100% rename from src/plasoscaffolder/frontend/controller/__init__.py rename to plasoscaffolder/frontend/controller/__init__.py diff --git a/src/plasoscaffolder/frontend/controller/sqlite_controller.py b/plasoscaffolder/frontend/controller/sqlite_controller.py similarity index 100% rename from src/plasoscaffolder/frontend/controller/sqlite_controller.py rename to plasoscaffolder/frontend/controller/sqlite_controller.py diff --git a/src/plasoscaffolder/frontend/main.py b/plasoscaffolder/frontend/main.py similarity index 100% rename from src/plasoscaffolder/frontend/main.py rename to plasoscaffolder/frontend/main.py diff --git a/src/plasoscaffolder/frontend/sqliteplugin/__init__.py b/plasoscaffolder/frontend/sqliteplugin/__init__.py similarity index 100% rename from src/plasoscaffolder/frontend/sqliteplugin/__init__.py rename to plasoscaffolder/frontend/sqliteplugin/__init__.py diff --git a/src/plasoscaffolder/frontend/sqliteplugin/commands.py b/plasoscaffolder/frontend/sqliteplugin/commands.py similarity index 100% rename from src/plasoscaffolder/frontend/sqliteplugin/commands.py rename to plasoscaffolder/frontend/sqliteplugin/commands.py diff --git a/src/plasoscaffolder/model/__init__.py b/plasoscaffolder/model/__init__.py similarity index 100% rename from src/plasoscaffolder/model/__init__.py rename to plasoscaffolder/model/__init__.py diff --git a/src/plasoscaffolder/model/base_data_model.py b/plasoscaffolder/model/base_data_model.py similarity index 100% rename from src/plasoscaffolder/model/base_data_model.py rename to plasoscaffolder/model/base_data_model.py diff --git a/src/plasoscaffolder/model/formatter_data_model.py b/plasoscaffolder/model/formatter_data_model.py similarity index 100% rename from src/plasoscaffolder/model/formatter_data_model.py rename to plasoscaffolder/model/formatter_data_model.py diff --git a/src/plasoscaffolder/model/formatter_test_data_model.py b/plasoscaffolder/model/formatter_test_data_model.py similarity index 100% rename from src/plasoscaffolder/model/formatter_test_data_model.py rename to plasoscaffolder/model/formatter_test_data_model.py diff --git a/src/plasoscaffolder/model/init_data_model.py b/plasoscaffolder/model/init_data_model.py similarity index 100% rename from src/plasoscaffolder/model/init_data_model.py rename to plasoscaffolder/model/init_data_model.py diff --git a/src/plasoscaffolder/model/parser_data_model.py b/plasoscaffolder/model/parser_data_model.py similarity index 100% rename from src/plasoscaffolder/model/parser_data_model.py rename to plasoscaffolder/model/parser_data_model.py diff --git a/src/plasoscaffolder/model/parser_test_data_model.py b/plasoscaffolder/model/parser_test_data_model.py similarity index 100% rename from src/plasoscaffolder/model/parser_test_data_model.py rename to plasoscaffolder/model/parser_test_data_model.py diff --git a/src/plasoscaffolder/model/sql_query_column_model.py b/plasoscaffolder/model/sql_query_column_model.py similarity index 100% rename from src/plasoscaffolder/model/sql_query_column_model.py rename to plasoscaffolder/model/sql_query_column_model.py diff --git a/src/plasoscaffolder/model/sql_query_column_model_data.py b/plasoscaffolder/model/sql_query_column_model_data.py similarity index 100% rename from src/plasoscaffolder/model/sql_query_column_model_data.py rename to plasoscaffolder/model/sql_query_column_model_data.py diff --git a/src/plasoscaffolder/model/sql_query_column_model_timestamp.py b/plasoscaffolder/model/sql_query_column_model_timestamp.py similarity index 100% rename from src/plasoscaffolder/model/sql_query_column_model_timestamp.py rename to plasoscaffolder/model/sql_query_column_model_timestamp.py diff --git a/src/plasoscaffolder/model/sql_query_model.py b/plasoscaffolder/model/sql_query_model.py similarity index 100% rename from src/plasoscaffolder/model/sql_query_model.py rename to plasoscaffolder/model/sql_query_model.py diff --git a/src/run_tests.py b/run_tests.py similarity index 100% rename from src/run_tests.py rename to run_tests.py diff --git a/src/run_tests_for_coverage.py b/run_tests_for_coverage.py similarity index 100% rename from src/run_tests_for_coverage.py rename to run_tests_for_coverage.py diff --git a/src/setup.py b/setup.py similarity index 100% rename from src/setup.py rename to setup.py diff --git a/src/tests/.style.yapf b/tests/.style.yapf similarity index 100% rename from src/tests/.style.yapf rename to tests/.style.yapf diff --git a/src/tests/__init__.py b/tests/__init__.py similarity index 100% rename from src/tests/__init__.py rename to tests/__init__.py diff --git a/src/tests/bll/__init__.py b/tests/bll/__init__.py similarity index 100% rename from src/tests/bll/__init__.py rename to tests/bll/__init__.py diff --git a/src/tests/bll/mappings/__init__.py b/tests/bll/mappings/__init__.py similarity index 100% rename from src/tests/bll/mappings/__init__.py rename to tests/bll/mappings/__init__.py diff --git a/src/tests/bll/mappings/test_init_formatter_mapping.py b/tests/bll/mappings/test_init_formatter_mapping.py similarity index 100% rename from src/tests/bll/mappings/test_init_formatter_mapping.py rename to tests/bll/mappings/test_init_formatter_mapping.py diff --git a/src/tests/bll/mappings/test_mapping_helper.py b/tests/bll/mappings/test_mapping_helper.py similarity index 100% rename from src/tests/bll/mappings/test_mapping_helper.py rename to tests/bll/mappings/test_mapping_helper.py diff --git a/src/tests/bll/services/__init__.py b/tests/bll/services/__init__.py similarity index 100% rename from src/tests/bll/services/__init__.py rename to tests/bll/services/__init__.py diff --git a/src/tests/bll/services/test_sqlite_generator.py b/tests/bll/services/test_sqlite_generator.py similarity index 100% rename from src/tests/bll/services/test_sqlite_generator.py rename to tests/bll/services/test_sqlite_generator.py diff --git a/src/tests/bll/services/test_sqlite_plugin_helper.py b/tests/bll/services/test_sqlite_plugin_helper.py similarity index 100% rename from src/tests/bll/services/test_sqlite_plugin_helper.py rename to tests/bll/services/test_sqlite_plugin_helper.py diff --git a/src/tests/bll/services/test_sqlite_plugin_path_helper.py b/tests/bll/services/test_sqlite_plugin_path_helper.py similarity index 100% rename from src/tests/bll/services/test_sqlite_plugin_path_helper.py rename to tests/bll/services/test_sqlite_plugin_path_helper.py diff --git a/src/tests/common/__init__.py b/tests/common/__init__.py similarity index 100% rename from src/tests/common/__init__.py rename to tests/common/__init__.py diff --git a/src/tests/common/test_file_handler.py b/tests/common/test_file_handler.py similarity index 100% rename from src/tests/common/test_file_handler.py rename to tests/common/test_file_handler.py diff --git a/src/tests/common/test_output_handler_click.py b/tests/common/test_output_handler_click.py similarity index 100% rename from src/tests/common/test_output_handler_click.py rename to tests/common/test_output_handler_click.py diff --git a/src/tests/common/test_output_handler_file.py b/tests/common/test_output_handler_file.py similarity index 100% rename from src/tests/common/test_output_handler_file.py rename to tests/common/test_output_handler_file.py diff --git a/src/tests/dal/__init__.py b/tests/dal/__init__.py similarity index 100% rename from src/tests/dal/__init__.py rename to tests/dal/__init__.py diff --git a/src/tests/dal/expected_id_name_data b/tests/dal/expected_id_name_data similarity index 100% rename from src/tests/dal/expected_id_name_data rename to tests/dal/expected_id_name_data diff --git a/src/tests/dal/expected_id_name_join_data b/tests/dal/expected_id_name_join_data similarity index 100% rename from src/tests/dal/expected_id_name_join_data rename to tests/dal/expected_id_name_join_data diff --git a/src/tests/dal/expected_join_query_data b/tests/dal/expected_join_query_data similarity index 100% rename from src/tests/dal/expected_join_query_data rename to tests/dal/expected_join_query_data diff --git a/src/tests/dal/expected_simple_query_data b/tests/dal/expected_simple_query_data similarity index 100% rename from src/tests/dal/expected_simple_query_data rename to tests/dal/expected_simple_query_data diff --git a/src/tests/dal/test_explain_query_plan.py b/tests/dal/test_explain_query_plan.py similarity index 100% rename from src/tests/dal/test_explain_query_plan.py rename to tests/dal/test_explain_query_plan.py diff --git a/src/tests/dal/test_sqlite_database_information.py b/tests/dal/test_sqlite_database_information.py similarity index 100% rename from src/tests/dal/test_sqlite_database_information.py rename to tests/dal/test_sqlite_database_information.py diff --git a/src/tests/dal/test_sqlite_query_execution.py b/tests/dal/test_sqlite_query_execution.py similarity index 100% rename from src/tests/dal/test_sqlite_query_execution.py rename to tests/dal/test_sqlite_query_execution.py diff --git a/src/tests/dal/test_sqlite_type_helper.py b/tests/dal/test_sqlite_type_helper.py similarity index 100% rename from src/tests/dal/test_sqlite_type_helper.py rename to tests/dal/test_sqlite_type_helper.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationFiles/formatters.py b/tests/end_to_end_test/ExpectedEasyGenerationFiles/formatters.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationFiles/formatters.py rename to tests/end_to_end_test/ExpectedEasyGenerationFiles/formatters.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationFiles/formatters_init.py b/tests/end_to_end_test/ExpectedEasyGenerationFiles/formatters_init.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationFiles/formatters_init.py rename to tests/end_to_end_test/ExpectedEasyGenerationFiles/formatters_init.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationFiles/formatters_test.py b/tests/end_to_end_test/ExpectedEasyGenerationFiles/formatters_test.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationFiles/formatters_test.py rename to tests/end_to_end_test/ExpectedEasyGenerationFiles/formatters_test.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationFiles/parsers.py b/tests/end_to_end_test/ExpectedEasyGenerationFiles/parsers.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationFiles/parsers.py rename to tests/end_to_end_test/ExpectedEasyGenerationFiles/parsers.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationFiles/parsers_init.py b/tests/end_to_end_test/ExpectedEasyGenerationFiles/parsers_init.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationFiles/parsers_init.py rename to tests/end_to_end_test/ExpectedEasyGenerationFiles/parsers_init.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationFiles/parsers_test.py b/tests/end_to_end_test/ExpectedEasyGenerationFiles/parsers_test.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationFiles/parsers_test.py rename to tests/end_to_end_test/ExpectedEasyGenerationFiles/parsers_test.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationLongNameFiles/formatters.py b/tests/end_to_end_test/ExpectedEasyGenerationLongNameFiles/formatters.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationLongNameFiles/formatters.py rename to tests/end_to_end_test/ExpectedEasyGenerationLongNameFiles/formatters.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationLongNameFiles/formatters_init.py b/tests/end_to_end_test/ExpectedEasyGenerationLongNameFiles/formatters_init.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationLongNameFiles/formatters_init.py rename to tests/end_to_end_test/ExpectedEasyGenerationLongNameFiles/formatters_init.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationLongNameFiles/formatters_test.py b/tests/end_to_end_test/ExpectedEasyGenerationLongNameFiles/formatters_test.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationLongNameFiles/formatters_test.py rename to tests/end_to_end_test/ExpectedEasyGenerationLongNameFiles/formatters_test.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationLongNameFiles/parsers.py b/tests/end_to_end_test/ExpectedEasyGenerationLongNameFiles/parsers.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationLongNameFiles/parsers.py rename to tests/end_to_end_test/ExpectedEasyGenerationLongNameFiles/parsers.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationLongNameFiles/parsers_init.py b/tests/end_to_end_test/ExpectedEasyGenerationLongNameFiles/parsers_init.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationLongNameFiles/parsers_init.py rename to tests/end_to_end_test/ExpectedEasyGenerationLongNameFiles/parsers_init.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationLongNameFiles/parsers_test.py b/tests/end_to_end_test/ExpectedEasyGenerationLongNameFiles/parsers_test.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationLongNameFiles/parsers_test.py rename to tests/end_to_end_test/ExpectedEasyGenerationLongNameFiles/parsers_test.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationMultipleSelectsFiles/formatters.py b/tests/end_to_end_test/ExpectedEasyGenerationMultipleSelectsFiles/formatters.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationMultipleSelectsFiles/formatters.py rename to tests/end_to_end_test/ExpectedEasyGenerationMultipleSelectsFiles/formatters.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationMultipleSelectsFiles/formatters_init.py b/tests/end_to_end_test/ExpectedEasyGenerationMultipleSelectsFiles/formatters_init.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationMultipleSelectsFiles/formatters_init.py rename to tests/end_to_end_test/ExpectedEasyGenerationMultipleSelectsFiles/formatters_init.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationMultipleSelectsFiles/formatters_test.py b/tests/end_to_end_test/ExpectedEasyGenerationMultipleSelectsFiles/formatters_test.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationMultipleSelectsFiles/formatters_test.py rename to tests/end_to_end_test/ExpectedEasyGenerationMultipleSelectsFiles/formatters_test.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationMultipleSelectsFiles/parsers.py b/tests/end_to_end_test/ExpectedEasyGenerationMultipleSelectsFiles/parsers.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationMultipleSelectsFiles/parsers.py rename to tests/end_to_end_test/ExpectedEasyGenerationMultipleSelectsFiles/parsers.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationMultipleSelectsFiles/parsers_init.py b/tests/end_to_end_test/ExpectedEasyGenerationMultipleSelectsFiles/parsers_init.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationMultipleSelectsFiles/parsers_init.py rename to tests/end_to_end_test/ExpectedEasyGenerationMultipleSelectsFiles/parsers_init.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationMultipleSelectsFiles/parsers_test.py b/tests/end_to_end_test/ExpectedEasyGenerationMultipleSelectsFiles/parsers_test.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationMultipleSelectsFiles/parsers_test.py rename to tests/end_to_end_test/ExpectedEasyGenerationMultipleSelectsFiles/parsers_test.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationOwnColumnNameFiles/formatters.py b/tests/end_to_end_test/ExpectedEasyGenerationOwnColumnNameFiles/formatters.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationOwnColumnNameFiles/formatters.py rename to tests/end_to_end_test/ExpectedEasyGenerationOwnColumnNameFiles/formatters.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationOwnColumnNameFiles/formatters_init.py b/tests/end_to_end_test/ExpectedEasyGenerationOwnColumnNameFiles/formatters_init.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationOwnColumnNameFiles/formatters_init.py rename to tests/end_to_end_test/ExpectedEasyGenerationOwnColumnNameFiles/formatters_init.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationOwnColumnNameFiles/formatters_test.py b/tests/end_to_end_test/ExpectedEasyGenerationOwnColumnNameFiles/formatters_test.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationOwnColumnNameFiles/formatters_test.py rename to tests/end_to_end_test/ExpectedEasyGenerationOwnColumnNameFiles/formatters_test.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationOwnColumnNameFiles/parsers.py b/tests/end_to_end_test/ExpectedEasyGenerationOwnColumnNameFiles/parsers.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationOwnColumnNameFiles/parsers.py rename to tests/end_to_end_test/ExpectedEasyGenerationOwnColumnNameFiles/parsers.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationOwnColumnNameFiles/parsers_init.py b/tests/end_to_end_test/ExpectedEasyGenerationOwnColumnNameFiles/parsers_init.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationOwnColumnNameFiles/parsers_init.py rename to tests/end_to_end_test/ExpectedEasyGenerationOwnColumnNameFiles/parsers_init.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationOwnColumnNameFiles/parsers_test.py b/tests/end_to_end_test/ExpectedEasyGenerationOwnColumnNameFiles/parsers_test.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationOwnColumnNameFiles/parsers_test.py rename to tests/end_to_end_test/ExpectedEasyGenerationOwnColumnNameFiles/parsers_test.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationOwnTimestampFiles/formatters.py b/tests/end_to_end_test/ExpectedEasyGenerationOwnTimestampFiles/formatters.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationOwnTimestampFiles/formatters.py rename to tests/end_to_end_test/ExpectedEasyGenerationOwnTimestampFiles/formatters.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationOwnTimestampFiles/formatters_init.py b/tests/end_to_end_test/ExpectedEasyGenerationOwnTimestampFiles/formatters_init.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationOwnTimestampFiles/formatters_init.py rename to tests/end_to_end_test/ExpectedEasyGenerationOwnTimestampFiles/formatters_init.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationOwnTimestampFiles/formatters_test.py b/tests/end_to_end_test/ExpectedEasyGenerationOwnTimestampFiles/formatters_test.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationOwnTimestampFiles/formatters_test.py rename to tests/end_to_end_test/ExpectedEasyGenerationOwnTimestampFiles/formatters_test.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationOwnTimestampFiles/parsers.py b/tests/end_to_end_test/ExpectedEasyGenerationOwnTimestampFiles/parsers.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationOwnTimestampFiles/parsers.py rename to tests/end_to_end_test/ExpectedEasyGenerationOwnTimestampFiles/parsers.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationOwnTimestampFiles/parsers_init.py b/tests/end_to_end_test/ExpectedEasyGenerationOwnTimestampFiles/parsers_init.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationOwnTimestampFiles/parsers_init.py rename to tests/end_to_end_test/ExpectedEasyGenerationOwnTimestampFiles/parsers_init.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationOwnTimestampFiles/parsers_test.py b/tests/end_to_end_test/ExpectedEasyGenerationOwnTimestampFiles/parsers_test.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationOwnTimestampFiles/parsers_test.py rename to tests/end_to_end_test/ExpectedEasyGenerationOwnTimestampFiles/parsers_test.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationRowNameFiles/formatters.py b/tests/end_to_end_test/ExpectedEasyGenerationRowNameFiles/formatters.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationRowNameFiles/formatters.py rename to tests/end_to_end_test/ExpectedEasyGenerationRowNameFiles/formatters.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationRowNameFiles/formatters_init.py b/tests/end_to_end_test/ExpectedEasyGenerationRowNameFiles/formatters_init.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationRowNameFiles/formatters_init.py rename to tests/end_to_end_test/ExpectedEasyGenerationRowNameFiles/formatters_init.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationRowNameFiles/formatters_test.py b/tests/end_to_end_test/ExpectedEasyGenerationRowNameFiles/formatters_test.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationRowNameFiles/formatters_test.py rename to tests/end_to_end_test/ExpectedEasyGenerationRowNameFiles/formatters_test.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationRowNameFiles/parsers.py b/tests/end_to_end_test/ExpectedEasyGenerationRowNameFiles/parsers.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationRowNameFiles/parsers.py rename to tests/end_to_end_test/ExpectedEasyGenerationRowNameFiles/parsers.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationRowNameFiles/parsers_init.py b/tests/end_to_end_test/ExpectedEasyGenerationRowNameFiles/parsers_init.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationRowNameFiles/parsers_init.py rename to tests/end_to_end_test/ExpectedEasyGenerationRowNameFiles/parsers_init.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationRowNameFiles/parsers_test.py b/tests/end_to_end_test/ExpectedEasyGenerationRowNameFiles/parsers_test.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationRowNameFiles/parsers_test.py rename to tests/end_to_end_test/ExpectedEasyGenerationRowNameFiles/parsers_test.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationWithCustomizationFiles/formatters.py b/tests/end_to_end_test/ExpectedEasyGenerationWithCustomizationFiles/formatters.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationWithCustomizationFiles/formatters.py rename to tests/end_to_end_test/ExpectedEasyGenerationWithCustomizationFiles/formatters.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationWithCustomizationFiles/formatters_init.py b/tests/end_to_end_test/ExpectedEasyGenerationWithCustomizationFiles/formatters_init.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationWithCustomizationFiles/formatters_init.py rename to tests/end_to_end_test/ExpectedEasyGenerationWithCustomizationFiles/formatters_init.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationWithCustomizationFiles/formatters_test.py b/tests/end_to_end_test/ExpectedEasyGenerationWithCustomizationFiles/formatters_test.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationWithCustomizationFiles/formatters_test.py rename to tests/end_to_end_test/ExpectedEasyGenerationWithCustomizationFiles/formatters_test.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationWithCustomizationFiles/parsers.py b/tests/end_to_end_test/ExpectedEasyGenerationWithCustomizationFiles/parsers.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationWithCustomizationFiles/parsers.py rename to tests/end_to_end_test/ExpectedEasyGenerationWithCustomizationFiles/parsers.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationWithCustomizationFiles/parsers_init.py b/tests/end_to_end_test/ExpectedEasyGenerationWithCustomizationFiles/parsers_init.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationWithCustomizationFiles/parsers_init.py rename to tests/end_to_end_test/ExpectedEasyGenerationWithCustomizationFiles/parsers_init.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationWithCustomizationFiles/parsers_test.py b/tests/end_to_end_test/ExpectedEasyGenerationWithCustomizationFiles/parsers_test.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationWithCustomizationFiles/parsers_test.py rename to tests/end_to_end_test/ExpectedEasyGenerationWithCustomizationFiles/parsers_test.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationWithOutputFiles/formatters.py b/tests/end_to_end_test/ExpectedEasyGenerationWithOutputFiles/formatters.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationWithOutputFiles/formatters.py rename to tests/end_to_end_test/ExpectedEasyGenerationWithOutputFiles/formatters.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationWithOutputFiles/formatters_init.py b/tests/end_to_end_test/ExpectedEasyGenerationWithOutputFiles/formatters_init.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationWithOutputFiles/formatters_init.py rename to tests/end_to_end_test/ExpectedEasyGenerationWithOutputFiles/formatters_init.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationWithOutputFiles/formatters_test.py b/tests/end_to_end_test/ExpectedEasyGenerationWithOutputFiles/formatters_test.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationWithOutputFiles/formatters_test.py rename to tests/end_to_end_test/ExpectedEasyGenerationWithOutputFiles/formatters_test.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationWithOutputFiles/parsers.py b/tests/end_to_end_test/ExpectedEasyGenerationWithOutputFiles/parsers.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationWithOutputFiles/parsers.py rename to tests/end_to_end_test/ExpectedEasyGenerationWithOutputFiles/parsers.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationWithOutputFiles/parsers_init.py b/tests/end_to_end_test/ExpectedEasyGenerationWithOutputFiles/parsers_init.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationWithOutputFiles/parsers_init.py rename to tests/end_to_end_test/ExpectedEasyGenerationWithOutputFiles/parsers_init.py diff --git a/src/tests/end_to_end_test/ExpectedEasyGenerationWithOutputFiles/parsers_test.py b/tests/end_to_end_test/ExpectedEasyGenerationWithOutputFiles/parsers_test.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedEasyGenerationWithOutputFiles/parsers_test.py rename to tests/end_to_end_test/ExpectedEasyGenerationWithOutputFiles/parsers_test.py diff --git a/src/tests/end_to_end_test/ExpectedTwoPluginsFiles/formatters1.py b/tests/end_to_end_test/ExpectedTwoPluginsFiles/formatters1.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedTwoPluginsFiles/formatters1.py rename to tests/end_to_end_test/ExpectedTwoPluginsFiles/formatters1.py diff --git a/src/tests/end_to_end_test/ExpectedTwoPluginsFiles/formatters2.py b/tests/end_to_end_test/ExpectedTwoPluginsFiles/formatters2.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedTwoPluginsFiles/formatters2.py rename to tests/end_to_end_test/ExpectedTwoPluginsFiles/formatters2.py diff --git a/src/tests/end_to_end_test/ExpectedTwoPluginsFiles/formatters_init.py b/tests/end_to_end_test/ExpectedTwoPluginsFiles/formatters_init.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedTwoPluginsFiles/formatters_init.py rename to tests/end_to_end_test/ExpectedTwoPluginsFiles/formatters_init.py diff --git a/src/tests/end_to_end_test/ExpectedTwoPluginsFiles/formatters_test1.py b/tests/end_to_end_test/ExpectedTwoPluginsFiles/formatters_test1.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedTwoPluginsFiles/formatters_test1.py rename to tests/end_to_end_test/ExpectedTwoPluginsFiles/formatters_test1.py diff --git a/src/tests/end_to_end_test/ExpectedTwoPluginsFiles/formatters_test2.py b/tests/end_to_end_test/ExpectedTwoPluginsFiles/formatters_test2.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedTwoPluginsFiles/formatters_test2.py rename to tests/end_to_end_test/ExpectedTwoPluginsFiles/formatters_test2.py diff --git a/src/tests/end_to_end_test/ExpectedTwoPluginsFiles/parsers1.py b/tests/end_to_end_test/ExpectedTwoPluginsFiles/parsers1.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedTwoPluginsFiles/parsers1.py rename to tests/end_to_end_test/ExpectedTwoPluginsFiles/parsers1.py diff --git a/src/tests/end_to_end_test/ExpectedTwoPluginsFiles/parsers2.py b/tests/end_to_end_test/ExpectedTwoPluginsFiles/parsers2.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedTwoPluginsFiles/parsers2.py rename to tests/end_to_end_test/ExpectedTwoPluginsFiles/parsers2.py diff --git a/src/tests/end_to_end_test/ExpectedTwoPluginsFiles/parsers_init.py b/tests/end_to_end_test/ExpectedTwoPluginsFiles/parsers_init.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedTwoPluginsFiles/parsers_init.py rename to tests/end_to_end_test/ExpectedTwoPluginsFiles/parsers_init.py diff --git a/src/tests/end_to_end_test/ExpectedTwoPluginsFiles/parsers_test1.py b/tests/end_to_end_test/ExpectedTwoPluginsFiles/parsers_test1.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedTwoPluginsFiles/parsers_test1.py rename to tests/end_to_end_test/ExpectedTwoPluginsFiles/parsers_test1.py diff --git a/src/tests/end_to_end_test/ExpectedTwoPluginsFiles/parsers_test2.py b/tests/end_to_end_test/ExpectedTwoPluginsFiles/parsers_test2.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedTwoPluginsFiles/parsers_test2.py rename to tests/end_to_end_test/ExpectedTwoPluginsFiles/parsers_test2.py diff --git a/src/tests/end_to_end_test/ExpectedWithJoinFiles/formatters.py b/tests/end_to_end_test/ExpectedWithJoinFiles/formatters.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedWithJoinFiles/formatters.py rename to tests/end_to_end_test/ExpectedWithJoinFiles/formatters.py diff --git a/src/tests/end_to_end_test/ExpectedWithJoinFiles/formatters_init.py b/tests/end_to_end_test/ExpectedWithJoinFiles/formatters_init.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedWithJoinFiles/formatters_init.py rename to tests/end_to_end_test/ExpectedWithJoinFiles/formatters_init.py diff --git a/src/tests/end_to_end_test/ExpectedWithJoinFiles/formatters_test.py b/tests/end_to_end_test/ExpectedWithJoinFiles/formatters_test.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedWithJoinFiles/formatters_test.py rename to tests/end_to_end_test/ExpectedWithJoinFiles/formatters_test.py diff --git a/src/tests/end_to_end_test/ExpectedWithJoinFiles/parsers.py b/tests/end_to_end_test/ExpectedWithJoinFiles/parsers.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedWithJoinFiles/parsers.py rename to tests/end_to_end_test/ExpectedWithJoinFiles/parsers.py diff --git a/src/tests/end_to_end_test/ExpectedWithJoinFiles/parsers_init.py b/tests/end_to_end_test/ExpectedWithJoinFiles/parsers_init.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedWithJoinFiles/parsers_init.py rename to tests/end_to_end_test/ExpectedWithJoinFiles/parsers_init.py diff --git a/src/tests/end_to_end_test/ExpectedWithJoinFiles/parsers_test.py b/tests/end_to_end_test/ExpectedWithJoinFiles/parsers_test.py similarity index 100% rename from src/tests/end_to_end_test/ExpectedWithJoinFiles/parsers_test.py rename to tests/end_to_end_test/ExpectedWithJoinFiles/parsers_test.py diff --git a/src/tests/end_to_end_test/__init__.py b/tests/end_to_end_test/__init__.py similarity index 100% rename from src/tests/end_to_end_test/__init__.py rename to tests/end_to_end_test/__init__.py diff --git a/src/tests/end_to_end_test/end_to_end_test_helper.py b/tests/end_to_end_test/end_to_end_test_helper.py similarity index 100% rename from src/tests/end_to_end_test/end_to_end_test_helper.py rename to tests/end_to_end_test/end_to_end_test_helper.py diff --git a/src/tests/end_to_end_test/test_easy_generation.py b/tests/end_to_end_test/test_easy_generation.py similarity index 100% rename from src/tests/end_to_end_test/test_easy_generation.py rename to tests/end_to_end_test/test_easy_generation.py diff --git a/src/tests/end_to_end_test/test_easy_generation_with_abort.py b/tests/end_to_end_test/test_easy_generation_with_abort.py similarity index 100% rename from src/tests/end_to_end_test/test_easy_generation_with_abort.py rename to tests/end_to_end_test/test_easy_generation_with_abort.py diff --git a/src/tests/end_to_end_test/test_easy_generation_with_customizing.py b/tests/end_to_end_test/test_easy_generation_with_customizing.py similarity index 100% rename from src/tests/end_to_end_test/test_easy_generation_with_customizing.py rename to tests/end_to_end_test/test_easy_generation_with_customizing.py diff --git a/src/tests/end_to_end_test/test_easy_generation_with_multiple_selects.py b/tests/end_to_end_test/test_easy_generation_with_multiple_selects.py similarity index 100% rename from src/tests/end_to_end_test/test_easy_generation_with_multiple_selects.py rename to tests/end_to_end_test/test_easy_generation_with_multiple_selects.py diff --git a/src/tests/end_to_end_test/test_easy_generation_with_output_example.py b/tests/end_to_end_test/test_easy_generation_with_output_example.py similarity index 100% rename from src/tests/end_to_end_test/test_easy_generation_with_output_example.py rename to tests/end_to_end_test/test_easy_generation_with_output_example.py diff --git a/src/tests/end_to_end_test/test_easy_generation_with_own_row_name.py b/tests/end_to_end_test/test_easy_generation_with_own_row_name.py similarity index 100% rename from src/tests/end_to_end_test/test_easy_generation_with_own_row_name.py rename to tests/end_to_end_test/test_easy_generation_with_own_row_name.py diff --git a/src/tests/end_to_end_test/test_easy_generation_with_own_time_event.py b/tests/end_to_end_test/test_easy_generation_with_own_time_event.py similarity index 100% rename from src/tests/end_to_end_test/test_easy_generation_with_own_time_event.py rename to tests/end_to_end_test/test_easy_generation_with_own_time_event.py diff --git a/src/tests/end_to_end_test/test_generation_with_an_existing_name.py b/tests/end_to_end_test/test_generation_with_an_existing_name.py similarity index 100% rename from src/tests/end_to_end_test/test_generation_with_an_existing_name.py rename to tests/end_to_end_test/test_generation_with_an_existing_name.py diff --git a/src/tests/end_to_end_test/test_generation_with_option_at_tool_call.py b/tests/end_to_end_test/test_generation_with_option_at_tool_call.py similarity index 100% rename from src/tests/end_to_end_test/test_generation_with_option_at_tool_call.py rename to tests/end_to_end_test/test_generation_with_option_at_tool_call.py diff --git a/src/tests/end_to_end_test/test_help_function.py b/tests/end_to_end_test/test_help_function.py similarity index 100% rename from src/tests/end_to_end_test/test_help_function.py rename to tests/end_to_end_test/test_help_function.py diff --git a/src/tests/end_to_end_test/test_help_function_of_sqlite.py b/tests/end_to_end_test/test_help_function_of_sqlite.py similarity index 100% rename from src/tests/end_to_end_test/test_help_function_of_sqlite.py rename to tests/end_to_end_test/test_help_function_of_sqlite.py diff --git a/src/tests/end_to_end_test/test_select_easy_join.py b/tests/end_to_end_test/test_select_easy_join.py similarity index 100% rename from src/tests/end_to_end_test/test_select_easy_join.py rename to tests/end_to_end_test/test_select_easy_join.py diff --git a/src/tests/end_to_end_test/test_select_with_special_characters.py b/tests/end_to_end_test/test_select_with_special_characters.py similarity index 100% rename from src/tests/end_to_end_test/test_select_with_special_characters.py rename to tests/end_to_end_test/test_select_with_special_characters.py diff --git a/src/tests/end_to_end_test/test_wrong_path.py b/tests/end_to_end_test/test_wrong_path.py similarity index 100% rename from src/tests/end_to_end_test/test_wrong_path.py rename to tests/end_to_end_test/test_wrong_path.py diff --git a/src/tests/end_to_end_test/test_wrong_plugin_name.py b/tests/end_to_end_test/test_wrong_plugin_name.py similarity index 100% rename from src/tests/end_to_end_test/test_wrong_plugin_name.py rename to tests/end_to_end_test/test_wrong_plugin_name.py diff --git a/src/tests/end_to_end_test/test_wrong_sql_query_input.py b/tests/end_to_end_test/test_wrong_sql_query_input.py similarity index 100% rename from src/tests/end_to_end_test/test_wrong_sql_query_input.py rename to tests/end_to_end_test/test_wrong_sql_query_input.py diff --git a/src/tests/end_to_end_test/test_wrong_test_file.py b/tests/end_to_end_test/test_wrong_test_file.py similarity index 100% rename from src/tests/end_to_end_test/test_wrong_test_file.py rename to tests/end_to_end_test/test_wrong_test_file.py diff --git a/src/tests/fake/__init__.py b/tests/fake/__init__.py similarity index 100% rename from src/tests/fake/__init__.py rename to tests/fake/__init__.py diff --git a/src/tests/fake/fake_database_information.py b/tests/fake/fake_database_information.py similarity index 100% rename from src/tests/fake/fake_database_information.py rename to tests/fake/fake_database_information.py diff --git a/src/tests/fake/fake_explain_query_plan.py b/tests/fake/fake_explain_query_plan.py similarity index 100% rename from src/tests/fake/fake_explain_query_plan.py rename to tests/fake/fake_explain_query_plan.py diff --git a/src/tests/fake/fake_file_handler.py b/tests/fake/fake_file_handler.py similarity index 100% rename from src/tests/fake/fake_file_handler.py rename to tests/fake/fake_file_handler.py diff --git a/src/tests/fake/fake_mapping_helper.py b/tests/fake/fake_mapping_helper.py similarity index 100% rename from src/tests/fake/fake_mapping_helper.py rename to tests/fake/fake_mapping_helper.py diff --git a/src/tests/fake/fake_sqlite_database_information.py b/tests/fake/fake_sqlite_database_information.py similarity index 100% rename from src/tests/fake/fake_sqlite_database_information.py rename to tests/fake/fake_sqlite_database_information.py diff --git a/src/tests/fake/fake_sqlite_plugin_helper.py b/tests/fake/fake_sqlite_plugin_helper.py similarity index 100% rename from src/tests/fake/fake_sqlite_plugin_helper.py rename to tests/fake/fake_sqlite_plugin_helper.py diff --git a/src/tests/fake/fake_sqlite_plugin_path_helper.py b/tests/fake/fake_sqlite_plugin_path_helper.py similarity index 100% rename from src/tests/fake/fake_sqlite_plugin_path_helper.py rename to tests/fake/fake_sqlite_plugin_path_helper.py diff --git a/src/tests/fake/fake_sqlite_query_execution.py b/tests/fake/fake_sqlite_query_execution.py similarity index 100% rename from src/tests/fake/fake_sqlite_query_execution.py rename to tests/fake/fake_sqlite_query_execution.py diff --git a/src/tests/fake/fake_sqliteplugin_mapping.py b/tests/fake/fake_sqliteplugin_mapping.py similarity index 100% rename from src/tests/fake/fake_sqliteplugin_mapping.py rename to tests/fake/fake_sqliteplugin_mapping.py diff --git a/src/tests/frontend/__init__.py b/tests/frontend/__init__.py similarity index 100% rename from src/tests/frontend/__init__.py rename to tests/frontend/__init__.py diff --git a/src/tests/frontend/controller/__init__.py b/tests/frontend/controller/__init__.py similarity index 100% rename from src/tests/frontend/controller/__init__.py rename to tests/frontend/controller/__init__.py diff --git a/src/tests/frontend/controller/test_sqlite_controller.py b/tests/frontend/controller/test_sqlite_controller.py similarity index 100% rename from src/tests/frontend/controller/test_sqlite_controller.py rename to tests/frontend/controller/test_sqlite_controller.py diff --git a/src/tests/frontend/sqliteplugin/__init__.py b/tests/frontend/sqliteplugin/__init__.py similarity index 100% rename from src/tests/frontend/sqliteplugin/__init__.py rename to tests/frontend/sqliteplugin/__init__.py diff --git a/src/tests/frontend/sqliteplugin/test_commands.py b/tests/frontend/sqliteplugin/test_commands.py similarity index 100% rename from src/tests/frontend/sqliteplugin/test_commands.py rename to tests/frontend/sqliteplugin/test_commands.py diff --git a/src/tests/frontend/test_main.py b/tests/frontend/test_main.py similarity index 100% rename from src/tests/frontend/test_main.py rename to tests/frontend/test_main.py diff --git a/src/tests/integrationtests/__init__.py b/tests/integrationtests/__init__.py similarity index 100% rename from src/tests/integrationtests/__init__.py rename to tests/integrationtests/__init__.py diff --git a/src/tests/integrationtests/expected_files_twitterdb/formatters.py b/tests/integrationtests/expected_files_twitterdb/formatters.py similarity index 100% rename from src/tests/integrationtests/expected_files_twitterdb/formatters.py rename to tests/integrationtests/expected_files_twitterdb/formatters.py diff --git a/src/tests/integrationtests/expected_files_twitterdb/formatters_init.py b/tests/integrationtests/expected_files_twitterdb/formatters_init.py similarity index 100% rename from src/tests/integrationtests/expected_files_twitterdb/formatters_init.py rename to tests/integrationtests/expected_files_twitterdb/formatters_init.py diff --git a/src/tests/integrationtests/expected_files_twitterdb/formatters_test.py b/tests/integrationtests/expected_files_twitterdb/formatters_test.py similarity index 100% rename from src/tests/integrationtests/expected_files_twitterdb/formatters_test.py rename to tests/integrationtests/expected_files_twitterdb/formatters_test.py diff --git a/src/tests/integrationtests/expected_files_twitterdb/parsers.py b/tests/integrationtests/expected_files_twitterdb/parsers.py similarity index 100% rename from src/tests/integrationtests/expected_files_twitterdb/parsers.py rename to tests/integrationtests/expected_files_twitterdb/parsers.py diff --git a/src/tests/integrationtests/expected_files_twitterdb/parsers_init.py b/tests/integrationtests/expected_files_twitterdb/parsers_init.py similarity index 100% rename from src/tests/integrationtests/expected_files_twitterdb/parsers_init.py rename to tests/integrationtests/expected_files_twitterdb/parsers_init.py diff --git a/src/tests/integrationtests/expected_files_twitterdb/parsers_test.py b/tests/integrationtests/expected_files_twitterdb/parsers_test.py similarity index 100% rename from src/tests/integrationtests/expected_files_twitterdb/parsers_test.py rename to tests/integrationtests/expected_files_twitterdb/parsers_test.py diff --git a/src/tests/integrationtests/expected_files_typesdb/formatters.py b/tests/integrationtests/expected_files_typesdb/formatters.py similarity index 100% rename from src/tests/integrationtests/expected_files_typesdb/formatters.py rename to tests/integrationtests/expected_files_typesdb/formatters.py diff --git a/src/tests/integrationtests/expected_files_typesdb/formatters_init.py b/tests/integrationtests/expected_files_typesdb/formatters_init.py similarity index 100% rename from src/tests/integrationtests/expected_files_typesdb/formatters_init.py rename to tests/integrationtests/expected_files_typesdb/formatters_init.py diff --git a/src/tests/integrationtests/expected_files_typesdb/formatters_test.py b/tests/integrationtests/expected_files_typesdb/formatters_test.py similarity index 100% rename from src/tests/integrationtests/expected_files_typesdb/formatters_test.py rename to tests/integrationtests/expected_files_typesdb/formatters_test.py diff --git a/src/tests/integrationtests/expected_files_typesdb/parsers.py b/tests/integrationtests/expected_files_typesdb/parsers.py similarity index 100% rename from src/tests/integrationtests/expected_files_typesdb/parsers.py rename to tests/integrationtests/expected_files_typesdb/parsers.py diff --git a/src/tests/integrationtests/expected_files_typesdb/parsers_init.py b/tests/integrationtests/expected_files_typesdb/parsers_init.py similarity index 100% rename from src/tests/integrationtests/expected_files_typesdb/parsers_init.py rename to tests/integrationtests/expected_files_typesdb/parsers_init.py diff --git a/src/tests/integrationtests/expected_files_typesdb/parsers_test.py b/tests/integrationtests/expected_files_typesdb/parsers_test.py similarity index 100% rename from src/tests/integrationtests/expected_files_typesdb/parsers_test.py rename to tests/integrationtests/expected_files_typesdb/parsers_test.py diff --git a/src/tests/integrationtests/test_generating_the_files.py b/tests/integrationtests/test_generating_the_files.py similarity index 100% rename from src/tests/integrationtests/test_generating_the_files.py rename to tests/integrationtests/test_generating_the_files.py diff --git a/src/tests/model/__init__.py b/tests/model/__init__.py similarity index 100% rename from src/tests/model/__init__.py rename to tests/model/__init__.py diff --git a/src/tests/model/test_sql_query_column_model.py b/tests/model/test_sql_query_column_model.py similarity index 100% rename from src/tests/model/test_sql_query_column_model.py rename to tests/model/test_sql_query_column_model.py diff --git a/src/tests/model/test_sql_query_column_model_timestamp.py b/tests/model/test_sql_query_column_model_timestamp.py similarity index 100% rename from src/tests/model/test_sql_query_column_model_timestamp.py rename to tests/model/test_sql_query_column_model_timestamp.py diff --git a/src/tests/other/__init__.py b/tests/other/__init__.py similarity index 100% rename from src/tests/other/__init__.py rename to tests/other/__init__.py diff --git a/src/tests/other/test_dependencies.py b/tests/other/test_dependencies.py similarity index 100% rename from src/tests/other/test_dependencies.py rename to tests/other/test_dependencies.py diff --git a/src/tests/other/test_version.py b/tests/other/test_version.py similarity index 100% rename from src/tests/other/test_version.py rename to tests/other/test_version.py diff --git a/src/tests/test_database/__init__.py b/tests/test_database/__init__.py similarity index 100% rename from src/tests/test_database/__init__.py rename to tests/test_database/__init__.py diff --git a/src/tests/test_database/test_database_names.db b/tests/test_database/test_database_names.db similarity index 100% rename from src/tests/test_database/test_database_names.db rename to tests/test_database/test_database_names.db diff --git a/src/tests/test_database/test_database_types.db b/tests/test_database/test_database_types.db similarity index 100% rename from src/tests/test_database/test_database_types.db rename to tests/test_database/test_database_types.db diff --git a/src/tests/test_database/twitter_ios.db b/tests/test_database/twitter_ios.db similarity index 100% rename from src/tests/test_database/twitter_ios.db rename to tests/test_database/twitter_ios.db diff --git a/src/tests/test_database/twitter_ios_error.db b/tests/test_database/twitter_ios_error.db similarity index 100% rename from src/tests/test_database/twitter_ios_error.db rename to tests/test_database/twitter_ios_error.db diff --git a/src/tests/test_helper/__init__.py b/tests/test_helper/__init__.py similarity index 100% rename from src/tests/test_helper/__init__.py rename to tests/test_helper/__init__.py diff --git a/src/tests/test_helper/output_handler_file.py b/tests/test_helper/output_handler_file.py similarity index 100% rename from src/tests/test_helper/output_handler_file.py rename to tests/test_helper/output_handler_file.py diff --git a/src/tests/test_helper/path_helper.py b/tests/test_helper/path_helper.py similarity index 100% rename from src/tests/test_helper/path_helper.py rename to tests/test_helper/path_helper.py diff --git a/src/tests/test_template/__init__.py b/tests/test_template/__init__.py similarity index 100% rename from src/tests/test_template/__init__.py rename to tests/test_template/__init__.py diff --git a/src/tests/test_template/test_template.jinja2 b/tests/test_template/test_template.jinja2 similarity index 100% rename from src/tests/test_template/test_template.jinja2 rename to tests/test_template/test_template.jinja2 diff --git a/utils/__init__.py b/utils/__init__.py new file mode 100644 index 0000000..40a96af --- /dev/null +++ b/utils/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- diff --git a/utils/check_dependencies.py b/utils/check_dependencies.py new file mode 100755 index 0000000..0801cf5 --- /dev/null +++ b/utils/check_dependencies.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +"""Script to check for the availability and version of dependencies.""" + +from __future__ import print_function +from __future__ import unicode_literals + +import sys + +# Change PYTHONPATH to include dependencies. +sys.path.insert(0, '.') + +import utils.dependencies # pylint: disable=wrong-import-position + + +if __name__ == '__main__': + dependency_helper = utils.dependencies.DependencyHelper() + + if not dependency_helper.CheckDependencies(): + build_instructions_url = ( + 'https://github.com/log2timeline/plaso/wiki/Users-Guide') + + print('See: {0:s} on how to set up plaso scaffolder.'.format( + build_instructions_url)) + print('') diff --git a/utils/dependencies.py b/utils/dependencies.py new file mode 100644 index 0000000..b749bdb --- /dev/null +++ b/utils/dependencies.py @@ -0,0 +1,383 @@ +# -*- coding: utf-8 -*- +"""Helper to check for availability and version of dependencies.""" + +from __future__ import print_function +from __future__ import unicode_literals + +import re + +try: + import ConfigParser as configparser +except ImportError: + import configparser # pylint: disable=import-error + + +class DependencyDefinition(object): + """Dependency definition. + + Attributes: + dpkg_name (str): name of the dpkg package that provides the dependency. + is_optional (bool): True if the dependency is optional. + l2tbinaries_name (str): name of the l2tbinaries package that provides + the dependency. + maximum_version (str): maximum supported version. + minimum_version (str): minimum supported version. + name (str): name of (the Python module that provides) the dependency. + pypi_name (str): name of the PyPI package that provides the dependency. + python2_only (bool): True if the dependency is only supported by Python 2. + rpm_name (str): name of the rpm package that provides the dependency. + version_property (str): name of the version attribute or function. + """ + + def __init__(self, name): + """Initializes a dependency configuration. + + Args: + name (str): name of the dependency. + """ + super(DependencyDefinition, self).__init__() + self.dpkg_name = None + self.is_optional = False + self.l2tbinaries_name = None + self.maximum_version = None + self.minimum_version = None + self.name = name + self.pypi_name = None + self.python2_only = False + self.rpm_name = None + self.version_property = None + + +class DependencyDefinitionReader(object): + """Dependency definition reader.""" + + _VALUE_NAMES = frozenset([ + 'dpkg_name', + 'is_optional', + 'l2tbinaries_name', + 'maximum_version', + 'minimum_version', + 'pypi_name', + 'python2_only', + 'rpm_name', + 'version_property']) + + def _GetConfigValue(self, config_parser, section_name, value_name): + """Retrieves a value from the config parser. + + Args: + config_parser (ConfigParser): configuration parser. + section_name (str): name of the section that contains the value. + value_name (str): name of the value. + + Returns: + object: configuration value or None if the value does not exists. + """ + try: + return config_parser.get(section_name, value_name) + except configparser.NoOptionError: + return None + + def Read(self, file_object): + """Reads dependency definitions. + + Args: + file_object (file): file-like object to read from. + + Yields: + DependencyDefinition: dependency definition. + """ + config_parser = configparser.RawConfigParser() + # pylint: disable=deprecated-method + # TODO: replace readfp by read_file, check if Python 2 compatible + config_parser.readfp(file_object) + + for section_name in config_parser.sections(): + dependency_definition = DependencyDefinition(section_name) + for value_name in self._VALUE_NAMES: + value = self._GetConfigValue(config_parser, section_name, value_name) + setattr(dependency_definition, value_name, value) + + yield dependency_definition + + +class DependencyHelper(object): + """Dependency helper. + + Attributes: + dependencies (dict[str, DependencyDefinition]): dependencies. + """ + + _VERSION_NUMBERS_REGEX = re.compile(r'[0-9.]+') + _VERSION_SPLIT_REGEX = re.compile(r'\.|\-') + + def __init__(self, configuration_file='dependencies.ini'): + """Initializes a dependency helper. + + Args: + configuration_file (Optional[str]): path to the dependencies + configuration file. + """ + super(DependencyHelper, self).__init__() + self._test_dependencies = {} + self.dependencies = {} + + dependency_reader = DependencyDefinitionReader() + + with open(configuration_file, 'r') as file_object: + for dependency in dependency_reader.Read(file_object): + self.dependencies[dependency.name] = dependency + + dependency = DependencyDefinition('mock') + dependency.minimum_version = '0.7.1' + dependency.version_property = '__version__' + self._test_dependencies['mock'] = dependency + + def _CheckPythonModule(self, dependency): + """Checks the availability of a Python module. + + Args: + dependency (DependencyDefinition): dependency definition. + + Returns: + tuple: consists: + + bool: True if the Python module is available and conforms to + the minimum required version, False otherwise. + str: status message. + """ + module_object = self._ImportPythonModule(dependency.name) + if not module_object: + status_message = 'missing: {0:s}'.format(dependency.name) + return False, status_message + + if not dependency.version_property: + return True, dependency.name + + return self._CheckPythonModuleVersion( + dependency.name, module_object, dependency.version_property, + dependency.minimum_version, dependency.maximum_version) + + def _CheckPythonModuleVersion( + self, module_name, module_object, version_property, minimum_version, + maximum_version): + """Checks the version of a Python module. + + Args: + module_object (module): Python module. + module_name (str): name of the Python module. + version_property (str): version attribute or function. + minimum_version (str): minimum version. + maximum_version (str): maximum version. + + Returns: + tuple: consists: + + bool: True if the Python module is available and conforms to + the minimum required version, False otherwise. + str: status message. + """ + module_version = None + if not version_property.endswith('()'): + module_version = getattr(module_object, version_property, None) + else: + version_method = getattr( + module_object, version_property[:-2], None) + if version_method: + module_version = version_method() + + if not module_version: + status_message = ( + 'unable to determine version information for: {0:s}').format( + module_name) + return False, status_message + + # Make sure the module version is a string. + module_version = '{0!s}'.format(module_version) + + # Split the version string and convert every digit into an integer. + # A string compare of both version strings will yield an incorrect result. + + # Strip any semantic suffixes such as a1, b1, pre, post, rc, dev. + module_version = self._VERSION_NUMBERS_REGEX.findall(module_version)[0] + + if module_version[-1] == '.': + module_version = module_version[:-1] + + try: + module_version_map = list( + map(int, self._VERSION_SPLIT_REGEX.split(module_version))) + except ValueError: + status_message = 'unable to parse module version: {0:s} {1:s}'.format( + module_name, module_version) + return False, status_message + + if minimum_version: + try: + minimum_version_map = list( + map(int, self._VERSION_SPLIT_REGEX.split(minimum_version))) + except ValueError: + status_message = 'unable to parse minimum version: {0:s} {1:s}'.format( + module_name, minimum_version) + return False, status_message + + if module_version_map < minimum_version_map: + status_message = ( + '{0:s} version: {1!s} is too old, {2!s} or later required').format( + module_name, module_version, minimum_version) + return False, status_message + + if maximum_version: + try: + maximum_version_map = list( + map(int, self._VERSION_SPLIT_REGEX.split(maximum_version))) + except ValueError: + status_message = 'unable to parse maximum version: {0:s} {1:s}'.format( + module_name, maximum_version) + return False, status_message + + if module_version_map > maximum_version_map: + status_message = ( + '{0:s} version: {1!s} is too recent, {2!s} or earlier ' + 'required').format(module_name, module_version, maximum_version) + return False, status_message + + status_message = '{0:s} version: {1!s}'.format(module_name, module_version) + return True, status_message + + def _CheckSQLite3(self): + """Checks the availability of sqlite3. + + Returns: + tuple: consists: + + bool: True if the Python module is available and conforms to + the minimum required version, False otherwise. + str: status message. + """ + # On Windows sqlite3 can be provided by both pysqlite2.dbapi2 and + # sqlite3. sqlite3 is provided with the Python installation and + # pysqlite2.dbapi2 by the pysqlite2 Python module. Typically + # pysqlite2.dbapi2 would contain a newer version of sqlite3, hence + # we check for its presence first. + module_name = 'pysqlite2.dbapi2' + minimum_version = '3.7.8' + + module_object = self._ImportPythonModule(module_name) + if not module_object: + module_name = 'sqlite3' + + module_object = self._ImportPythonModule(module_name) + if not module_object: + status_message = 'missing: {0:s}.'.format(module_name) + return False, status_message + + return self._CheckPythonModuleVersion( + module_name, module_object, 'sqlite_version', minimum_version, None) + + def _ImportPythonModule(self, module_name): + """Imports a Python module. + + Args: + module_name (str): name of the module. + + Returns: + module: Python module or None if the module cannot be imported. + """ + try: + module_object = list(map(__import__, [module_name]))[0] + except ImportError: + return None + + # If the module name contains dots get the upper most module object. + if '.' in module_name: + for submodule_name in module_name.split('.')[1:]: + module_object = getattr(module_object, submodule_name, None) + + return module_object + + def _PrintCheckDependencyStatus( + self, dependency, result, status_message, verbose_output=True): + """Prints the check dependency status. + + Args: + dependency (DependencyDefinition): dependency definition. + result (bool): True if the Python module is available and conforms to + the minimum required version, False otherwise. + status_message (str): status message. + """ + if not result or dependency.is_optional: + if dependency.is_optional: + status_indicator = '[OPTIONAL]' + else: + status_indicator = '[FAILURE]' + + print('{0:s}\t{1:s}'.format(status_indicator, status_message)) + + elif verbose_output: + print('[OK]\t\t{0:s}'.format(status_message)) + + def CheckDependencies(self, verbose_output=True): + """Checks the availability of the dependencies. + + Args: + verbose_output (Optional[bool]): True if output should be verbose. + + Returns: + bool: True if the dependencies are available, False otherwise. + """ + print('Checking availability and versions of dependencies.') + check_result = True + + for module_name, dependency in sorted(self.dependencies.items()): + if module_name == 'sqlite3': + result, status_message = self._CheckSQLite3() + else: + result, status_message = self._CheckPythonModule(dependency) + + if not result and module_name == 'lzma': + dependency.name = 'backports.lzma' + result, status_message = self._CheckPythonModule(dependency) + + if not result and not dependency.is_optional: + check_result = False + + self._PrintCheckDependencyStatus( + dependency, result, status_message, verbose_output=verbose_output) + + if check_result and not verbose_output: + print('[OK]') + + print('') + return check_result + + def CheckTestDependencies(self, verbose_output=True): + """Checks the availability of the dependencies when running tests. + + Args: + verbose_output (Optional[bool]): True if output should be verbose. + + Returns: + bool: True if the dependencies are available, False otherwise. + """ + if not self.CheckDependencies(verbose_output=verbose_output): + return False + + print('Checking availability and versions of test dependencies.') + check_result = True + + for dependency in sorted( + self._test_dependencies.values(), + key=lambda dependency: dependency.name): + result, status_message = self._CheckPythonModule(dependency) + if not result: + check_result = False + + self._PrintCheckDependencyStatus( + dependency, result, status_message, verbose_output=verbose_output) + + if check_result and not verbose_output: + print('[OK]') + + print('') + return check_result