Observed since 20 Oct, 20:52 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
A Python utility to sort imports beautifully by length and geometric shapes.
aesthetic-imports is a command-line tool that reorganizes import lines at the top of your Python files into geometric shapes based on line length.
Instead of standard alphabetical sorting, it formats imports into triangles, cones and hourglasses — powered by libcst.
pip install aesthetic-imports
Run aesthetic-imports followed by the paths to your Python files:
aesthetic-imports main.py
asc / L (default): Ascending line length (short to long)desc / J: Descending line length (long to short)conical / >: Wide in the middle, narrow at top/bottomhourglass / <: Wide at top/bottom, narrow in the middlePreview changes in conical shape without writing to files: aesthetic-imports --shape asc --dry-run script.py
-s asc or -s L)Sorts imports cleanly from shortest line length to longest.
Before:
from my_custom_package.utils.helpers import long_function_name
import os
from typing import List, Optional, Dict, Any
import sys
import libcst as cst
from datetime import datetime
After:
import os
import sys
import libcst as cst
from datetime import datetime
from typing import List, Optional, Dict, Any
from my_custom_package.utils.helpers import long_function_name
pypistats · 34 observations shown. Missing days are unknown. Source category: overall: without mirrors.
| Date / source period | Value | Observed at |
|---|---|---|
| 2026-10-20 – 2026-10-20 | 1 | 2026-10-21T10:42:02.9606451Z |
| 2026-10-17 – 2026-10-17 | 5 | 2026-10-21T10:42:02.9606451Z |
| 2026-10-16 – 2026-10-16 | 3 | 2026-10-21T10:42:02.9606451Z |
| 2026-10-15 – 2026-10-15 | 1 | 2026-10-21T10:42:02.9606451Z |
| 2026-10-13 – 2026-10-13 | 1 | 2026-10-21T10:42:02.9606451Z |
| 2026-10-10 – 2026-10-10 | 1 | 2026-10-21T10:42:02.9606451Z |
| 2026-10-09 – 2026-10-09 | 1 | 2026-10-21T10:42:02.9606451Z |
| 2026-10-08 – 2026-10-08 | 1 | 2026-10-21T10:42:02.9606451Z |
| 2026-10-06 – 2026-10-06 | 4 | 2026-10-21T10:42:02.9606451Z |
| 2026-10-05 – 2026-10-05 | 3 | 2026-10-21T10:42:02.9606451Z |
| 2026-10-02 – 2026-10-02 | 1 | 2026-10-21T10:42:02.9606451Z |
| 2026-10-01 – 2026-10-01 | 2 | 2026-10-21T10:42:02.9606451Z |
| 2026-09-30 – 2026-09-30 | 6 | 2026-10-21T10:42:02.9606451Z |
| 2026-09-29 – 2026-09-29 | 2 | 2026-10-21T10:42:02.9606451Z |
| 2026-09-28 – 2026-09-28 | 1 | 2026-10-21T10:42:02.9606451Z |
| 2026-09-27 – 2026-09-27 | 1 | 2026-10-21T10:42:02.9606451Z |
| 2026-09-26 – 2026-09-26 | 1 | 2026-10-21T10:42:02.9606451Z |
| 2026-09-24 – 2026-09-24 | 3 | 2026-10-21T10:42:02.9606451Z |
| 2026-09-23 – 2026-09-23 | 1 | 2026-10-21T10:42:02.9606451Z |
| 2026-09-22 – 2026-09-22 | 2 | 2026-10-21T10:42:02.9606451Z |
| 2026-09-21 – 2026-09-21 | 1 | 2026-10-21T10:42:02.9606451Z |
| 2026-09-20 – 2026-09-20 | 3 | 2026-10-21T10:42:02.9606451Z |
| 2026-09-19 – 2026-09-19 | 2 | 2026-10-21T10:42:02.9606451Z |
| 2026-09-18 – 2026-09-18 | 2 | 2026-10-21T10:42:02.9606451Z |
| 2026-09-17 – 2026-09-17 | 1 | 2026-10-21T10:42:02.9606451Z |
| 2026-09-16 – 2026-09-16 | 2 | 2026-10-21T10:42:02.9606451Z |
| 2026-09-14 – 2026-09-14 | 6 | 2026-10-21T10:42:02.9606451Z |
| 2026-09-12 – 2026-09-12 | 2 | 2026-10-21T10:42:02.9606451Z |
| 2026-09-11 – 2026-09-11 | 1 | 2026-10-21T10:42:02.9606451Z |
| 2026-09-10 – 2026-09-10 | 1 | 2026-10-21T10:42:02.9606451Z |
| 2026-09-09 – 2026-09-09 | 5 | 2026-10-21T10:42:02.9606451Z |
| 2026-09-08 – 2026-09-08 | 4 | 2026-10-21T10:42:02.9606451Z |
| 2026-09-07 – 2026-09-07 | 14 | 2026-10-21T10:42:02.9606451Z |
| 2026-09-06 – 2026-09-06 | 90 | 2026-10-21T10:42:02.9606451Z |
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.1.1 | 6 Sept 2026 | 1 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 20:52 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:2854757172c4fd913e381b5512b3a4faa98632fdd591ab2e5e97d6617b06b506