Skip to content

Commit

Permalink
perf: Cache Project.dotenv_env
Browse files Browse the repository at this point in the history
  • Loading branch information
edgarrmondragon committed Jan 4, 2024
1 parent 1919739 commit 9ccb878
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 6 deletions.
2 changes: 1 addition & 1 deletion src/meltano/core/project.py
Original file line number Diff line number Diff line change
Expand Up @@ -372,7 +372,7 @@ def dotenv(self):
"""
return self.root.joinpath(".env")

@property
@cached_property
def dotenv_env(self):
"""Get values from this project's .env file.
Expand Down
13 changes: 8 additions & 5 deletions tests/meltano/core/plugin/test_plugin_settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -347,9 +347,9 @@ def test_as_env_custom(
@pytest.mark.usefixtures("env_var")
def test_namespace_as_env_prefix(
self,
project,
project: Project,
session,
target,
target: ProjectPlugin,
plugin_settings_service_factory,
):
subject = plugin_settings_service_factory(target)
Expand All @@ -376,6 +376,7 @@ def assert_env_value(value, env_var):
# Name prefix
dotenv.unset_key(project.dotenv, "MOCK_SCHEMA")
dotenv.set_key(project.dotenv, "TARGET_MOCK_SCHEMA", "name_prefix")
project.refresh()
assert_env_value("name_prefix", "TARGET_MOCK_SCHEMA")

config = subject.as_env(session=session)
Expand Down Expand Up @@ -486,7 +487,7 @@ def test_store_meltano_yml(self, subject, project):

@pytest.mark.order(2)
@pytest.mark.usefixtures("tap")
def test_store_dotenv(self, subject, project):
def test_store_dotenv(self, subject: PluginSettingsService, project: Project):
store = SettingValueStore.DOTENV

assert not project.dotenv.exists()
Expand All @@ -507,6 +508,7 @@ def test_store_dotenv(self, subject, project):
)

dotenv.set_key(project.dotenv, "TAP_MOCK_BOOLEAN", "false")
project.refresh()
assert subject.get_with_source("boolean") == (False, SettingValueStore.DOTENV)
dotenv.unset_key(project.dotenv, "TAP_MOCK_BOOLEAN")

Expand Down Expand Up @@ -548,8 +550,8 @@ def test_store_dotenv(self, subject, project):
def test_env_var_expansion(
self,
session,
subject,
project,
subject: PluginSettingsService,
project: Project,
monkeypatch,
env_var,
):
Expand All @@ -564,6 +566,7 @@ def test_env_var_expansion(
dotenv.set_key(project.dotenv, "A", "rock")
dotenv.set_key(project.dotenv, "B", "paper")
dotenv.set_key(project.dotenv, "C", "scissors")
project.refresh()

yml_config = {
"var": "$VAR",
Expand Down
1 change: 1 addition & 0 deletions tests/meltano/core/test_plugin_invoker.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ async def test_env(self, project, tap, session, plugin_invoker_factory):
project.dotenv.touch()
dotenv.set_key(project.dotenv, "DUMMY_ENV_VAR", "from_dotenv")
dotenv.set_key(project.dotenv, "TAP_MOCK_TEST", "from_dotenv")
project.refresh()

subject = plugin_invoker_factory(tap)
async with subject.prepared(session):
Expand Down

0 comments on commit 9ccb878

Please sign in to comment.