标签: pre-commit-hook

Python:强制类型提示

我想知道是否有办法在 Python 项目中强制执行类型提示?

目前,我正在使用mypy 预提交挂钩.pre-commit-config.yaml

- repo: https://github.com/pre-commit/mirrors-mypy
  rev: v0.931
  hooks:
    - id: mypy
Run Code Online (Sandbox Code Playgroud)

使用这个钩子,由于调用函数时的类型错误,我将(正确地)无法提交以下代码add

def add(a: int, b: int) -> int:
    return a + b

add(a=1.0, b=2.0)
Run Code Online (Sandbox Code Playgroud)

但是,使用上面的mypy预提交钩子组合,类型提示仍然没有完全强制执行,我将能够在不使用类型提示的情况下提交以下代码:

def add(a, b):
    return a + b
Run Code Online (Sandbox Code Playgroud)

我也很好奇,在动态类型语言(例如 Python)中强制执行类型提示是否是一个好主意?我知道我可以为我的项目选择一些静态类型语言(例如 Java),但是,我想使用带有强制类型提示的 Python 的原因是因为这允许我依赖现有的 Python 库(例如 Tensorflow),同时确保由于函数签名中指定了类型,所以编写的代码质量更好。

python pre-commit-hook mypy python-typing

2
推荐指数
1
解决办法
2935
查看次数

RuntimeError:无法找到内置发现 python_spec='python3.1' 的解释器

描述。

在尝试使用预提交挂钩时,我遇到了一些困难,包括Intel在 Conda 环境中以格式包形式发布的最新 Lava-nc 。.tar.gz pip

微量元素

environment.yaml使用以下 Conda文件:

# This file is to automatically configure your environment. It allows you to
# run the code with a single command without having to install anything
# (extra).

# First run:: conda env create --file environment.yml
# If you change this file, run: conda env update --file environment.yml

# Instructions for this networkx-to-lava-nc repository only. First time usage
# On Ubuntu (this is needed for lava-nc): …
Run Code Online (Sandbox Code Playgroud)

pre-commit pre-commit-hook conda pre-commit.com

2
推荐指数
1
解决办法
9166
查看次数

如何使用SharpSVN访问SVN预提交消息?

我看到我所能设置的只是%repos%和%txn%

我如何使用它们来获取提交消息(在我的情况下,所以我可以解析票号,这样我可以看到它在提交之前是否存在于bug数据库中)

c# svn sharpsvn pre-commit-hook

1
推荐指数
1
解决办法
2327
查看次数

预提交钩子修改AssemblyInfo

我有一个预提交钩子,使用ruby gem semver2定义构建号.gem基本上只创建一个名为.semver的文件,用于存储包的版本信息.

钩子根据某些日期/提交参数生成构建号,然后使用此信息更改AssemblyInfo.cs,然后在提交之前添加更改的文件.

我在这里有几个问题:

  1. 就.NET而言,有一个钩子修改我的AssemblyInfo文件有危险吗?

  2. 是应该使用预提交挂钩还是其他挂钩?

  3. 我怎样才能知道这个钩子不同的行为上--amend,mergerebase 承诺?

  4. 我怎么能告诉这个钩子在分支的基础上表现不同?

  5. 您是否有自动化构建号的不同解决方案?

钩子:

#!/bin/sh
#
# Append build number to semver version 
#

# check semver has been initiated
if [ -f .semver ]; then
    echo `semver`
else
    echo `semver init`
    echo `semver inc minor`
    echo `semver pre 'alpha.1'`
    echo `semver`
fi

# grab date string
date_str=`date +%y%m.%d.`

# grab commit count +1
build_num=$(git rev-list --since="00:00:00" HEAD --count)
let "build_num += 1"

# generate build …
Run Code Online (Sandbox Code Playgroud)

.net c# git bash pre-commit-hook

1
推荐指数
1
解决办法
1102
查看次数

在 Git 预提交挂钩中运行 testng 测试

如果特定的 testng 测试失败,我将如何编写一个 bash 脚本,该脚本将作为 git 预提交挂钩运行以失败?我目前通过 Maven Surefire 运行我的 testng 测试,如下所示:

mvn clean test -Dtest="MyTestName"
Run Code Online (Sandbox Code Playgroud)

git bash testng pre-commit-hook

1
推荐指数
1
解决办法
2658
查看次数

是否可以列出受预提交运行影响的文件?

在使用预提交时,有时我只想知道文件名将被传递到挂钩,只是为了验证--from-refto-ref是否正确。例如,我正在运行:

pre-commit run flake8  --from-ref $(git merge-base master HEAD) --to-ref HEAD
Run Code Online (Sandbox Code Playgroud)

我不确定哪些文件传递给了我的flake8钩子,添加--verbose没有帮助,因为flake8也不会输出文件名。

那么有什么方法可以告诉pre-commit只输出文件名列表而不运行实际的钩子?

pre-commit pre-commit-hook pre-commit.com

1
推荐指数
1
解决办法
2236
查看次数

在 Windows 中运行预提交 python 包会出现 ExecutableNotFoundError: Executable `/bin/sh`

我正在开发一个pre-commit==2.15.0已添加到 python 需求文件中的项目。我安装了要求。现在,当我尝试执行以下操作时,git commit出现以下错误:

An unexpected error has occurred: ExecutableNotFoundError: Executable `/bin/sh` not found
Check the log at C:\Users\username\.cache\pre-commit\pre-commit.log
Run Code Online (Sandbox Code Playgroud)

在我的预提交日志中,我有:

