All Projects → pfalcon → Pycopy Lib

pfalcon / Pycopy Lib

Licence: other
Standard library of the Pycopy project, minimalist and light-weight Python language implementation

Programming Languages

python
139335 projects - #7 most used programming language
micropython
64 projects

Projects that are alternatives of or similar to Pycopy Lib

Concise.css
A CSS framework that's lightweight and easy-to-use. Give up the bloat. Stop tripping over your classes. Be Concise.
Stars: ✭ 941 (+612.88%)
Mutual labels:  minimalist
Zeva
a modern and minimalist ui framework for building responsive and modern frontends
Stars: ✭ 57 (-56.82%)
Mutual labels:  minimalist
Hugo Coder
A minimalist blog theme for hugo.
Stars: ✭ 1,374 (+940.91%)
Mutual labels:  minimalist
Gridly
⚡️ The minimal (~100-170 bytes) grid system for modern browsers.
Stars: ✭ 962 (+628.79%)
Mutual labels:  minimalist
Dropin Minimal Css
Drop-in switcher for previewing minimal CSS frameworks
Stars: ✭ 1,061 (+703.79%)
Mutual labels:  minimalist
Observable
minimalist event system for Python
Stars: ✭ 66 (-50%)
Mutual labels:  minimalist
Minifuture
A monadic Future design pattern implementation in Swift
Stars: ✭ 16 (-87.88%)
Mutual labels:  minimalist
Gsimplecal
Simple and lightweight GTK calendar (BSD license)
Stars: ✭ 121 (-8.33%)
Mutual labels:  minimalist
Play stdin.sh
A set of lightweight scripts to stream audio between two *nix machines. Perfect for use with a Raspberry Pi
Stars: ✭ 56 (-57.58%)
Mutual labels:  minimalist
Milligram
A minimalist CSS framework.
Stars: ✭ 9,568 (+7148.48%)
Mutual labels:  minimalist
Utemplate
Micro template engine in Python with low memory usage, designed for Pycopy, a minimalist Python dialect, but also compatible with other Pythons.
Stars: ✭ 34 (-74.24%)
Mutual labels:  minimalist
Minion Ci
minimalist, decentralized, flexible Continuous Integration Server for hackers.
Stars: ✭ 44 (-66.67%)
Mutual labels:  minimalist
Simplicity
A free, flexible, superfast and easily customizable Jekyll Theme with no Javascript but beautiful typography.
Stars: ✭ 67 (-49.24%)
Mutual labels:  minimalist
Mvfsillva
My personal website
Stars: ✭ 13 (-90.15%)
Mutual labels:  minimalist
Oblate
Custom theme for my personal website and blog.
Stars: ✭ 117 (-11.36%)
Mutual labels:  minimalist
Brevifolia Gridsome Forestry
A simple starter blog built with Gridsome & Forestry
Stars: ✭ 22 (-83.33%)
Mutual labels:  minimalist
Jekyll Minibundle
A minimalistic asset bundling plugin for Jekyll
Stars: ✭ 65 (-50.76%)
Mutual labels:  minimalist
Jovial
jovial - a jovial theme for zsh
Stars: ✭ 124 (-6.06%)
Mutual labels:  minimalist
Bashed On A Feeling
⚡️ fast and minimalistic git prompt written in bash
Stars: ✭ 120 (-9.09%)
Mutual labels:  minimalist
Mpvc
An mpc-like control interface for mpv.
Stars: ✭ 94 (-28.79%)
Mutual labels:  minimalist

pycopy-lib

