labtasker 0.2.0__tar.gz → 0.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {labtasker-0.2.0 → labtasker-0.2.1}/PKG-INFO +1 -1
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/__init__.py +1 -1
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/core/logging.py +97 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/pyproject.toml +1 -1
- {labtasker-0.2.0 → labtasker-0.2.1}/.coveragerc +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/.dockerignore +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/.flake8 +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/.gitattributes +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/.gitignore +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/.gitmodules +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/.pre-commit-config.yaml +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/.pytest.ini +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/.python-version +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/Dockerfile +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/LICENSE +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/MANIFEST.in +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/PRIVACY.md +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/README.md +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/demo/advanced/custom_resolver/submit_job.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/demo/advanced/custom_resolver/w.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/demo/advanced/custom_resolver/wo.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/demo/advanced/event_system/email_on_task_failure.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/demo/advanced/event_system/send_email.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/demo/advanced/event_system/sim_unstable_job.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/demo/advanced/event_system/submit.sh +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/demo/basic/bash_demo/job_main.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/demo/basic/bash_demo/run_job.sh +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/demo/basic/bash_demo/submit_job.sh +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/demo/basic/python_demo/run_job.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/demo/basic/python_demo/submit_job.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/docker/mongodb/init.d/init-keyfile.sh +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/docker/mongodb/post-init.d/init-mongo.sh +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/docker-compose.yml +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/__main__.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/api_models.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/__init__.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/cli/__init__.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/cli/cli.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/cli/config.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/cli/event.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/cli/loop.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/cli/queue.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/cli/task.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/cli/worker.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/client_api.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/core/__init__.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/core/api.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/core/cli_utils.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/core/cmd_parser/LabCmd.g4 +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/core/cmd_parser/LabCmdLexer.g4 +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/core/cmd_parser/__init__.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/core/cmd_parser/generated/LabCmd.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/core/cmd_parser/generated/LabCmdLexer.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/core/cmd_parser/generated/LabCmdListener.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/core/cmd_parser/generated/__init__.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/core/cmd_parser/parser.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/core/config.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/core/context.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/core/events.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/core/exceptions.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/core/heartbeat.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/core/job_runner.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/core/paths.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/core/plugin_utils.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/core/query_transpiler.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/core/resolver/__init__.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/core/resolver/models.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/core/resolver/utils.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/core/utils.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/core/version_checker.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/templates/labtasker_root/.gitignore +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/templates/labtasker_root/client.toml +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/templates/labtasker_root/logs/.gitkeep +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/constants.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/filtering.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/security.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/server/__init__.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/server/config.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/server/database.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/server/db_utils.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/server/dependencies.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/server/endpoints.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/server/event_manager.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/server/fsm.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/server/logging.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/server/run.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker/utils.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/labtasker.egg-info/SOURCES.txt +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/script_tests/test_ban_datetime_now/allowed.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/script_tests/test_ban_datetime_now/disallowed.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/script_tests/test_ban_datetime_now/test_ban.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/scripts/check_version.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/scripts/datetime_now_checker.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/server.example.env +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/setup.cfg +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/__init__.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/conftest.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/demo_pager_iterator.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/dummy_jobs/job_1.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/fixtures/__init__.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/fixtures/database/__init__.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/fixtures/database/mock.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/fixtures/database/real.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/fixtures/logging.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/fixtures/mock_datetime_now.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/fixtures/server/__init__.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/fixtures/server/async_app.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/fixtures/server/sync_app.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_api_models.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/__init__.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/conftest.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_cli/__init__.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_cli/conftest.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_cli/test_basic.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_cli/test_config.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_cli/test_event.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_cli/test_loop.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_cli/test_queue.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_cli/test_task.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_cli/test_worker.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/__init__.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_cli_utils.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_event/__init__.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_event/test_concurrency_job_flow_event.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_event/test_event_listener_basic.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_event/test_various_actions.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_event/utils.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_heartbeat.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_job_runner.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_logging.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_loop_internal_error_handler.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_pager_iterator.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_parser.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_query_transpiler/__init__.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_query_transpiler/conftest.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_query_transpiler/test_behavior.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_query_transpiler/test_matching.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_query_transpiler/test_utils.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_query_transpiler/utils.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_resolver.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_runner_concurrency/__init__.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_runner_concurrency/run_concurrent.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_runner_concurrency/test_runner_concurrency_success_failure.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_runner_concurrency/test_runner_high_concurrency.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_runner_timeout/__init__.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_runner_timeout/conftest.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_runner_timeout/test_job_runner_timeout.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_runner_timeout/test_job_runner_with_resolver_timeout.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_runner_with_resolver.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_server_notification_and_client_version.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_version_checker.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_filtering/__init__.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_filtering/exception_utils.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_filtering/test_exception_filtering.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_mock_time.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_security.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_server/__init__.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_server/conftest.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_server/test_database/__init__.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_server/test_database/conftest.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_server/test_database/test_database_basic.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_server/test_database/test_fetch_extra_filter.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_server/test_database/test_query_dict_to_mongo_filter.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_server/test_database/test_required_field_fetching.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_server/test_db_utils/__init__.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_server/test_db_utils/test_arg_match.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_server/test_db_utils/test_keys_to_query_dict.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_server/test_db_utils/test_keys_to_query_dict_deepest.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_server/test_db_utils/test_keys_to_query_dict_topmost.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_server/test_endpoint/__init__.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_server/test_endpoint/test_event_basic.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_server/test_endpoint/test_server.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_server/test_endpoint/test_server_async.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_server/test_endpoint/test_server_async_ping.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_server/test_fsm.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_server/test_get_verified_queue_dependency.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_utils/__init__.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/test_utils/test_utils.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tests/utils.py +0 -0
- {labtasker-0.2.0 → labtasker-0.2.1}/tox.ini +0 -0
|
@@ -2,6 +2,7 @@ import contextlib
|
|
|
2
2
|
import contextvars
|
|
3
3
|
import io
|
|
4
4
|
import os
|
|
5
|
+
import re
|
|
5
6
|
import sys
|
|
6
7
|
import threading
|
|
7
8
|
import warnings
|
|
@@ -189,6 +190,100 @@ class TeeStream(io.TextIOBase):
|
|
|
189
190
|
return getattr(self.original_stream, name)
|
|
190
191
|
|
|
191
192
|
|
|
193
|
+
class AnsiFilterStream(io.TextIOBase):
|
|
194
|
+
"""Filter stream that removes ANSI escape sequences"""
|
|
195
|
+
|
|
196
|
+
def __init__(self, stream):
|
|
197
|
+
self.stream = stream
|
|
198
|
+
self.ansi_escape = re.compile(r"\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])")
|
|
199
|
+
|
|
200
|
+
def write(self, text):
|
|
201
|
+
cleaned = self.ansi_escape.sub("", text)
|
|
202
|
+
return self.stream.write(cleaned)
|
|
203
|
+
|
|
204
|
+
def flush(self):
|
|
205
|
+
return self.stream.flush()
|
|
206
|
+
|
|
207
|
+
# Standard file methods proxied to original stream
|
|
208
|
+
def close(self) -> None:
|
|
209
|
+
return self.stream.close()
|
|
210
|
+
|
|
211
|
+
def fileno(self) -> int:
|
|
212
|
+
return self.stream.fileno()
|
|
213
|
+
|
|
214
|
+
def isatty(self) -> bool:
|
|
215
|
+
return self.stream.isatty()
|
|
216
|
+
|
|
217
|
+
def readable(self) -> bool:
|
|
218
|
+
return self.stream.readable()
|
|
219
|
+
|
|
220
|
+
def read(self, size: int = -1) -> str: # type: ignore[override]
|
|
221
|
+
return self.stream.read(size)
|
|
222
|
+
|
|
223
|
+
def readlines(self, hint: int = -1) -> List[str]: # type: ignore[override]
|
|
224
|
+
return self.stream.readlines(hint)
|
|
225
|
+
|
|
226
|
+
def seek(self, offset: int, whence: int = 0) -> int:
|
|
227
|
+
return self.stream.seek(offset, whence)
|
|
228
|
+
|
|
229
|
+
def seekable(self) -> bool:
|
|
230
|
+
return self.stream.seekable()
|
|
231
|
+
|
|
232
|
+
def tell(self) -> int:
|
|
233
|
+
return self.stream.tell()
|
|
234
|
+
|
|
235
|
+
def truncate(self, size: Optional[int] = None) -> int:
|
|
236
|
+
if size is None:
|
|
237
|
+
return self.stream.truncate()
|
|
238
|
+
return self.stream.truncate(size)
|
|
239
|
+
|
|
240
|
+
def writable(self) -> bool:
|
|
241
|
+
return self.stream.writable()
|
|
242
|
+
|
|
243
|
+
def writelines(self, lines: Iterable[str]) -> None: # type: ignore[override]
|
|
244
|
+
# First write to original stream
|
|
245
|
+
self.stream.writelines(lines)
|
|
246
|
+
|
|
247
|
+
def readline(self, size: Optional[int] = -1) -> str: # type: ignore[override]
|
|
248
|
+
return self.stream.readline(size)
|
|
249
|
+
|
|
250
|
+
def __del__(self) -> None:
|
|
251
|
+
self.stream.close()
|
|
252
|
+
|
|
253
|
+
@property
|
|
254
|
+
def closed(self) -> bool: # type: ignore[override]
|
|
255
|
+
return self.stream.closed
|
|
256
|
+
|
|
257
|
+
def _checkClosed(self) -> None:
|
|
258
|
+
if self.closed:
|
|
259
|
+
raise ValueError("I/O operation on closed file")
|
|
260
|
+
|
|
261
|
+
# Additional TextIOBase attributes that may be needed
|
|
262
|
+
@property
|
|
263
|
+
def encoding(self) -> str: # type: ignore[override]
|
|
264
|
+
return getattr(self.stream, "encoding", None) # type: ignore[return-value]
|
|
265
|
+
|
|
266
|
+
@property
|
|
267
|
+
def errors(self) -> Optional[str]: # type: ignore[override]
|
|
268
|
+
return getattr(self.stream, "errors", None)
|
|
269
|
+
|
|
270
|
+
@property
|
|
271
|
+
def newlines(self) -> Optional[Union[str, tuple]]: # type: ignore[override]
|
|
272
|
+
return getattr(self.stream, "newlines", None)
|
|
273
|
+
|
|
274
|
+
@property
|
|
275
|
+
def buffer(self): # type: ignore[override]
|
|
276
|
+
return getattr(self.stream, "buffer", None)
|
|
277
|
+
|
|
278
|
+
@property
|
|
279
|
+
def line_buffering(self) -> bool: # type: ignore[override]
|
|
280
|
+
return getattr(self.stream, "line_buffering", False)
|
|
281
|
+
|
|
282
|
+
# Forward other methods/properties to wrapped stream
|
|
283
|
+
def __getattr__(self, name):
|
|
284
|
+
return getattr(self.stream, name)
|
|
285
|
+
|
|
286
|
+
|
|
192
287
|
def reset_logger(reset_all: bool = False, debug: bool = False):
|
|
193
288
|
"""
|
|
194
289
|
Reset logger configuration.
|
|
@@ -274,6 +369,8 @@ def log_to_file(
|
|
|
274
369
|
|
|
275
370
|
# Open log file
|
|
276
371
|
log_file = open(file_path, "a", encoding="utf-8")
|
|
372
|
+
if not log_file.isatty():
|
|
373
|
+
log_file = AnsiFilterStream(log_file) # type: ignore[assignment]
|
|
277
374
|
|
|
278
375
|
# Add file to appropriate output streams
|
|
279
376
|
stdout_token = None
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "labtasker"
|
|
7
|
-
version = "0.2.
|
|
7
|
+
version = "0.2.1"
|
|
8
8
|
description = "A task queue system for lab experiments"
|
|
9
9
|
authors = [{ name = "Your Name", email = "your.email@example.com" }]
|
|
10
10
|
license = { text = "Apache License 2.0" }
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/core/cmd_parser/generated/LabCmdLexer.py
RENAMED
|
File without changes
|
{labtasker-0.2.0 → labtasker-0.2.1}/labtasker/client/core/cmd_parser/generated/LabCmdListener.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_event/test_various_actions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_loop_internal_error_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_query_transpiler/__init__.py
RENAMED
|
File without changes
|
{labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_query_transpiler/conftest.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_query_transpiler/test_utils.py
RENAMED
|
File without changes
|
{labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_query_transpiler/utils.py
RENAMED
|
File without changes
|
|
File without changes
|
{labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_runner_concurrency/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_runner_timeout/__init__.py
RENAMED
|
File without changes
|
{labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_runner_timeout/conftest.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{labtasker-0.2.0 → labtasker-0.2.1}/tests/test_client/test_core/test_runner_with_resolver.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{labtasker-0.2.0 → labtasker-0.2.1}/tests/test_server/test_database/test_fetch_extra_filter.py
RENAMED
|
File without changes
|
|
File without changes
|
{labtasker-0.2.0 → labtasker-0.2.1}/tests/test_server/test_database/test_required_field_fetching.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{labtasker-0.2.0 → labtasker-0.2.1}/tests/test_server/test_db_utils/test_keys_to_query_dict.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{labtasker-0.2.0 → labtasker-0.2.1}/tests/test_server/test_endpoint/test_server_async_ping.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|