DataCrawl-AI / datacrawl

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

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

Open Mews opened 2 months ago

Mews commented 2 months 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 2 months 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 2 months 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 2 months 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 2 months 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 2 months 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 2 months 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)