diff --git a/src/rendercv/cli/create_theme_command/create_init_file_for_theme.py b/src/rendercv/cli/create_theme_command/create_init_file_for_theme.py index 9f3cde90..ba330f48 100644 --- a/src/rendercv/cli/create_theme_command/create_init_file_for_theme.py +++ b/src/rendercv/cli/create_theme_command/create_init_file_for_theme.py @@ -30,7 +30,7 @@ def create_init_file_for_theme(theme_name: str, init_file_path: pathlib.Path) -> / "design" / "classic_theme.py" ) - new_init_file_contents = classic_theme_file.read_text() + new_init_file_contents = classic_theme_file.read_text(encoding="utf-8") new_init_file_contents = new_init_file_contents.replace( "class ClassicTheme(BaseModelWithoutExtraKeys):", @@ -40,4 +40,4 @@ def create_init_file_for_theme(theme_name: str, init_file_path: pathlib.Path) -> 'theme: Literal["classic"] = "classic"', f'theme: Literal["{theme_name}"] = "{theme_name}"', ) - init_file_path.write_text(new_init_file_contents) + init_file_path.write_text(new_init_file_contents, encoding="utf-8") diff --git a/src/rendercv/renderer/html.py b/src/rendercv/renderer/html.py index dd438c69..91523818 100644 --- a/src/rendercv/renderer/html.py +++ b/src/rendercv/renderer/html.py @@ -30,6 +30,6 @@ def generate_html( html_path = resolve_rendercv_file_path( rendercv_model, rendercv_model.settings.render_command.html_path ) - html_contents = render_html(rendercv_model, markdown_path.read_text()) - html_path.write_text(html_contents) + html_contents = render_html(rendercv_model, markdown_path.read_text(encoding="utf-8")) + html_path.write_text(html_contents, encoding="utf-8") return html_path diff --git a/src/rendercv/renderer/markdown.py b/src/rendercv/renderer/markdown.py index 329379ff..bc580c82 100644 --- a/src/rendercv/renderer/markdown.py +++ b/src/rendercv/renderer/markdown.py @@ -25,5 +25,5 @@ def generate_markdown(rendercv_model: RenderCVModel) -> pathlib.Path | None: rendercv_model, rendercv_model.settings.render_command.markdown_path ) markdown_contents = render_full_template(rendercv_model, "markdown") - markdown_path.write_text(markdown_contents) + markdown_path.write_text(markdown_contents, encoding="utf-8") return markdown_path diff --git a/src/rendercv/renderer/typst.py b/src/rendercv/renderer/typst.py index ec9e890a..49d67768 100644 --- a/src/rendercv/renderer/typst.py +++ b/src/rendercv/renderer/typst.py @@ -26,5 +26,5 @@ def generate_typst(rendercv_model: RenderCVModel) -> pathlib.Path | None: rendercv_model, rendercv_model.settings.render_command.typst_path ) typst_contents = render_full_template(rendercv_model, "typst") - typst_path.write_text(typst_contents) + typst_path.write_text(typst_contents, encoding="utf-8") return typst_path diff --git a/tests/cli/create_theme_command/test_create_init_file_for_theme.py b/tests/cli/create_theme_command/test_create_init_file_for_theme.py index 928e3177..95797f98 100644 --- a/tests/cli/create_theme_command/test_create_init_file_for_theme.py +++ b/tests/cli/create_theme_command/test_create_init_file_for_theme.py @@ -21,7 +21,7 @@ class TestCreateInitFileForTheme: create_init_file_for_theme(theme_name, init_file_path) assert init_file_path.exists() - content = init_file_path.read_text() + content = init_file_path.read_text(encoding="utf-8") assert f'theme: Literal["{theme_name}"]' in content assert f"{theme_name.capitalize()}Theme" in content diff --git a/tests/cli/create_theme_command/test_create_theme_command.py b/tests/cli/create_theme_command/test_create_theme_command.py index 5176e6b9..01bbf9c2 100644 --- a/tests/cli/create_theme_command/test_create_theme_command.py +++ b/tests/cli/create_theme_command/test_create_theme_command.py @@ -20,7 +20,7 @@ class TestCliCommandCreateTheme: assert (theme_folder / "__init__.py").exists() assert (theme_folder / "Preamble.j2.typ").exists() - init_content = (theme_folder / "__init__.py").read_text() + init_content = (theme_folder / "__init__.py").read_text(encoding="utf-8") assert f'theme: Literal["{theme_name}"]' in init_content def test_raises_error_if_folder_exists(self, tmp_path): diff --git a/tests/cli/new_command/test_new_command.py b/tests/cli/new_command/test_new_command.py index 7a17f2d9..4309d9b9 100644 --- a/tests/cli/new_command/test_new_command.py +++ b/tests/cli/new_command/test_new_command.py @@ -32,7 +32,7 @@ class TestCliCommandNew: # Set up pre-existing files/folders if input_file_exists: - input_file_path.write_text("existing content") + input_file_path.write_text("existing content", encoding="utf-8") if typst_templates_exist: typst_folder.mkdir() if markdown_templates_exist: @@ -49,7 +49,7 @@ class TestCliCommandNew: # If input file existed before, content should be unchanged if input_file_exists: - assert input_file_path.read_text() == "existing content" + assert input_file_path.read_text(encoding="utf-8") == "existing content" else: # Make sure it's a valid YAML file build_rendercv_dictionary_and_model(input_file_path) diff --git a/tests/cli/render_command/test_run_rendercv.py b/tests/cli/render_command/test_run_rendercv.py index 1dbce1bd..041d70a1 100644 --- a/tests/cli/render_command/test_run_rendercv.py +++ b/tests/cli/render_command/test_run_rendercv.py @@ -80,7 +80,7 @@ class TestTimedStep: class TestRunRendercv: def test_invalid_yaml(self, tmp_path): invalid_yaml = tmp_path / "invalid.yaml" - invalid_yaml.write_text("invalid: yaml: content: :") + invalid_yaml.write_text("invalid: yaml: content: :", encoding="utf-8") progress = ProgressPanel(quiet=True) @@ -91,7 +91,7 @@ class TestRunRendercv: def test_invalid_input_file(self, tmp_path): invalid_schema = tmp_path / "invalid_schema.yaml" - invalid_schema.write_text("cv:\n name: 123") + invalid_schema.write_text("cv:\n name: 123", encoding="utf-8") progress = ProgressPanel(quiet=True) diff --git a/tests/cli/render_command/test_watcher.py b/tests/cli/render_command/test_watcher.py index f94d54c7..5cd6e9ce 100644 --- a/tests/cli/render_command/test_watcher.py +++ b/tests/cli/render_command/test_watcher.py @@ -23,7 +23,7 @@ class TestRunFunctionIfFileChanges: def test_calls_function_when_file_changes(self, tmp_path): watched_file = tmp_path / "test.yaml" - watched_file.write_text("initial") + watched_file.write_text("initial", encoding="utf-8") call_count = 0 @@ -41,14 +41,14 @@ class TestRunFunctionIfFileChanges: time.sleep(0.2) initial_count = call_count - watched_file.write_text("first edit") + watched_file.write_text("first edit", encoding="utf-8") time.sleep(0.2) assert call_count > initial_count def test_continues_running_after_function_raises_typer_exit(self, tmp_path): watched_file = tmp_path / "test.yaml" - watched_file.write_text("initial") + watched_file.write_text("initial", encoding="utf-8") call_count = 0 should_raise = False @@ -69,14 +69,14 @@ class TestRunFunctionIfFileChanges: time.sleep(0.2) should_raise = True count_before_exit = call_count - watched_file.write_text("edit that raises exit") + watched_file.write_text("edit that raises exit", encoding="utf-8") time.sleep(0.2) assert call_count > count_before_exit should_raise = False count_after_exit = call_count - watched_file.write_text("edit after exit") + watched_file.write_text("edit after exit", encoding="utf-8") time.sleep(0.2) assert call_count > count_after_exit