pycopy-lib is a project to develop a non-monolithic standard library for the Pycopy project (https://github.com/pfalcon/pycopy), while where possible, staying compatible with other variants and implementations of Python. The goals of the project are:

  • As the main goal, develop Pycopy standard library as close as possible matching that of CPython. It thus necessarily targets "Unix" port of Pycopy.
  • As a side goal, develop individual modules usable/useful on baremetal ports of Pycopy. This is oftentimes conflicts with the first goal (something as close as possible matching CPython functionality is just too big to run on low-memory systems), and necessitates creation of additional modules, or special "micro" (aka "u") versions of them.

Each module or package of pycopy-lib is available as a separate distribution package from PyPI. Each module comes from one of the following sources (and thus each module has its own licensing terms):

  • written from scratch specifically for Pycopy
  • ported from CPython
  • ported from some other Python implementation, e.g. PyPy
  • some modules actually aren't implemented yet and are dummy
  • some modules are extensions and are not part of CPython's standard library

As mentioned above, the main target of pycopy-lib is the "Unix" port of Pycopy.Actual system requirements vary per module. Modules not related to I/O may also work without problems on bare-metal ports, not just on "Unix" port (e.g. esp8266).

Usage

pycopy-lib packages are published on PyPI (Python Package Index), the standard Python community package repository: http://pypi.python.org/ . On PyPI, you can search for Pycopy related packages and read additional package information. All pycopy-lib package names are prefixed with "pycopy-".

Browse available packages via this URL. (Note: this may also include 3rd-party modules which are not part of pycopy-lib.)

To install packages from PyPI for usage on your local system, use the upip tool, which is Pycopy's native package manager, similar to pip, which is used to install packages for CPython. upip is bundled with Pycopy "Unix" port (i.e. if you build "Unix" port, you automatically have upip tool). Following examples assume that pycopy binary is available on your PATH:

$ pycopy -m upip install pycopy-pystone
...
$ pycopy
>>> import pystone
>>> pystone.main()
Pystone(1.2) time for 50000 passes = 0.534
This machine benchmarks at 93633 pystones/second

Run pycopy -m upip --help for more information about upip.

CPython backports

While pycopy-lib focuses on Pycopy, sometimes it may be beneficial to run Pycopy code using CPython, e.g. to use code coverage, debugging, etc. tools available for it. To facilitate such usage, pycopy-lib also provides reimplementations ("backports") of Pycopy modules, which run on CPython. This first of all applies to the builtin Pycopy "u" modules, but as time goes on, backports of pycopy-lib's own modules can be provided. Backport modules are in the directories named cpython-* of this repository. On PyPI, these named pycopy-cpython-*.

These modules should be installed with CPython's pip3 tool. Example session:

$ pip3 install --user pycopy-cpython-uhashlib
...
$ python3
...
>>> import uhashlib
>>> uhashlib.sha1(b"test").hexdigest()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'sha1' object has no attribute 'hexdigest'
# Pycopy's uhashlib doesn't have hexdigest(), use ubinascii.hexlify(.digest())
>>> uhashlib.sha1(b"test").digest()
b'\xa9J\x8f\xe5\xcc\xb1\x9b\xa6\x1cL\x08s\xd3\x91\xe9\x87\x98/\xbb\xd3'

Development

To install modules during development, use make install. By default, all available packages will be installed. To install a specific module, add the MOD=<module> parameter to the end of the make install command.

Contributing

pycopy-lib is a community project and can be implemented "fully" only by contributions from interested parties. The contributions are expected to adhere to Contribution Guidelines.

Credits

pycopy-lib is developed and maintained by Paul Sokolovsky (@pfalcon) with the help of Pycopy community.

List of modules specific to pycopy-lib

While pycopy-lib's primary way is to provide implementation of Python standard library, pycopy-lib goes further and hosts some extension modules which are deemed to be worth being a part of "Pycopy standard library". This section lists them to easy discovery:

  • byteslib - similar to string, function variants of bytes methods.
  • uaiohttpclient - HTTP client for uasyncio
  • uargparse - small subset of argparse module
  • uasyncio - asynchronous scheduling and I/O, roughly based on CPython's asyncio
  • uasyncio.core - just a scheduler part of uasyncio
  • uasyncio.queues - subset of CPython's asyncio.Queue
  • uasyncio.synchro - synchronization primitives for uasyncio (subset of asyncio's)
  • uasyncio.udp - UDP support for uasyncio
  • ucontextlib - subset of contextlib functionality
  • uctypelib - higher-level helpers to define structure for the builtin uctype module
  • uctypeslib2 - pretty printing support for uctypes structure definitions
  • ucurses - small subset of curses module
  • udnspkt - DNS packet handling (Sans I/O approach)
  • ulogging - small subset of logging module
  • umqtt.robust
  • umqtt.simple
  • uos2 - minimalist subset of the "os" module
  • upip - Pycopy package manager, modelled after "pip" tool
  • upysh - minimalistic filesystem shell using Python syntax
  • urequests - subset of "requests" module
  • urlib.urequest - small subset of urlib.request module
  • utarfile - small subset of tarfile module
  • utokenize - simple tokenizer for Python source
  • uurequests - very small subset of "requests" module
  • uwwwauth - HTTP Basic/Digest authentication algorithms
  • xmltok2 - small/simple XML tokenizer
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].