Skip to main content

A compact SQL formatter with dialect-aware parsing.

Project description

sql-neatfmt

sql-neatfmt is a compact SQL formatter designed for editor use. It uses SQLGlot for dialect-aware parsing and owns the final layout rules.

The formatter intentionally favors readable query editing:

SELECT a.id,
       a.name,
       b.code code_name
FROM table_a a
         LEFT JOIN table_b b
           ON a.id = b.a_id
          AND b.deleted = 0
WHERE a.status = 1
  AND a.created_at >= DATE '2026-04-01'
GROUP BY a.id
ORDER BY a.id DESC;

Usage

sql-neatfmt --dialect mysql < query.sql
sql-neatfmt --dialect postgres query.sql
sql-neatfmt --dialect oracle --fix query.sql
sql-neatfmt --dialect mysql --keyword-case lower query.sql
sql-neatfmt --dialect mysql --check query.sql
sql-neatfmt --dialect mysql --diff query.sql

Keywords are uppercased by default. Use --keyword-case lower or --no-uppercase-keywords to emit lowercase keywords instead.

Use --check in CI or editor hooks to fail when SQL would be reformatted. Use --diff to print a unified diff without modifying files.

Installation

Install from a local checkout:

uv tool install --from ~/repos/sql-neatfmt sql-neatfmt

Install from a Git checkout:

uv tool install git+https://github.com/LuciusChen/sql-neatfmt

After publishing to PyPI:

uv tool install sql-neatfmt

Build release artifacts:

uv build --no-sources

Publish to PyPI from GitHub Actions:

  1. Create a PyPI pending trusted publisher for sql-neatfmt.
  2. Use owner LuciusChen, repository sql-neatfmt, workflow publish.yml, and environment pypi.
  3. Run the Publish workflow from GitHub Actions, or publish a GitHub release.

Publish from this checkout after setting a PyPI token:

uv publish --check-url https://pypi.org/simple/

Supported initial dialect names follow SQLGlot: mysql, postgres, oracle, sqlite, tsql, and others accepted by SQLGlot.

Scope

This is intentionally conservative. Parse failures, comments, and templated SQL are returned unchanged rather than risk corrupting the query.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sql_neatfmt-0.1.1.tar.gz (24.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sql_neatfmt-0.1.1-py3-none-any.whl (11.5 kB view details)

Uploaded Python 3

File details

Details for the file sql_neatfmt-0.1.1.tar.gz.

File metadata

  • Download URL: sql_neatfmt-0.1.1.tar.gz
  • Upload date:
  • Size: 24.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sql_neatfmt-0.1.1.tar.gz
Algorithm Hash digest
SHA256 2582ec2d8509b2beb719512e01fd2d01bc8ea4cd0bb1f8964f3ecc10896e04c3
MD5 be8110bf7b2f144ebd6fd0bd9fb4ad34
BLAKE2b-256 09f866f20e10087177cf2c42303d1e63b08ceccc1f5ff307b1a5712844ce78dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for sql_neatfmt-0.1.1.tar.gz:

Publisher: publish.yml on LuciusChen/sql-neatfmt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sql_neatfmt-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: sql_neatfmt-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 11.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sql_neatfmt-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4896d40470946a90667f8f93a16e4b0794247a1bbce3da68da3d559e91f267ad
MD5 7fdfd8ae1048dadb747a4c741c7f8508
BLAKE2b-256 9a8254fdf8057ae3144d2db5f5349d2c02ca5f3aa0c3743fe01600e7d81294ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for sql_neatfmt-0.1.1-py3-none-any.whl:

Publisher: publish.yml on LuciusChen/sql-neatfmt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page