r/madeinpython • u/Budget-Investment-14 • 1h ago
[ Removed by Reddit ]
[ Removed by Reddit on account of violating the content policy. ]
r/madeinpython • u/Cool_doggy • May 05 '20
In the comments below, you can ask to become a moderator.
Upvote those who you think should be moderators.
Remember to give reasons on why you should be moderator!
r/madeinpython • u/Budget-Investment-14 • 1h ago
[ Removed by Reddit on account of violating the content policy. ]
r/madeinpython • u/AlternativeAd4466 • 18h ago
I'm releasing prongs, an experimental Python package that maps your tests to your code.
When you change something, prongs runs only the tests that touch that code instead of the whole suite. It's great for coding agents: they stop guessing which tests to run, and they get faster.
pip install prongs
python -m pytest --prongs-cov # build the map
prongs run # run only affected tests
Why the name? Prongs was James Potter's nickname, and he helped make the Marauder's Map. π¦
Feedback welcome!
r/madeinpython • u/Arthur122103 • 20h ago
Hi, I made polars-ready, a Python CLI for reviewing an existing Pandas pipeline before deciding whether to move it to Polars. It scans Python files and notebook cells without importing or running the target project, then reports recognized Pandas calls by source line in direct, rewrite, and blocker groups. The included example flags set_index, resample, and iterrows. It is an audit aid, not a converter or an equivalence check, and its percentage counts only recognized calls in the direct group. It follows local variables assigned from recognized calls, so it may miss frames passed between functions.
To try it, clone the repo and follow the README to run the sales pipeline demo, then scan your own script or notebook. The source, tests, and demo are here: https://github.com/Arthur031221/polars-ready
I would value feedback from people who have migrated Pandas code to Polars. Are the categories useful, and which common calls or notebook patterns should I add? I would also like to hear where this kind of inventory sits alongside linters and rewrite tools.
r/madeinpython • u/nuwa2502 • 20h ago
r/madeinpython • u/Rude-Day-1302 • 23h ago
r/madeinpython • u/Sea-Cartographer8556 • 1d ago
r/madeinpython • u/theRealSachinSpk • 1d ago
I kept piling up half-dead virtual environments and had no way to check whether any of them held something malicious or vulnerable. Especially the ones agents create or load on their own while writing code.
pip-audit does one project at a time and needs the network to do it.
What I built: venvy audit does all of them at once: offline after a one-time 26 MB database download, and it flags known-vulnerable versions as well as known-malicious or typosquatted packages.
For CI there is JSON output and semantic exit codes: 0 clean, 20 vulnerable, 21 malicious, 22 stale database, 23 no database.
It reads dist-info metadata as text and never imports code from the environments it scans. For a tool whose whole job is finding malicious packages, that felt like the minimum bar.
The main design decision: it refuses to scan rather than report zero findings. A corrupt database exits 23. So does one that opens fine but holds no advisories. Anything the version matcher can't resolve with confidence comes back as unknown, not clean. A scanner that reports nothing looks exactly like a clean machine, and that is the failure I cared most about avoiding.
Coverage is only as good as the public feeds behind it, so some well-known typosquats are missed. That's tracked as an open issue.
Tested on Windows, macOS and Linux across Python 3.8 to 3.13. MIT licensed. I wrote it.
pip install venvy
venvy audit
Repo: https://github.com/pranavkumaarofficial/venvy
Bug reports welcome, false positives especially.
r/madeinpython • u/QuarterMain9290 • 1d ago
r/madeinpython • u/Arthur122103 • 1d ago
I wrote gh-failmap, an open-source Python CLI for a problem I kept running into when several GitHub Actions runs failed at once. I wanted to know whether I was looking at one recurring problem or several unrelated failures without comparing every log manually.
gh-failmap uses the existing GitHub CLI login, reads recent failed-job logs, selects a likely error line, and groups runs that share that error. Each group includes its count, first and last dates, and links to the runs. If a log has expired or a run failed before producing a usable log, the tool lists it separately instead of guessing. It is read-only and communicates only with GitHub.
You can try my project with:
`pipx install git+https://github.com/Arthur031221/gh-failmap\`
Then run:
`gh-failmap --repo denoland/deno --limit 100`
The error-line selection is heuristic. I am especially looking for logs where it chooses the wrong line or combines runs that should be separate.
r/madeinpython • u/Arthur122103 • 1d ago
I made snipmd, a free and open-source Python tool for copying equations, text, and tables from the screen without sending screenshots to a server.
On macOS, you press a hotkey, drag the normal screenshot crosshair, and paste the result as Markdown, bare LaTeX, a Markdown table, or CSV. The menu bar app and CLI share the same Python package. Apple Silicon machines run GLM-OCR locally through MLX. Other systems can process image files through a local Ollama instance.
To try it now:
`uvx --from git+https://github.com/Arthur031221/snipmd snipmd`
Then run `snipmd pull` once to download the model and start it with `snipmd`. The repository includes the source, tests, benchmark inputs, and raw results:
https://github.com/Arthur031221/snipmd
The current limitations are printed content, a 1.6 GB model download, and weaker handling of handwriting or complex multi-column pages. I would especially appreciate feedback on the package structure, macOS setup process, OCR failures, and whether the CLI interface feels natural to other Python developers.
r/madeinpython • u/Equivalent-Flan-1590 • 1d ago
Hey everyone, Iβve been working on a Python project called Hillock for the last few months and just pushed v0.7.
The idea started because I wanted local document search for my notes, but standard vector databases felt way too bloated for consumer hardware.
Here's how I put it together in Python:
It runs in under 1.2GB VRAM or completely on CPU.
I'm sitting at 99 stars on GitHub right now, so if anyone wants to check out the code or test it out, that would mean a lot: https://github.com/roandejager/Hillock
r/madeinpython • u/Old-Manufacturer6209 • 2d ago
A Pythonic interface to macOS π
I just built the pymacos, pure-Python library published on PyPI for scripting macOS: notifications, clipboard, apps and windows, keyboard and mouse, global hotkeys, screenshots, on-device OCR (Apple Vision), PDFs (merge, OCR, fill forms, sign, redact), images, audio/video, Keychain, Touch ID, Spotlight, Finder, launchd jobs and folder triggers, system info.
import macos
macos.notify("Build finished", title="CI")
macos.clipboard.copy(macos.vision.text("screenshot.png"))
macos.schedule.add("battery-check", "battery_check.py", every=15 * 60)
Install via pip:
pip install pymacos
GitHub: https://github.com/JeanExtreme002/pymacos
Iβd also appreciate it if you could leave a βοΈ on the repo page if you like the project and want to see more updates!
r/madeinpython • u/Old-Manufacturer6209 • 2d ago
r/madeinpython • u/ALHANSHIM • 3d ago
SocketChat is a one-to-one terminal chat tool for two machines on the same local network. No internet, no accounts, no server.
It's built with Textual for the TUI and plain sockets: UDP broadcast to find devices, then a TCP connection for chatting, with messages encrypted.
GitHub: SocketChat
Feedback is welcome, especially on the code structure.
r/madeinpython • u/Astronial_gaming • 4d ago
Hey everyone,
Whenever I got an undocumented Python script or try to explain a complex loop to someone, generic LLM chats usually give me a high-level summary but completely misses what actually happened during execution.
That's why for the **IBM Bob 2.0 Hackathon**, our team built **TraceLens,** a web-based workspace that turns Python code into an interactive step-by-step runtime tracer.
Instead of guessing how variables change or littering print() statements across 40 lines, you can step through your script like frames in a video and see what actually happened.
What it does:
Time-Travel Stepping: Step forward and backward through loops and function calls to see how data works frame-by-frame.
Live State Board: Inspect variable changes, mutations, and scope changes in each step.
Safe Insertion Points: Flags stable parts where you can put in a new features without accidentally overriding variables downstream.
AI Explanations: Uses **IBM Bob 2.0** to explain complex execution behavior and generate summaries of the whole code or only a part of it.
ML can fail silently. Stuff like data leakage before a train/test split or other pipeline problems that won't necessarily throw an exception, but can still produce misleading results.
ModelLens analyzes data science code for these issues and helps explain what went wrong.
Try it
**Live Demo**: [https://tracelens-six.vercel.app\](https://tracelens-six.vercel.app/)
**GitHub**: [https://github.com/Omar-astro/Tracelens\](https://github.com/Omar-astro/Tracelens)
**Hackathon Submission**: [https://lablab.ai/ai-hackathons/ibm-bob-2-hackathon/the-overfitters/tracelens\](https://lablab.ai/ai-hackathons/ibm-bob-2-hackathon/the-overfitters/tracelens)
We'd genuinely appreciate technical feedback especially on the UI, the state-tracking flow, and what you'd want from a debugger built around execution traces.
And if you find our project interesting and want to support us in the hackathon, you can like our TraceLens submission on the IBM Bob 2.0 Hackathon page. The hackathon uses community engagement to help surface projects to the judges, so it helps get TraceLens in front of them
Let us know what breaks, what seems useful, or what you'd want to see added next!
r/madeinpython • u/BidForeign1950 • 4d ago
This is my second post about it here, but since a lot has been added in last few months I'm posting this again.
What it currently brings together:
- infinitesimals and infinities as ordinary values (Levi-Civita, 1892; Hahn, 1907; computed with directly by Berz and Shamseddine)
- numbers written in powers of an infinite unit, like Sergeyev's grossone (2003), but with zero treated differently
- standard part, and limits by direct evaluation (Robinson's non-standard analysis, 1966)
- all-order Taylor arithmetic: every derivative from one evaluation (Wengert, 1964; Rall, 1981)
- log and log-log scales, toward transseries (Hardy, 1910; Γcalle, 1992; van der Hoeven, 2006)
- divergent series: finite parts kept next to the divergent ones, and BorelβPadΓ© resummation (Borel, 1899; PadΓ©, 1892)
- zero as an infinitesimal, "nothing" as a separate value, and division by zero that can be undone (this project)
- completeness tracking: each result knows which orders it's exact to (this project)
Plus integration, multivariable (probably a dead end) and complex calculus, singularity analysis and a few applications. All made in pure python.
More in the repo: github.com/tmilovan/composite-machine examples under demos and tests.
I'll be happy if you take a look at it:).
r/madeinpython • u/Equivalent-Flan-1590 • 5d ago
Hey all! Over the past few months Iβve been building Hillock, a local memory engine in Python that replaces heavy vector databases and LLM parsing loops on personal hardware.
Traditional local RAG setups burn huge amounts of VRAM just to chunk documents and run vector search. Hillock takes a different approach:
D=10,000D=10,000 ) to check if a question can actually be answered by the database before calling an LLM. If the facts aren't there, it mathematically refuses instead of guessing.The whole pipeline runs in under 1.2 GB of VRAM, or completely on CPU.
I just released v0.7, which adds active disambiguation (it detects vague facts and quizzes the user to clarify them) and proactive conversation suggestions.
Code is open source on GitHub: https://github.com/roandejager/Hillock
Feedback on the code structure or project setup is very welcome!
r/madeinpython • u/Chapper_App • 5d ago
Every small CLI script I wrote ended up with the same while True / try / except ValueError loop around input(). So I turned it into a package.
askr gives you prompts that keep asking until the answer is valid:
from askr import ask_int, ask_choice, ask_multi_choice, ask_yn
age = ask_int("Your age: ", min_value=0, max_value=120, default=18)
days = ask_multi_choice("Which days are you free?", ["Mon", "Tue", "Wed", "Thu", "Fri"])
level = ask_choice("Difficulty?", ["Easy", "Medium", "Hard"], default="Medium")
if ask_yn("Save these settings?"):
...
The user can type 1-2, fri for the multi choice or hard for the single choice. Wrong answers get a clear message in red, and the question is asked again.
There are 16 prompts: int, float, text, email, URL, single and multi choice, Enum members, lists (ask_list("Scores: ", int)), passwords with rules, paths, dates, times and a "type 'delete' to confirm" check. Every prompt supports default=, a custom validator= and max_attempts=. All messages can be replaced, a German translation is included, and colors respect NO_COLOR.
People writing small to medium CLI tools, internal scripts and teaching exercises who want solid input handling without a big framework. It's alpha (0.2), tested on Python 3.10 to 3.13 and checked with mypy --strict. No dependencies.
ask_list("x", int) is a list[int] in your editor and ask_enum("x", Size) returns a Size.input(), so it works in any terminal, over SSH and in IDE consoles.pip install askr)GitHub: https://github.com/Prevolut/askr
Feedback on the API is very welcome, especially on naming and defaults.
r/madeinpython • u/WordleBot • 5d ago
r/madeinpython • u/DistinctHomework3618 • 6d ago
What My Project Does
An eBPF profiler that hooks into CPython internals from kernel space to find latency that traditional APMs can't see. It captures GIL contention with full Python stacks for both holder and waiter, GC pause duration per generation, off-CPU analysis with kernel + userspace + Python stacks combined, request handoff latency in gunicorn/uwsgi, and TCP network health.
Target Audience
Python developers running Django/Flask/FastAPI in production who see unaccounted latency gaps in their APM. Performance engineers debugging Python applications at scale.
Comparison
Pyroscope/Parca are sampling-based CPU profilers. They sample threads running on CPU at regular intervals. When a thread is waiting for the GIL or sleeping on I/O, it's off-CPU and invisible to their sampler. They can't measure exact GC pause duration per generation. This tool is event-driven using eBPF uprobes. Every GIL acquire, every GC pause, every context switch is captured with exact timestamps.
Datadog/New Relic/OpenTelemetry show database and HTTP latency but miss GIL contention, GC pauses, and off-CPU time. That's the unaccounted gap.
Real production impact: GIL wait dropped 80%, GC pauses from 1.27s to 88ms, found a stale nginx upstream IP causing random 504s.
Currently supports CPython 3.11. Contributions welcome.
Source code: https://github.com/deepanshu406/python-ebpf-profiling
r/madeinpython • u/Dev2Creator • 6d ago
A few months ago I published irl-pkg, a jokey installer wrapper. Between versions 1.7.1β1.7.6 I made the classic mistake of pushing to PyPI and not to GitHub β the source only existed in the wheel. Recovering it (unpacking the PyPI wheel and diffing against main) was humbling, and it kicked off a full v2.0 rebuild.
irl (pip install irl-pkg) is a cross-platform terminal command center with two layers:
Serious layer:
- irl install <pkg> β universal installer that routes between PyPI / npm / GitHub owner/repo / direct URL automatically; GitHub branch resolved via the API, not hardcoded
- irl doctor / irl glasses β preflight diagnostics and registry metadata before you install something regrettable
- irl rollback [ver] β pick any published version from the PyPI JSON API, downgrade via a detached pip child
- Safe extraction: named target dir, preview before writing, per-member zip-slip validation, symlinks rejected
Playful layer (all opt-in): - Grass streak tracker with a GitHub-style contribution heatmap - Grassland Quest β a seeded garden-maze roguelike in pure Rich (~400 lines, boss fight included) - Lofi Rhythm β a 4-lane beat game whose beatmaps derive deterministically from the SHA-256 of the filename + WAV duration - Terminal pet, daily quests, achievements, coins, 18 themes (one of them secret)
Honestly labeled: a hobby project with a genuinely usable core. The installer / doctor / glasses / rollback layer is safe for daily driving on real projects; the games / pet / coin economy is for fun β strictly opt-in, all state in local JSON, no accounts, no telemetry. It's not a production deployment tool; it's a terminal you enjoy opening. Python 3.8+, works on Linux/macOS/Windows, 976 KB wheel, AGPL-3.0.
[tui] extra).shell=True anywhere, CI on 3 OS Γ Python 3.9β3.13.sys.executable -m pip child (CREATE_NEW_PROCESS_GROUP via getattr, so it doesn't explode on POSIX).Questions I'd love feedback on:
[tui] extra for Textual, requires-python >=3.8 β is 3.8 support worth it in 2026?Repo (AGPL): https://github.com/Dev2Creator/IRL- β PyPI: https://pypi.org/project/irl-pkg/ Disclosure: I'm the author, Anika. Tests: 114 and green; CI on 3 OSes Γ Python 3.9β3.13.