PNU


NamePNU JSON
Version 2024.3.2 PyPI version JSON
download
home_pagehttps://github.com/HubTou/PNU/
SummaryThe PNU Project
upload_time2024-03-01 23:08:58
maintainer
docs_urlNone
authorHubert Tournier
requires_python>=3.8
licenseBSD 3-Clause License
keywords pnu-project
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # ![PNU logo](https://github.com/HubTou/PNU/blob/main/_images/pnu-logo-and-title-small.png)
PNU, as in [PNU is Not Unix](http://www.catb.org/jargon/html/R/recursive-acronym.html), is a challenge project and a learning exercise to reimplement [UNIX](https://en.wikipedia.org/wiki/Unix) command-line tools in [Python](https://www.python.org/), forming a kind of "[pytnix](https://github.com/HubTou/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](http://www.catb.org/jargon/html/W/wheel.html), longtime after the [GNU project](https://www.gnu.org/gnu/thegnuproject.en.html) :-)

## Objectives:
* Originally intended as a [learning exercise](https://github.com/topics/learning-exercise) in Python/Unix for my son, but open to anyone.
* Passing on some Unix culture & lore to a generation of [new hackers](http://www.catb.org/~esr/jargon/) (in the [original and noble meaning of the word](http://www.catb.org/~esr/jargon/html/H/hacker.html)).
* Having some handy portable Unix tools, for example for Windows (though there are [plenty of other solutions](https://github.com/HubTou/PNU/wiki/Wilderness-Survival-Guide) for that).
* Ultimately to have most of the relevant [standard utilities](https://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.html) included in [POSIX.1](https://pubs.opengroup.org/onlinepubs/9699919799/nframe.html), many utilities sitting under /bin and /usr/bin in a modern [BSD](https://en.wikipedia.org/wiki/Berkeley_Software_Distribution)/[GNU Linux](https://en.wikipedia.org/wiki/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](https://github.com/HubTou/PNU/releases/latest) from [our package](https://pypi.org/project/PNU/) with the following console command:
```Shell
pip install PNU
```
or you can install PNU plus a selection of additional third-parties tools with this command:
```Shell
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](https://github.com/topics/pnu-project) topic
  * your own [PyPi](https://pypi.org/) packages and link them to the project by using the [pnu-project](https://pypi.org/search/?q=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](https://github.com/HubTou/PNU/wiki/The-Monster-Manual) for full details).
  * [Read the tutorials](https://github.com/HubTou/PNU/blob/main/_demos/README.md)
  * [Read the guidelines for contribution](https://github.com/HubTou/PNU/wiki/The-Player's-Handbook) (among other [documentation manuals](https://github.com/HubTou/PNU/wiki))
  * [Come discuss it with us on the forums](https://github.com/HubTou/PNU/discussions)
* As an organizer:
  * [Read the guidelines for organization](https://github.com/HubTou/PNU/wiki/Dungeon-Master's-Guide)

## Suggested tasks and progression:
The following, [(A)D&D](https://en.wikipedia.org/wiki/Dungeons_%26_Dragons) inspired, [level structure](https://github.com/HubTou/PNU/discussions/2) is proposed for [gamification](https://en.wikipedia.org/wiki/Gamification).
We suggest level bosses in order to complete a level (but no [Demogorgon](https://en.wikipedia.org/wiki/Demogorgon#Dungeons_&_Dragons) here, we are not in [Stranger Things](https://en.wikipedia.org/wiki/Stranger_Things) :-)) and associated :trophy: trophies for fun :-)

We're also thinking about offering [Habitica](https://habitica.com/)'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:
* [true](https://www.freebsd.org/cgi/man.cgi?query=true), [false](https://www.freebsd.org/cgi/man.cgi?query=false)
* [yes](https://www.freebsd.org/cgi/man.cgi?query=yes)
* [echo](https://www.freebsd.org/cgi/man.cgi?query=echo) => suggested level boss. Trophy: :baby_bottle: (hint: option can be [hardcoded](http://www.catb.org/jargon/html/H/hardcoded.html))

### Level 2 sub projects
Basic [string handling](https://docs.python.org/3/library/string.html):
* [basename, dirname](https://www.freebsd.org/cgi/man.cgi?query=basename) => without options for a start
* [caesar, rot13](https://www.freebsd.org/cgi/man.cgi?query=caesar)

Basic math or data structures, school level:
* [factor, primes](https://www.freebsd.org/cgi/man.cgi?query=factor) => suggested level boss. Trophy: :school_satchel:

### Level 3 sub projects
Basic [filters](https://github.com/HubTou/PNU/tree/main/_demos/gorgon), command line & [environment](https://www.freebsd.org/cgi/man.cgi?query=environ) processing, file operations:
* [basename](https://www.freebsd.org/cgi/man.cgi?query=basename) => with full options
* [cat](https://www.freebsd.org/cgi/man.cgi?query=cat) => POSIX version only for a start
* [head](https://www.freebsd.org/cgi/man.cgi?query=head)
* [expand, unexpand](https://www.freebsd.org/cgi/man.cgi?query=expand)
* [fold](https://www.freebsd.org/cgi/man.cgi?query=fold)
* [wc](https://www.freebsd.org/cgi/man.cgi?query=wc) => suggested level boss. Trophy: :toilet:

### Level 4 sub projects
Basic text processing utilities, multiple files or many options:
* [cat](https://www.freebsd.org/cgi/man.cgi?query=cat) => with full options
* [nl](https://www.freebsd.org/cgi/man.cgi?query=nl)
* [cmp](https://www.freebsd.org/cgi/man.cgi?query=cmp)
* [comm](https://www.freebsd.org/cgi/man.cgi?query=comm)
* [uniq](https://www.freebsd.org/cgi/man.cgi?query=uniq) => suggested level boss. Trophy: :one:

### Level 5 sub projects
Basic utilities using more complex parsing:
* [expr](https://www.freebsd.org/cgi/man.cgi?query=expr) => just a warmer
* [printf](https://www.freebsd.org/cgi/man.cgi?query=printf)
* [getopts](https://www.freebsd.org/cgi/man.cgi?query=getopts)
* [cut](https://www.freebsd.org/cgi/man.cgi?query=cut) => suggested level boss. Trophy: :scissors:

## Intermediate levels
System utilities (implying minimum Unix system knowledge).
[Regular expressions](https://docs.python.org/3/library/re.html), text parsing.
[CSV](https://docs.python.org/3/library/csv.html), [JSON](https://docs.python.org/3/library/json.html), [XML](https://docs.python.org/3/library/xml.html), [HTML](https://docs.python.org/3/library/html.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:
* [vi](https://www.freebsd.org/cgi/man.cgi?query=vi)

Advanced system utilities, data compression:
* [compress, uncompress](https://www.freebsd.org/cgi/man.cgi?query=compress)
* [zcat](https://www.freebsd.org/cgi/man.cgi?query=zcat)

### 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:

* [awk](https://www.freebsd.org/cgi/man.cgi?query=awk)

### Level 16 sub projects
### Level 17 sub projects
### Level 18 sub projects
### Level 19 sub projects
 
### Level 20 sub projects
* [sh](https://www.freebsd.org/cgi/man.cgi?query=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](http://www.catb.org/jargon/html/D/demigod.html)" of hackers, but here are some examples to inspire you from the [Unix & open source pantheon](https://www.facesofopensource.com/unix/) (note: having a :neckbeard: [beard](http://jargonf.org/wiki/barbu) is not mandatory)

However, all of this is beyond the scope of the project and probably not a good idea to implement in [Python](http://www.catb.org/jargon/html/P/Python.html) :-)

### Demigods level transcending projects
Full operating system kernels & device drivers:
* Your own [Minix](https://en.wikipedia.org/wiki/Minix)/[386BSD](https://en.wikipedia.org/wiki/386BSD)/[Linux](http://www.catb.org/jargon/html/L/Linux.html) like operating system with PNU [userland](http://www.catb.org/jargon/html/U/userland.html) utilities :-)

### Deities level transcending projects
Making your own hardware platform and all the software to run it.
* Although not Unix related, :mage_man: [The Woz](https://en.wikipedia.org/wiki/Steve_Wozniak) springs to mind here and his excellent autobiography, [iWoz](https://en.wikipedia.org/wiki/IWoz), is highly recommended for a good glimpse into a true [hacker](http://www.catb.org/jargon/html/H/hacker.html)'s mind.


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/HubTou/PNU/",
    "name": "PNU",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "",
    "keywords": "pnu-project",
    "author": "Hubert Tournier",
    "author_email": "hubert.tournier@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/5e/31/2f3eb43a1064ace0e88f05055e3d4c06757465d62196ca58f43e89052c04/PNU-2024.3.2.tar.gz",
    "platform": null,
    "description": "# ![PNU logo](https://github.com/HubTou/PNU/blob/main/_images/pnu-logo-and-title-small.png)\nPNU, as in [PNU is Not Unix](http://www.catb.org/jargon/html/R/recursive-acronym.html), is a challenge project and a learning exercise to reimplement [UNIX](https://en.wikipedia.org/wiki/Unix) command-line tools in [Python](https://www.python.org/), forming a kind of \"[pytnix](https://github.com/HubTou/pytnix)\" portable user-land utilities collection.\n\nIt's meant to be pronounced \"Pneu\" (tyre in French), a \"pun\" which seems appropriate as it's clearly another reinvention of the [wheel](http://www.catb.org/jargon/html/W/wheel.html), longtime after the [GNU project](https://www.gnu.org/gnu/thegnuproject.en.html) :-)\n\n## Objectives:\n* Originally intended as a [learning exercise](https://github.com/topics/learning-exercise) in Python/Unix for my son, but open to anyone.\n* Passing on some Unix culture & lore to a generation of [new hackers](http://www.catb.org/~esr/jargon/) (in the [original and noble meaning of the word](http://www.catb.org/~esr/jargon/html/H/hacker.html)).\n* Having some handy portable Unix tools, for example for Windows (though there are [plenty of other solutions](https://github.com/HubTou/PNU/wiki/Wilderness-Survival-Guide) for that).\n* Ultimately to have most of the relevant [standard utilities](https://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.html) included in [POSIX.1](https://pubs.opengroup.org/onlinepubs/9699919799/nframe.html), many utilities sitting under /bin and /usr/bin in a modern [BSD](https://en.wikipedia.org/wiki/Berkeley_Software_Distribution)/[GNU Linux](https://en.wikipedia.org/wiki/Linux) system, some usual non-standard utilities, as well as some utilities of our own.\n\n## Project status:\n* The project is ongoing. You can install [what's available](https://github.com/HubTou/PNU/releases/latest) from [our package](https://pypi.org/project/PNU/) with the following console command:\n```Shell\npip install PNU\n```\nor you can install PNU plus a selection of additional third-parties tools with this command:\n```Shell\npip install pytnix\n```\n* This page is both for the challenge description and for referencing unix tools rewrites made by contributors.\n* To contribute you can simply create:\n  * your own Github repositories and link them to the project by using the [pnu-project](https://github.com/topics/pnu-project) topic\n  * your own [PyPi](https://pypi.org/) packages and link them to the project by using the [pnu-project](https://pypi.org/search/?q=pnu-project) keyword (but please don't use the \"pnu-\" package prefix for your own entries)\n\n## How to contribute:\n* As a player:\n  * Decide on a Unix command to reimplement in Python 3.x (see list below for suggestions or our [Master / targets list](https://github.com/HubTou/PNU/wiki/The-Monster-Manual) for full details).\n  * [Read the tutorials](https://github.com/HubTou/PNU/blob/main/_demos/README.md)\n  * [Read the guidelines for contribution](https://github.com/HubTou/PNU/wiki/The-Player's-Handbook) (among other [documentation manuals](https://github.com/HubTou/PNU/wiki))\n  * [Come discuss it with us on the forums](https://github.com/HubTou/PNU/discussions)\n* As an organizer:\n  * [Read the guidelines for organization](https://github.com/HubTou/PNU/wiki/Dungeon-Master's-Guide)\n\n## Suggested tasks and progression:\nThe following, [(A)D&D](https://en.wikipedia.org/wiki/Dungeons_%26_Dragons) inspired, [level structure](https://github.com/HubTou/PNU/discussions/2) is proposed for [gamification](https://en.wikipedia.org/wiki/Gamification).\nWe suggest level bosses in order to complete a level (but no [Demogorgon](https://en.wikipedia.org/wiki/Demogorgon#Dungeons_&_Dragons) here, we are not in [Stranger Things](https://en.wikipedia.org/wiki/Stranger_Things) :-)) and associated :trophy: trophies for fun :-)\n\nWe're also thinking about offering [Habitica](https://habitica.com/)'s quests for further gamification.\n\n`The following classification of commands is still in progress.`\n\n## Basic levels\n### Level 1 sub projects\nHandling return codes, printing to the terminal:\n* [true](https://www.freebsd.org/cgi/man.cgi?query=true), [false](https://www.freebsd.org/cgi/man.cgi?query=false)\n* [yes](https://www.freebsd.org/cgi/man.cgi?query=yes)\n* [echo](https://www.freebsd.org/cgi/man.cgi?query=echo) => suggested level boss. Trophy: :baby_bottle: (hint: option can be [hardcoded](http://www.catb.org/jargon/html/H/hardcoded.html))\n\n### Level 2 sub projects\nBasic [string handling](https://docs.python.org/3/library/string.html):\n* [basename, dirname](https://www.freebsd.org/cgi/man.cgi?query=basename) => without options for a start\n* [caesar, rot13](https://www.freebsd.org/cgi/man.cgi?query=caesar)\n\nBasic math or data structures, school level:\n* [factor, primes](https://www.freebsd.org/cgi/man.cgi?query=factor) => suggested level boss. Trophy: :school_satchel:\n\n### Level 3 sub projects\nBasic [filters](https://github.com/HubTou/PNU/tree/main/_demos/gorgon), command line & [environment](https://www.freebsd.org/cgi/man.cgi?query=environ) processing, file operations:\n* [basename](https://www.freebsd.org/cgi/man.cgi?query=basename) => with full options\n* [cat](https://www.freebsd.org/cgi/man.cgi?query=cat) => POSIX version only for a start\n* [head](https://www.freebsd.org/cgi/man.cgi?query=head)\n* [expand, unexpand](https://www.freebsd.org/cgi/man.cgi?query=expand)\n* [fold](https://www.freebsd.org/cgi/man.cgi?query=fold)\n* [wc](https://www.freebsd.org/cgi/man.cgi?query=wc) => suggested level boss. Trophy: :toilet:\n\n### Level 4 sub projects\nBasic text processing utilities, multiple files or many options:\n* [cat](https://www.freebsd.org/cgi/man.cgi?query=cat) => with full options\n* [nl](https://www.freebsd.org/cgi/man.cgi?query=nl)\n* [cmp](https://www.freebsd.org/cgi/man.cgi?query=cmp)\n* [comm](https://www.freebsd.org/cgi/man.cgi?query=comm)\n* [uniq](https://www.freebsd.org/cgi/man.cgi?query=uniq) => suggested level boss. Trophy: :one:\n\n### Level 5 sub projects\nBasic utilities using more complex parsing:\n* [expr](https://www.freebsd.org/cgi/man.cgi?query=expr) => just a warmer\n* [printf](https://www.freebsd.org/cgi/man.cgi?query=printf)\n* [getopts](https://www.freebsd.org/cgi/man.cgi?query=getopts)\n* [cut](https://www.freebsd.org/cgi/man.cgi?query=cut) => suggested level boss. Trophy: :scissors:\n\n## Intermediate levels\nSystem utilities (implying minimum Unix system knowledge).\n[Regular expressions](https://docs.python.org/3/library/re.html), text parsing.\n[CSV](https://docs.python.org/3/library/csv.html), [JSON](https://docs.python.org/3/library/json.html), [XML](https://docs.python.org/3/library/xml.html), [HTML](https://docs.python.org/3/library/html.html) data handling.\n\n### Level 6 sub projects\nBasic system utilities.\n\n### Level 7 sub projects\nBasic system utilities, possibly recursive ones:\n\n### Level 8 sub projects\n### Level 9 sub projects\n### Level 10 sub projects\n\n## Advanced levels\nFull screen text applications, windowed applications, office documents manipulation, image manipulation, web scraping, network applications, automation.\n\nInteractive full screen applications:\n* [vi](https://www.freebsd.org/cgi/man.cgi?query=vi)\n\nAdvanced system utilities, data compression:\n* [compress, uncompress](https://www.freebsd.org/cgi/man.cgi?query=compress)\n* [zcat](https://www.freebsd.org/cgi/man.cgi?query=zcat)\n\n### Level 11 sub projects\n### Level 12 sub projects\n### Level 13 sub projects\n### Level 14 sub projects\n### Level 15 sub projects\n\n## Master levels\nLanguages (interpreters, compilers), database management systems, network protocols:\n\n* [awk](https://www.freebsd.org/cgi/man.cgi?query=awk)\n\n### Level 16 sub projects\n### Level 17 sub projects\n### Level 18 sub projects\n### Level 19 sub projects\n \n### Level 20 sub projects\n* [sh](https://www.freebsd.org/cgi/man.cgi?query=sh) => Suggested level boss. Trophy: :shell:\n\n## Immortal levels\nIt's a long way to the top if you wanna get your entry in the \"Deities & [Demigods](http://www.catb.org/jargon/html/D/demigod.html)\" of hackers, but here are some examples to inspire you from the [Unix & open source pantheon](https://www.facesofopensource.com/unix/) (note: having a :neckbeard: [beard](http://jargonf.org/wiki/barbu) is not mandatory)\n\nHowever, all of this is beyond the scope of the project and probably not a good idea to implement in [Python](http://www.catb.org/jargon/html/P/Python.html) :-)\n\n### Demigods level transcending projects\nFull operating system kernels & device drivers:\n* Your own [Minix](https://en.wikipedia.org/wiki/Minix)/[386BSD](https://en.wikipedia.org/wiki/386BSD)/[Linux](http://www.catb.org/jargon/html/L/Linux.html) like operating system with PNU [userland](http://www.catb.org/jargon/html/U/userland.html) utilities :-)\n\n### Deities level transcending projects\nMaking your own hardware platform and all the software to run it.\n* Although not Unix related, :mage_man: [The Woz](https://en.wikipedia.org/wiki/Steve_Wozniak) springs to mind here and his excellent autobiography, [iWoz](https://en.wikipedia.org/wiki/IWoz), is highly recommended for a good glimpse into a true [hacker](http://www.catb.org/jargon/html/H/hacker.html)'s mind.\n\n",
    "bugtrack_url": null,
    "license": "BSD 3-Clause License",
    "summary": "The PNU Project",
    "version": "2024.3.2",
    "project_urls": {
        "Bug Tracker": "https://github.com/HubTou/PNU/issues",
        "Homepage": "https://github.com/HubTou/PNU/"
    },
    "split_keywords": [
        "pnu-project"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7274690ac902ca496f525397f522c381c1b15ca4aa9d6b629e52825f4b87f225",
                "md5": "6661217405614d0ffa759cf8f91ed924",
                "sha256": "c71afdf1cdb2267131d8c70ed45b06a27c65be0b1d73b2fa0acff076c1e362d1"
            },
            "downloads": -1,
            "filename": "PNU-2024.3.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "6661217405614d0ffa759cf8f91ed924",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 14496,
            "upload_time": "2024-03-01T23:08:56",
            "upload_time_iso_8601": "2024-03-01T23:08:56.255853Z",
            "url": "https://files.pythonhosted.org/packages/72/74/690ac902ca496f525397f522c381c1b15ca4aa9d6b629e52825f4b87f225/PNU-2024.3.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5e312f3eb43a1064ace0e88f05055e3d4c06757465d62196ca58f43e89052c04",
                "md5": "3a3da0385da044096b5a62cd222626f4",
                "sha256": "b26ca7394a7714eb6c41c52227f296b4df0cf6fcd536ca0092786db043f1ebe0"
            },
            "downloads": -1,
            "filename": "PNU-2024.3.2.tar.gz",
            "has_sig": false,
            "md5_digest": "3a3da0385da044096b5a62cd222626f4",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 10663,
            "upload_time": "2024-03-01T23:08:58",
            "upload_time_iso_8601": "2024-03-01T23:08:58.012285Z",
            "url": "https://files.pythonhosted.org/packages/5e/31/2f3eb43a1064ace0e88f05055e3d4c06757465d62196ca58f43e89052c04/PNU-2024.3.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-03-01 23:08:58",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "HubTou",
    "github_project": "PNU",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "pnu"
}
        
Elapsed time: 3.31510s