Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* ✨ add simulated build * add logging to simulated build * ✨ add environment REST API * 📝 updating inline docs * 🔧 update spack runtime config * 🔧 chore(pyproject.toml): fix formatting and add missing dependencies ✨ feat(pyproject.toml): add fastapi dependency 🐛 fix(pyproject.toml): add disallow_untyped_calls and disallow_untyped_defs to mypy configuration 🐛 fix(cli.py): add return type hints to service() and main() functions ✨ feat(config.yml): change server port from 8000 to 7080 ✨ feat(config.py): add manifest field to SpackConfig model and change config file path to ~/.softpack/builder/ 🔧 chore(environment.py): add type hints to methods and arguments ✨ feat(environment.py): add support for Spack environment commands 🚀 perf(environment.py): improve build method to fail fast 🐛 fix(environment.py): fix environment_instantiate argument type 🔧 chore(environment.py): add type hints to function arguments and return types 🐛 fix(utils.py): add type hints to async_exec function arguments and return value 🗑️ chore(test_softpack_builder.py): delete unused test file and fixture * 🐛 fix(app.py): add missing import for __version__ and add ServiceStatus class and root endpoint ✨ feat(environment.py): add type ignore comments to env variable and async_exec function call ✅ test(test_app.py): add test for HTTP GET request to root route * 🔧 chore(config): update ORAS model to allow optional username, token, and uri fields 🔧 chore(config): update SpackConfig model to allow optional manifest field * 🚀 feat(pyproject.toml): add essential-generators package 🔥 chore(utils.py): remove async_exec function ♻️ refactor(environment.py): use a wrapper function for environment_create_flow in background task 🔧 chore(tox.ini): add tests directory to autoflake and isort commands * 🐛 fix(config.py): assign path variable before returning in classmethod ✨ feat(environment.py): make flow_wrapper async function * ✅ test(test_environment.py): add test for environment flow and env model creation * 🚀 chore(dev.yml): rename workflow from 'dev workflow' to 'tests' 📝 docs(README.md): add badges for issue resolution time and percentage of open issues 🔧 chore(pyproject.toml): reformat dependencies section for better readability 📦 chore(pyproject.toml): add sqlalchemy and singleton-decorator dependencies 🔧 chore(pyproject.toml): update softpack-builder script path 🔧 chore(pyproject.toml): add pytest-asyncio, pytest-cases, and pytest-httpx to test extras 🔧 chore(pyproject.toml): add filterwarnings option to pytest.ini_options section 🚀 feat(app.py): add Application class as a singleton to manage FastAPI application and Typer commands 🔧 chore(app.py): refactor ServiceStatus to a dictionary 🔧 chore(app.py): refactor root() to return a dictionary instead of ServiceStatus object 🚀 feat(app.py): add register_module() method to register a module with the application 🚀 feat(app.py): add url() method to get absolute URL path 🚀 feat(app.py): add main() method as the main command line entrypoint 🔥 chore(cli.py): remove unused code 🔧 chore(config.py): remove unused settings variable and method 🎉 feat(deployments.py): add Deployments class for building and running deployments 🚀 feat(environment.py): add delay_task function for testing purposes 🔧 chore(environment.py): refactor Environment.Model to include from_yaml and asdict methods 🚀 feat(environment.py): add stage, create_manifest, and build methods to Environment class 🔧 chore(environment.py): refactor create_environment_flow to use Prefect tasks and add delay_task to each task 🎉 feat(main.py): add SoftPack Builder main entrypoint 🚀 feat(service.py): add Service module with run command to start the SoftPack Builder REST API service 🆕 feat(conftest.py): add fixtures for TestClient, CLI, and service factory and service runners. 🚨 test(test_app.py): fix test_root, test_openapi_docs, and test_openapi_redoc tests to use httpx instead of requests ✨ feat(test_app.py): add test_register_module test to check if module is registered correctly in the application 🆕 test(test_deployments.py): add tests for Deployments class and its methods 🔧 chore(test_environment.py): refactor test_environment_create_api to use a parameterized test 🚀 feat(test_environment.py): add test_environment_create_command to test environment creation via CLI 🚨 fix(tests): fix flake8 errors in test_main.py ✅ test(service.py): add test for service run 🚨 fix(tox.ini): ignore D101, D102, D103, D107 in flake8 tests for tests directory * ✨ implement flow deployments * 📦 update poetry lock file * 🐛 fix(test_main.py): use pytest.raises context manager instead of try-except block in test_main function * 🚀 chore(dev.yml): add Spack installation and create config file step to dev workflow ✅ test(conftest.py): add fixture for running Prefect agent and add specs for Argon and Zirconium projects 🐛 fix(test_environment.py): add create_environment import ✨ feat(test_environment.py): add test_environment_create_flow test 🔧 chore(tox.ini): add concurrency option to coverage run section * 🐛 fix(dev.yml): change 'repo' to 'repository' in 'Install Spack' job (#6) * 🐛 fix(dev.yml): change 'repo' to 'repository' in 'Install Spack' job configuration * 🔧 chore(dev.yml): update branch names in workflow trigger to only use 'main' and 'develop' branches * 🔧 chore(dev.yml): refactor Create config file step to use environment variables for better readability and maintainability * 🐛 fix(dev.yml): use env variable in CONFIG_FILE instead of hardcoding it * 🐛 fix(dev.yml): change env variable from env.CONFIG_PATH to vars.CONFIG_PATH * 🐛 fix(dev.yml): fix typo in CONFIG_FILE variable assignment 🔧 chore(dev.yml): change CONFIG_FILE path to be relative to CONFIG_PATH * 🐛 fix(dev.yml): update SPACK_COMMAND to use $GITHUB_WORKSPACE to locate spack binary 🔍 chore(dev.yml): add debugging information to the job * 🐛 fix(dev.yml): remove SPACK_COMMAND environment variable and use direct path to spack command instead * 🐛 fix(dev.yml): change CONFIG_PATH to relative path ✨ feat(dev.yml): add debug information to script * 🐛 fix(dev.yml): change path to config file to use HOME environment variable * 🐛 fix(dev.yml): change CONFIG_PATH to $HOME/.softpack/builder 🔧 chore(dev.yml): remove unnecessary echo, pwd, ls, and cat commands * merge feature/singularity (#7) * 🔧 chore(config): add SingularityConfig model to Settings 🔧 chore(deployments): change default deployment name to include flow name 🚀 feat(environment.py): add Manifest class to handle Spack manifest files 🔧 chore(environment.py): add owner field to Environment data model 🔧 chore(environment.py): change typing import to include Callable and cast 🔧 chore(environment.py): change task import to Task and add FlowRunContext import 🔧 chore(environment.py): change DaskTaskRunner import to use prefect_dask.task_runners 🔧 chore(environment.py): change ShellOperation import to use prefect_shell 🔧 chore(environment.py): change BaseModel import to use pydantic 🔧 chore(environment.py): change list[str] to List[str] in Environment data model 🔧 chore(environment.py): change dataclasses import to use dataclass decorator 🔧 chore(environment.py): change Path import to use pathlib.Path 🐛 fix(environment.py): fix from_yaml method to use self.filename instead of filename argument 🐛 🔨 refactor(environment.py): refactor Environment class to use Box for filenames and add task method 🚀 chore(environment.py): add task_run_name to Prefect task for better logging 🐛 fix(environment.py): pass kwargs to ShellOperation and spack_command methods 🔨 refactor(environment.py): extract singularity_command method from Environment class ✨ feat(environment.py): add create_container_definition method to create Spack manifest and Singularity definition 🚀 feat(environment.py): add create_container_definition task to create container definition 👷 chore(environment.py): use Environment.task decorator instead of @task() decorator 👷 chore(environment.py): use cast() to cast the return value of the task functions 👷 chore(environment.py): return FlowRunContext dictionary from create_environment function 🔀 chore(tests, tox): merge changes from branch 'guest' to 'main' 👥 chore(specs): add owner field to argon and zirconium projects 🔧 chore(tox): update envlist to include python 3.9 and remove python 3.8 from gh-actions configuration * 🚀 chore(config.yml): update spack version to v0.19.1 🐛 fix(environment.py): add --fakeroot flag to build command and convert filenames to strings * 🔧 chore(config.yml): add os_packages to container config ✨ feat(config.yml): add strip option to container config ✨ feat(config.yml): add concretizer.unify option to config view 🐛 fix(environment.py): replace dictionary with Box object to allow attribute access 🔥 chore(environment.py): remove unused from_yaml method ✨ feat(environment.py): use Box object to patch manifest and dump to file 🔨 refactor(environment.py): change return type of create_manifest, concretize and build methods to Environment ✨ feat(environment.py): add concretize method to Environment class 🐳 chore(environment.py): rename create_container_definition method to containerize in Environment class 🚀 chore(environment.py): refactor create_environment function to use a list of tasks instead of individual tasks 🐛 fix(environment.py): rename create_container_definition task to containerize_environment ✨ feat(environment.py): add concretize_environment task to concretize an environment before containerizing it ✨ feat(environment.py): add containerize_environment task to containerize an environment ✨ feat(environment.py): add build_environment task to build an environment * 🔧 chore(dev.yml): add steps to install Singularity and run code coverage with codecov-action * 🔙 revert(dev.yml): downgrade Singularity version to 3.8.7 * 🔧 updated spack config * 🚀 chore(dev.yml): update spack reference to commit 6aa4c29119 🐛 fix(config.yml): add missing dependencies for spack build 🐛 fix(environment.py): fix logger initialization and spack command path * 🔀 chore(dev.yml): update spack repository reference to commit 0707ffd4e466402bf19dff1add59eaf2b6d9154e ✅ test(dev.yml): run tests using poetry run tox instead of tox directly * ✨ feat(config.yml): add support for environment path and spack config 🐛 fix(environment.py): fix ImageSpec constructor arguments ✨ feat(environment.py): add ImageSpec abstract class and BuildSpec and FinalSpec subclasses ✨ feat(environment.py): add patch_manifest method to Environment class ✨ feat(environment.py): add containerize method to Environment class ✨ feat(environment.py): add build method to Environment class ✨ feat(environment.py): add path attribute to Environment class ✨ feat(environment.py): add EnvironmentConfig class to SpackConfig ✨ feat(environment.py): add Environment classmethod to create Environment from model ✨ feat(environment.py): add environment path to Environment constructor ✨ feat(environment.py): add path attribute to Environment class ✨ feat(environment.py): add patch method to BuildSpec ✨ feat(environment.py): add patch method to FinalSpec ✨ feat(environment.py): add args method to Build * 🔧 chore(makefile): remove tests directory from mypy command 🔧 chore(config.yml): rename spack.environment to spack.environments 🔧 chore(environment.py): change --directory to --bind and remove --allow-root and --force options 🔧 chore(environment.py): change logger type to LoggerAdapter 🔧 chore(test_environment.py): add settings fixture and change create_environment call to use Box * 🐛 fix(conftest.py): use Path instead of str for environments path 🐛 fix(conftest.py): use tempfile.mkdtemp instead of TemporaryDirectory 🐛 fix(test_environment.py): reduce PREFECT_AGENT_TIMEOUT to 5 seconds ✨ feat(test_environment.py): add prefect_agent fixture to join threads ✨ feat(test_environment.py): add capsys fixture to capture stdout and stderr * 🚨 fix(test_environment.py): remove unused fixture 'prefect_agent' and commented out code ✨ feat(test_environment.py): remove unused fixture 'prefect_agent' from test signature * 🚀 feat(dev.yml): add step to install Spack templates 🐛 fix(conftest.py): use tmpdir fixture instead of tempfile to create temporary directory 🐛 fix(conftest.py): set path attribute of Environment.settings.spack.environments to Path object 🚀 feat(conftest.py): add Spack templates directory to Environment.settings.spack.manifest.spack.config.template_dirs 🐛 fix(test_environment.py): remove unused settings fixture from test_environment_create_flow() function signature * 🔍 chore(dev.yml): add temporary files debug step to show workspace and spack-templates directory contents * 🔧 chore(dev.yml): create Spack config file and show its content 🔧 chore(environment.py): remove settings attribute from Environment class and pass it as an argument to Manifest.patch() method 🔧 chore(conftest.py): refactor fixture to patch app settings instead of Environment settings * 🚀 chore(dev.yml): update spack-templates repository to wtsi-hgi/spack-templates 🔒 chore(dev.yml): create GPG key for softpack 🔧 chore(config.yml): remove unused spack config options 🔧 chore(config.yml): change spack cache and environments paths to /tmp 🔧 chore(config.yml): add bind mount for spack cache and GPG key in Singularity build 🔧 chore(environment.py): change spack environments path to /tmp 🔧 chore(tests/conftest.py): change spack environments and cache paths to /tmp 🔧 chore(tests/data/specs): remove argon.yml and zirconium.yml, add test-env.yml 🔧 chore(tests/test_environment.py): increase Prefect agent timeout to 300 seconds * 🔍 chore(dev.yml): add debug logs to check .gpg directory ✨ feat(tox.ini): add verbose flag to pytest command * 🚀 chore(dev.yml): add test for GPG directory configuration * 🔥 chore(dev.yml): remove TEST GPG DIR step 🔒 chore(dev.yml): set SPACK_GNUPGHOME environment variable in Create GPG key step * 🚀 chore(dev.yml): add optional input to enable tmate debugging in manually-triggered workflows * 🔥 chore(dev.yml): remove tmate debugging step from dev workflow 🐛 fix(dev.yml): add which command to show singularity location in Spack config step ✨ feat(dev.yml): add tmate debugging step to dev workflow when manually triggered with debug_enabled input * 🐛 fix(config.yml): use $HOME instead of tilde (~) to reference user's home directory in bind option * 🔥 chore(dev.yml): remove Spack config display step ✨ feat(dev.yml): add code coverage step using codecov-action * 🔥 chore(tox.ini): remove verbose flag from pytest command * merge from feature/singularity (#8) * 🔧 chore(config): add SingularityConfig model to Settings 🔧 chore(deployments): change default deployment name to include flow name 🚀 feat(environment.py): add Manifest class to handle Spack manifest files 🔧 chore(environment.py): add owner field to Environment data model 🔧 chore(environment.py): change typing import to include Callable and cast 🔧 chore(environment.py): change task import to Task and add FlowRunContext import 🔧 chore(environment.py): change DaskTaskRunner import to use prefect_dask.task_runners 🔧 chore(environment.py): change ShellOperation import to use prefect_shell 🔧 chore(environment.py): change BaseModel import to use pydantic 🔧 chore(environment.py): change list[str] to List[str] in Environment data model 🔧 chore(environment.py): change dataclasses import to use dataclass decorator 🔧 chore(environment.py): change Path import to use pathlib.Path 🐛 fix(environment.py): fix from_yaml method to use self.filename instead of filename argument 🐛 🔨 refactor(environment.py): refactor Environment class to use Box for filenames and add task method 🚀 chore(environment.py): add task_run_name to Prefect task for better logging 🐛 fix(environment.py): pass kwargs to ShellOperation and spack_command methods 🔨 refactor(environment.py): extract singularity_command method from Environment class ✨ feat(environment.py): add create_container_definition method to create Spack manifest and Singularity definition 🚀 feat(environment.py): add create_container_definition task to create container definition 👷 chore(environment.py): use Environment.task decorator instead of @task() decorator 👷 chore(environment.py): use cast() to cast the return value of the task functions 👷 chore(environment.py): return FlowRunContext dictionary from create_environment function 🔀 chore(tests, tox): merge changes from branch 'guest' to 'main' 👥 chore(specs): add owner field to argon and zirconium projects 🔧 chore(tox): update envlist to include python 3.9 and remove python 3.8 from gh-actions configuration * 🚀 chore(config.yml): update spack version to v0.19.1 🐛 fix(environment.py): add --fakeroot flag to build command and convert filenames to strings * 🔧 chore(config.yml): add os_packages to container config ✨ feat(config.yml): add strip option to container config ✨ feat(config.yml): add concretizer.unify option to config view 🐛 fix(environment.py): replace dictionary with Box object to allow attribute access 🔥 chore(environment.py): remove unused from_yaml method ✨ feat(environment.py): use Box object to patch manifest and dump to file 🔨 refactor(environment.py): change return type of create_manifest, concretize and build methods to Environment ✨ feat(environment.py): add concretize method to Environment class 🐳 chore(environment.py): rename create_container_definition method to containerize in Environment class 🚀 chore(environment.py): refactor create_environment function to use a list of tasks instead of individual tasks 🐛 fix(environment.py): rename create_container_definition task to containerize_environment ✨ feat(environment.py): add concretize_environment task to concretize an environment before containerizing it ✨ feat(environment.py): add containerize_environment task to containerize an environment ✨ feat(environment.py): add build_environment task to build an environment * 🔧 chore(dev.yml): add steps to install Singularity and run code coverage with codecov-action * 🔙 revert(dev.yml): downgrade Singularity version to 3.8.7 * 🔧 updated spack config * 🚀 chore(dev.yml): update spack reference to commit 6aa4c29119 🐛 fix(config.yml): add missing dependencies for spack build 🐛 fix(environment.py): fix logger initialization and spack command path * 🔀 chore(dev.yml): update spack repository reference to commit 0707ffd4e466402bf19dff1add59eaf2b6d9154e ✅ test(dev.yml): run tests using poetry run tox instead of tox directly * ✨ feat(config.yml): add support for environment path and spack config 🐛 fix(environment.py): fix ImageSpec constructor arguments ✨ feat(environment.py): add ImageSpec abstract class and BuildSpec and FinalSpec subclasses ✨ feat(environment.py): add patch_manifest method to Environment class ✨ feat(environment.py): add containerize method to Environment class ✨ feat(environment.py): add build method to Environment class ✨ feat(environment.py): add path attribute to Environment class ✨ feat(environment.py): add EnvironmentConfig class to SpackConfig ✨ feat(environment.py): add Environment classmethod to create Environment from model ✨ feat(environment.py): add environment path to Environment constructor ✨ feat(environment.py): add path attribute to Environment class ✨ feat(environment.py): add patch method to BuildSpec ✨ feat(environment.py): add patch method to FinalSpec ✨ feat(environment.py): add args method to Build * 🔧 chore(makefile): remove tests directory from mypy command 🔧 chore(config.yml): rename spack.environment to spack.environments 🔧 chore(environment.py): change --directory to --bind and remove --allow-root and --force options 🔧 chore(environment.py): change logger type to LoggerAdapter 🔧 chore(test_environment.py): add settings fixture and change create_environment call to use Box * 🐛 fix(conftest.py): use Path instead of str for environments path 🐛 fix(conftest.py): use tempfile.mkdtemp instead of TemporaryDirectory 🐛 fix(test_environment.py): reduce PREFECT_AGENT_TIMEOUT to 5 seconds ✨ feat(test_environment.py): add prefect_agent fixture to join threads ✨ feat(test_environment.py): add capsys fixture to capture stdout and stderr * 🚨 fix(test_environment.py): remove unused fixture 'prefect_agent' and commented out code ✨ feat(test_environment.py): remove unused fixture 'prefect_agent' from test signature * 🚀 feat(dev.yml): add step to install Spack templates 🐛 fix(conftest.py): use tmpdir fixture instead of tempfile to create temporary directory 🐛 fix(conftest.py): set path attribute of Environment.settings.spack.environments to Path object 🚀 feat(conftest.py): add Spack templates directory to Environment.settings.spack.manifest.spack.config.template_dirs 🐛 fix(test_environment.py): remove unused settings fixture from test_environment_create_flow() function signature * 🔍 chore(dev.yml): add temporary files debug step to show workspace and spack-templates directory contents * 🔧 chore(dev.yml): create Spack config file and show its content 🔧 chore(environment.py): remove settings attribute from Environment class and pass it as an argument to Manifest.patch() method 🔧 chore(conftest.py): refactor fixture to patch app settings instead of Environment settings * 🚀 chore(dev.yml): update spack-templates repository to wtsi-hgi/spack-templates 🔒 chore(dev.yml): create GPG key for softpack 🔧 chore(config.yml): remove unused spack config options 🔧 chore(config.yml): change spack cache and environments paths to /tmp 🔧 chore(config.yml): add bind mount for spack cache and GPG key in Singularity build 🔧 chore(environment.py): change spack environments path to /tmp 🔧 chore(tests/conftest.py): change spack environments and cache paths to /tmp 🔧 chore(tests/data/specs): remove argon.yml and zirconium.yml, add test-env.yml 🔧 chore(tests/test_environment.py): increase Prefect agent timeout to 300 seconds * 🔍 chore(dev.yml): add debug logs to check .gpg directory ✨ feat(tox.ini): add verbose flag to pytest command * 🚀 chore(dev.yml): add test for GPG directory configuration * 🔥 chore(dev.yml): remove TEST GPG DIR step 🔒 chore(dev.yml): set SPACK_GNUPGHOME environment variable in Create GPG key step * 🚀 chore(dev.yml): add optional input to enable tmate debugging in manually-triggered workflows * 🔥 chore(dev.yml): remove tmate debugging step from dev workflow 🐛 fix(dev.yml): add which command to show singularity location in Spack config step ✨ feat(dev.yml): add tmate debugging step to dev workflow when manually triggered with debug_enabled input * 🐛 fix(config.yml): use $HOME instead of tilde (~) to reference user's home directory in bind option * 🔥 chore(dev.yml): remove Spack config display step ✨ feat(dev.yml): add code coverage step using codecov-action * 🔥 chore(tox.ini): remove verbose flag from pytest command * 🔥 refactor(environment.py): move settings attribute to the top of the class 🐛 fix(environment.py): remove redundant settings attribute assignment in __init__ method * 🐛 fix(environment.py): fix logger initialization in init_logger method 🐛 fix(test_environment.py): fix test_environment_logger test case to properly test logger initialization * 🐛 fix(environment.py): add exist_ok=True to mkdir method 🧪 test(environment.py): add cleanup of created directory after test * 🔧 chore(pyproject.toml): update python version to >=3.9,<4.0 🔧 chore(pyproject.toml): remove python version 3.8 from classifiers 🔧 chore(pyproject.toml): remove target-version py38 from black configuration 🔧 chore(environment.py): update docstring for from_model method 🔧 chore(test_environment.py): update create_environment call to use Box 🔧 chore(test_environment.py): remove unused PREFECT_AGENT_TIMEOUT variable 🔧 chore(test_environment.py): update logger test to trigger exception * ✨ add artifacts support (#9) * ✨ add artifacts support initial support for adding adding artifacts and pushing images to container registries * 📦 chore(deps): add mergedeep to pyproject.toml 📦 chore(deps): add semver to pyproject.toml 📦 chore(tox): use poetry to manage dependencies 📦 chore(tox): add commands_pre to install dependencies before running commands in tox.ini * 🐛 fix(models.py): make VaultConfig fields optional 🐛 fix(settings.py): catch KeyError when trying to read vault config from file and print to stderr * 🔧 chore(README.md): use --with instead of -E to install poetry environments 🔧 chore(softpack_builder): rename register_module to register_serializer in all files * merge from feature/artifacts (#10) * ✨ add artifacts support initial support for adding adding artifacts and pushing images to container registries * 📦 chore(deps): add mergedeep to pyproject.toml 📦 chore(deps): add semver to pyproject.toml 📦 chore(tox): use poetry to manage dependencies 📦 chore(tox): add commands_pre to install dependencies before running commands in tox.ini * 🐛 fix(models.py): make VaultConfig fields optional 🐛 fix(settings.py): catch KeyError when trying to read vault config from file and print to stderr * 🔧 chore(README.md): use --with instead of -E to install poetry environments 🔧 chore(softpack_builder): rename register_module to register_serializer in all files * 🐛 fix(app.py): change datetime format to string to avoid serialization issues 🐛 fix(artifacts.py): fix typo in variable name from registry to registry 🔨 refactor(models.py): capitalize first letter of class docstring 🔨 refactor(settings.py): rename config_dir to default_config_dir and add user_config_dir to improve semantics. Also remove unused imports. * 🔥 refactor(spack.py): remove unused buildcache create command and directory argument 🚀 feat(spack.py): add push command to buildcache to upload package to remote cache server using the hostname of the current machine * merge from feature/artifacts (#11) * ✨ add artifacts support initial support for adding adding artifacts and pushing images to container registries * 📦 chore(deps): add mergedeep to pyproject.toml 📦 chore(deps): add semver to pyproject.toml 📦 chore(tox): use poetry to manage dependencies 📦 chore(tox): add commands_pre to install dependencies before running commands in tox.ini * 🐛 fix(models.py): make VaultConfig fields optional 🐛 fix(settings.py): catch KeyError when trying to read vault config from file and print to stderr * 🔧 chore(README.md): use --with instead of -E to install poetry environments 🔧 chore(softpack_builder): rename register_module to register_serializer in all files * 🐛 fix(app.py): change datetime format to string to avoid serialization issues 🐛 fix(artifacts.py): fix typo in variable name from registry to registry 🔨 refactor(models.py): capitalize first letter of class docstring 🔨 refactor(settings.py): rename config_dir to default_config_dir and add user_config_dir to improve semantics. Also remove unused imports. * 🔥 refactor(spack.py): remove unused buildcache create command and directory argument 🚀 feat(spack.py): add push command to buildcache to upload package to remote cache server using the hostname of the current machine * 📝 docs(spack.py): update docstring of env_buildcache method to reflect its functionality 🚀 feat(spack.py): add support for pushing build cache for a package using the command method * 🆕 chore(requirements.txt): add new dependencies to the project to improve functionality and security
- Loading branch information