This is an automated email from the ASF dual-hosted git repository.

agrove pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-datafusion-python.git


The following commit(s) were added to refs/heads/main by this push:
     new 6eb42e7  Pre-commit hooks (#228)
6eb42e7 is described below

commit 6eb42e72fcaeb1a9e18bf7b2c26c749954d3ce7d
Author: Jeremy Dyer <[email protected]>
AuthorDate: Fri Feb 24 08:31:55 2023 -0500

    Pre-commit hooks (#228)
    
    * Add bindings for GetIndexedField
    
    * Add pre-commit configuration file
---
 .pre-commit-config.yaml | 52 +++++++++++++++++++++++++++++++++++++++++++++++++
 README.md               |  8 ++++++++
 2 files changed, 60 insertions(+)

diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644
index 0000000..3c68053
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,52 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+repos:
+      - repo: https://github.com/psf/black
+        rev: 22.3.0
+        hooks:
+              - id: black
+                files: datafusion/.*
+                # Explicitly specify the pyproject.toml at the repo root, not 
per-project.
+                args: ["--config", "pyproject.toml", "--line-length", "79", 
"--diff", "--check", "."]
+      - repo: https://github.com/PyCQA/flake8
+        rev: 5.0.4
+        hooks:
+              - id: flake8
+                files: datafusion/.*$
+                types: [file]
+                types_or: [python]
+                additional_dependencies: ["flake8-force"]
+      - repo: local
+        hooks:
+          - id: rust-fmt
+            name: Rust fmt
+            description: Run cargo fmt on files included in the commit. 
rustfmt should be installed before-hand.
+            entry: cargo fmt --all --
+            pass_filenames: true
+            types: [file, rust]
+            language: system
+          - id: rust-clippy
+            name: Rust clippy
+            description: Run cargo clippy on files included in the commit. 
clippy should be installed before-hand.
+            entry: cargo clippy --all-targets --all-features -- -Dclippy::all 
-Aclippy::redundant_closure
+            pass_filenames: false
+            types: [file, rust]
+            language: system
+
+default_language_version:
+      python: python3
diff --git a/README.md b/README.md
index d83b78c..923b6be 100644
--- a/README.md
+++ b/README.md
@@ -183,6 +183,14 @@ maturin develop
 python -m pytest
 ```
 
+### Running & Installing pre-commit hooks
+
+arrow-datafusion-python takes advantage of 
(pre-commit)[https://pre-commit.com/] to assist developers in with code linting 
to help reduce the number of commits that ultimately fail in CI due to linter 
errors. Using the pre-commit hooks is optional for the developer but certainly 
helpful for keep PRs clean and concise.
+
+Our pre-commit hooks can be installed by running `pre-commit install` which 
will install the configurations in your ARROW_DATAFUSION_PYTHON_ROOT/.github 
directory and run each time you perform a commit failing to perform the commit 
if an offending lint is found giving you the opportunity to make changes 
locally before pushing.
+
+The pre-commit hooks can also be ran ad-hoc without installing them by simply 
running `pre-commit run --all-files`
+
 ## How to update dependencies
 
 To change test dependencies, change the `requirements.in` and run

Reply via email to