25th November 2022
Coding⚑
Languages⚑
PDM⚑
-
Correction: Solve circular dependencies by manual constraining.
It also helps to run
pdm update
with the-v
flag, that way you see which are the candidates that are rejected, and you can put the constrain you want. For example, I was seeing the next traceback:pdm.termui: Conflicts detected: pyflakes>=3.0.0 (from <Candidate autoflake 2.0.0 from https://pypi.org/simple/autoflake/>) pyflakes<2.5.0,>=2.4.0 (from <Candidate flake8 4.0.1 from unknown>)
So I added a new dependency to pin it:
[tool.pdm.dev-dependencies] dependencies = [ # Until flakeheaven supports flake8 5.x # https://github.com/flakeheaven/flakeheaven/issues/132 "flake8>=4.0.1,<5.0.0", "pyflakes<2.5.0", ]
If none of the above works, you can override them:
[tool.pdm.overrides] "importlib-metadata" = ">=3.10"
Click⚑
-
For basic command line tools with file system operations, the
CliRunner.isolated_filesystem()
method is useful for setting the current working directory to a new, empty folder.from click.testing import CliRunner from cat import cat def test_cat(): runner = CliRunner() with runner.isolated_filesystem(): with open("hello.txt", "w") as f: f.write("Hello World!") result = runner.invoke(cat, ["hello.txt"]) assert result.exit_code == 0 assert result.output == "Hello World!\n"
Pass
temp_dir
to control where the temporary directory is created. The directory will not be removed by Click in this case. This is useful to integrate with a framework like Pytest that manages temporary files.def test_keep_dir(tmp_path): runner = CliRunner() with runner.isolated_filesystem(temp_dir=tmp_path) as td: ...
Python Snippets⚑
-
New: Pathlib make parent directories if they don't exist.
pathlib.Path("/tmp/sub1/sub2").mkdir(parents=True, exist_ok=True)
From the docs:
-
If
parents
istrue
, any missing parents of this path are created as needed; they are created with the default permissions without taking mode into account (mimicking the POSIXmkdir -p
command). -
If
parents
isfalse
(the default), a missing parent raisesFileNotFoundError
. -
If
exist_ok
isfalse
(the default),FileExistsError
is raised if the target directory already exists. -
If
exist_ok
istrue
,FileExistsError
exceptions will be ignored (same behavior as the POSIXmkdir -p
command), but only if the last path component is not an existing non-directory file.
-
-
Create a file at this given path.
pathlib.Path("/tmp/file.txt").touch(exist_ok=True)
If the file already exists, the function succeeds if
exist_ok
istrue
(and its modification time is updated to the current time), otherwiseFileExistsError
is raised.If the parent directory doesn't exist you need to create it first.
python global_conf_path = xdg_home / "autoimport" / "config.toml" global_conf_path.parent.mkdir(parents=True) global_conf_path.touch(exist_ok=True)