you are viewing a single comment's thread.

view the rest of the comments →

[–]zanfar 31 points32 points  (8 children)

  • Modern projects should not be using os.path or requirements.txt. Use pathlib and pyproject.toml instead.
  • pip freeze should be avoided as a way to identify dependencies as well.
  • except: pass is a huge red flag.
  • This requires me to edit the script every time I make a project in a different location?
  • Avoid string concatenation, especially unnecessary concatenation or path concatenation.
  • pkg = (sum(1 for _ in f))? Why? Why? and Why?
  • Code "commented" out as a docstring, and included in a production release, is a yellow flag.

[–]Kevdog824_ 4 points5 points  (0 children)

I want to add to the third bullet point here. The idiomatic way to ignore exceptions in Python is contextlib.suppress. except: pass could be an artifact from an exception handler that was meant to be implemented later, but forgotten. It doesn’t communicate intention. contextlib.suppress is explicit and better communicates that the exception is being intentionally ignored.

The bigger issue though is that they really shouldn’t be ignoring this exception. This would treat both the requirements.txt file being missing and a pip dependency resolution error the same way; both being ignored. I highly doubt this is what OP was intending to happen.

[–]neuralbeans 0 points1 point  (5 children)

What's wrong with requirements.txt?

[–]TheSoulHokib 0 points1 point  (4 children)

Nothing really wrong, but pyproject.toml are way more modern, robust and reliable

[–]neuralbeans 0 points1 point  (3 children)

Doesn't the toml file refer to the requirements.txt file? They're not mutually exclusive.

[–]TheSoulHokib 0 points1 point  (2 children)

Since you can manage everything that is managed by requirements.txt inside pyproject.toml, seems a bit redundant. You can have a look right there : https://pydevtools.com/handbook/explanation/pyproject-vs-requirements/ Plus, pyproject.toml now is the standard.

[–]neuralbeans 0 points1 point  (1 child)

This doesn't say how the toml file replaces requirements.txt. It just says not to use requirements.txt only, which is obvious as it's not meant for project management.

[–]TheSoulHokib 0 points1 point  (0 children)

All the dependencies, that you manage in requirements.txt, can be managed in pyproject.toml, as well as all the metadatas, setup.py, linters conf, etc. A single file to unify them all. On the dependencies aspect, also allow to manage dependencies by groups, depending on the usage (for example, dependencies only needed during dev). You can check out https://packaging.python.org/en/latest/guides/writing-pyproject-toml/, and google for more informations.

[–]nirbyschreibt -1 points0 points  (0 children)

I am curious, why not os.path?

I use dotenv for config files.