pre-commit version: 2.15.0
sys.version:
    3.9.0 (tags/v3.9.0:9cf6752, Oct  5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)]
sys.executable: c:\users\username\appdata\local\programs\python\python39\python.exe
os.name: nt
sys.platform: win32

Traceback (most recent call last):
  File "c:\users\username\appdata\local\programs\python\python39\lib\site-packages\pre_commit\error_handler.py", line 65, in error_handler
    yield
  File "c:\users\username\appdata\local\programs\python\python39\lib\site-packages\pre_commit\main.py", line 368, in main
    return hook_impl(
  File "c:\users\username\appdata\local\programs\python\python39\lib\site-packages\pre_commit\commands\hook_impl.py", line 231, in hook_impl
    retv, stdin = _run_legacy(hook_type, hook_dir, args)
  File "c:\users\username\appdata\local\programs\python\python39\lib\site-packages\pre_commit\commands\hook_impl.py", line …
Run Code Online (Sandbox Code Playgroud)

python pre-commit pre-commit-hook python-3.x pre-commit.com

1
推荐指数
1
解决办法
4661
查看次数

从预提交挂钩中排除 pytest 文件/标记

有没有办法pytest.mark在预提交挂钩期间排除标记为 的 pytests 运行?特别是,我想排除标记为集成测试的测试。

测试的内容如下所示

pytestmark = [pytest.mark.integration, pytest.mark.reporting_api]

### some tests
Run Code Online (Sandbox Code Playgroud)

配置.pre-commit-conifg.yaml pytest

-   repo: local
    hooks:
    -   id: pytest
        name: pytest
        entry: pytest test/
        language: system
        pass_filenames: false
        types: [python]
        stages: [commit, push]
Run Code Online (Sandbox Code Playgroud)

python git pre-commit-hook pytest pre-commit.com

1
推荐指数
1
解决办法
1310
查看次数

Git - 预提交钩子错误颜色

我的预提交钩子压缩/编译css/js文件.当发生错误时,我只是echo用来输出错误然后exit 1.但是,写入控制台的文本是WHITE,因此在发生错误时不容易看到.

是否有另一种方法可以写入控制台(errOut?),使文本变为RED

git stdout stderr pre-commit-hook

0
推荐指数
1
解决办法
1860
查看次数

在预提交钩子中调用 git

我在运行 git pre-commit hook 时得到了奇怪的结果,例如,当我在终端中执行 git diff --name-only 时,它似乎给出了与在 .git/hooks/pre-commit 中执行时不同的结果

所以我的问题是:

  1. 我可以在 git hooks 中调用 git 吗?
  2. 如果 1. 可以:如果我执行 git commit -am"bla" ,那么预提交钩子到底什么时候被调用?特别是 git 是否先进行暂存,然后调用预提交挂钩?

我问这个是因为我尝试了 2 或 3 次:我修改文件,我手动运行脚本,它打印出来

#! /bin/sh -xv
files=$(git diff --name-only)
+ git diff --name-only
+ files=path/to/file.h
echo $files
+ echo path/to/file.h
path/to/file.h
...
Run Code Online (Sandbox Code Playgroud)

当我执行 git commit -am"eh" 时,输出会有所不同

#! /bin/sh -xv
files=$(git diff --name-only)
+ git diff --name-only
+ files=
echo $files
+ echo
Run Code Online (Sandbox Code Playgroud)

git pre-commit-hook

0
推荐指数
1
解决办法
1563
查看次数

Click 和 Black 版本与 Poetry 不兼容( ImportError: 无法从 'click' 导入名称 '_unicodefun' )

click 8.1.1 和 black <=22.1.0 之间的不兼容性已报告并显然已在此处修复

但显然诗歌仍然是一个问题,正如这里报道的(并且显然也已修复)

配置:

poetry run pre-commit run --all-files系统地运行结果:

black....................................................................Failed
- hook id: black
- exit code: 1

Traceback (most recent call last):
  File "/Users/charlotteweil1/.cache/pre-commit/repoqg3mkzrn/py_env-python3.9/bin/black", line 8, in <module>
    sys.exit(patched_main())
  File "/Users/charlotteweil1/.cache/pre-commit/repoqg3mkzrn/py_env-python3.9/lib/python3.9/site-packages/black/__init__.py", line 1372, in patched_main
    patch_click()
  File "/Users/charlotteweil1/.cache/pre-commit/repoqg3mkzrn/py_env-python3.9/lib/python3.9/site-packages/black/__init__.py", line 1358, in patch_click
    from click import _unicodefun
ImportError: cannot import name '_unicodefun' from 'click' (/Users/charlotteweil1/.cache/pre-commit/repoqg3mkzrn/py_env-python3.9/lib/python3.9/site-packages/click/__init__.py)
Run Code Online (Sandbox Code Playgroud)

我尝试删除整个repoqg3mkzrn目录.cache/pre-commit并重新安装预提交,但行为是相同的:(

提前致谢!

python pre-commit-hook pre-commit.com

0
推荐指数
1
解决办法
1481
查看次数

更新 Mac OS 后 Git 提交问题

更新到最新版本后,我在 Mac 操作系统中收到以下提交错误。尝试重新启动 VS Code,也尝试使用终端,但出现同样的错误。直到git add .这一步工作正常。只有提交命令无法正常工作。可能是什么问题?

在此输入图像描述

 git commit -m "Commit message"
.git/hooks/pre-commit: line 15: python: command not found
.git/hooks/pre-commit: line 16: python: command not found
Run Code Online (Sandbox Code Playgroud)

git commit pre-commit-hook git-commit

-3
推荐指数
1
解决办法
4982
查看次数