The PNU Project
Project description
PNU, as in PNU is Not Unix, is a challenge project and a learning exercise to reimplement UNIX command-line tools in Python, forming a kind of "pytnix" portable user-land utilities collection.
It's meant to be pronounced "Pneu" (tyre in French), a "pun" which seems appropriate as it's clearly another reinvention of the wheel, longtime after the GNU project :-)
Objectives:
- Originally intended as a learning exercise in Python/Unix for my son, but open to anyone.
- Passing on some Unix culture & lore to a generation of new hackers (in the original and noble meaning of the word).
- Having some handy portable Unix tools, for example for Windows (though there are plenty of other solutions for that).
- Ultimately to have most of the relevant standard utilities included in POSIX.1, many utilities sitting under /bin and /usr/bin in a modern BSD/GNU Linux system, some usual non-standard utilities, as well as some utilities of our own.
Project status:
- The project is ongoing. You can install what's available from our package with the following console command:
pip install PNU
or you can install PNU plus a selection of additional third-parties tools with this command:
pip install pytnix
- This page is both for the challenge description and for referencing unix tools rewrites made by contributors.
- To contribute you can simply create:
- your own Github repositories and link them to the project by using the pnu-project topic
- your own PyPi packages and link them to the project by using the pnu-project keyword (but please don't use the "pnu-" package prefix for your own entries)
How to contribute:
- As a player:
- Decide on a Unix command to reimplement in Python 3.x (see list below for suggestions or our Master / targets list for full details).
- Read the tutorials
- Read the guidelines for contribution (among other documentation manuals)
- Come discuss it with us on the forums
- As an organizer:
Suggested tasks and progression:
The following, (A)D&D inspired, level structure is proposed for gamification. We suggest level bosses in order to complete a level (but no Demogorgon here, we are not in Stranger Things :-)) and associated :trophy: trophies for fun :-)
We're also thinking about offering Habitica's quests for further gamification.
The following classification of commands is still in progress.
Basic levels
Level 1 sub projects
Handling return codes, printing to the terminal:
Level 2 sub projects
Basic string handling:
- basename, dirname => without options for a start
- caesar, rot13
Basic math or data structures, school level:
- factor, primes => suggested level boss. Trophy: :school_satchel:
Level 3 sub projects
Basic filters, command line & environment processing, file operations:
- basename => with full options
- cat => POSIX version only for a start
- head
- expand, unexpand
- fold
- wc => suggested level boss. Trophy: :toilet:
Level 4 sub projects
Basic text processing utilities, multiple files or many options:
Level 5 sub projects
Basic utilities using more complex parsing:
Intermediate levels
System utilities (implying minimum Unix system knowledge). Regular expressions, text parsing. CSV, JSON, XML, HTML data handling.
Level 6 sub projects
Basic system utilities.
Level 7 sub projects
Basic system utilities, possibly recursive ones:
Level 8 sub projects
Level 9 sub projects
Level 10 sub projects
Advanced levels
Full screen text applications, windowed applications, office documents manipulation, image manipulation, web scraping, network applications, automation.
Interactive full screen applications:
Advanced system utilities, data compression:
Level 11 sub projects
Level 12 sub projects
Level 13 sub projects
Level 14 sub projects
Level 15 sub projects
Master levels
Languages (interpreters, compilers), database management systems, network protocols:
Level 16 sub projects
Level 17 sub projects
Level 18 sub projects
Level 19 sub projects
Level 20 sub projects
- sh => Suggested level boss. Trophy: :shell:
Immortal levels
It's a long way to the top if you wanna get your entry in the "Deities & Demigods" of hackers, but here are some examples to inspire you from the Unix & open source pantheon (note: having a :neckbeard: beard is not mandatory)
However, all of this is beyond the scope of the project and probably not a good idea to implement in Python :-)
Demigods level transcending projects
Full operating system kernels & device drivers:
Deities level transcending projects
Making your own hardware platform and all the software to run it.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file PNU-2022.3.17.tar.gz
.
File metadata
- Download URL: PNU-2022.3.17.tar.gz
- Upload date:
- Size: 10.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3903074c9accb596d7dabc175827c004d53abeabdf28c5caaf6246f718659ee3 |
|
MD5 | dafe3d5ea2336a4deaaad0806d2b037e |
|
BLAKE2b-256 | 0bb895b76c4c741b1cc5e0e5ca6f6cab73dcfd5fc5dc11d46e2689f86b5a4e1d |
File details
Details for the file PNU-2022.3.17-py3-none-any.whl
.
File metadata
- Download URL: PNU-2022.3.17-py3-none-any.whl
- Upload date:
- Size: 14.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ce207a5c7f5b41ca0baff47f4e0bf30e523a4ec87dabfbce69f772fbe0a2c5cd |
|
MD5 | 95a524d743d13106dfdc55a3738073c3 |
|
BLAKE2b-256 | 728c49ab7bbb7daee24984f10f51ea68ca02a7b91fea9f4b2c53ace8fe794d5a |