indrajithi / tiny-web-crawler

A simple and easy to use web crawler for Python
MIT License
55 stars 11 forks source link

`poetry install --with dev` doesn't install pre-commit hooks #23

Open Mews opened 1 week ago

Mews commented 1 week ago

Running poetry install --with dev doesn't install the pre-commit hooks, as of right now they need to be installed manually through pre-commit install

indrajithi commented 1 week ago

I have created script.py for this. I thought it was getting installed from here.

[tool.poetry.scripts]
post_install = "scripts:post_install"
Mews commented 1 week ago

For me I had to do pre-commit install to get the hooks :/ I can try to look into it but I've never used poetry before.

Mews commented 1 week ago

Maybe this is something you could take a look at, though I agree that using something native to poetry would be better than using extensions: https://pypi.org/project/poetry-pre-commit-plugin/

Mews commented 1 week ago

From what I can tell the post_install function is just never getting ran. I tried changing it to this

import subprocess

def post_install() -> None:
    with open("test.txt", "w") as f:
        f.write("this function ran")

    subprocess.run(["poetry", "run", "pre-commit", "install"], check=True)

And no file is created when running poetry install.

Mews commented 1 week ago

From what I can tell the [tool.poetry.scripts] option is actually for making cli scripts, so basically it lets you register a command for the cli. So what the pyproject.toml is telling poetry is actually that it should register post_install as a console command. And sure enough, if you just type post_install in the command line, you get this:

Traceback (most recent call last):
  File "C:\Users\Public\codg\forks\Scripts\\post_install", line 3, in <module>
    from scripts import post_install
ModuleNotFoundError: No module named 'scripts'
Mews commented 1 week ago

I found this post by the creator of poetry and he says he doesn't support running scripts on installation, so its probably best to just have to person contributing run the pre-commit commands manually, or to use the extension I sent earlier (although it looks like you can't install the push hook automatically through the extension)