• Stars
    star
    110
  • Rank 316,770 (Top 7 %)
  • Language
    Python
  • Created over 12 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Python ports of useful syscalls, using asynchronous I/O.

Teena: UNIX in Python

Teena aims to be a collection of ports of UNIX and Linux syscalls to pure Python, with an emphasis on performance and correctness. Windows support is not a primary concern—I’m initially targeting only POSIX-compliant operating systems. The library uses Tornado to do efficient asynchronous I/O.

The first version of this library will contain implementations of tee and splice which operate on files, sockets, and file descriptors. There’s also a Capture class which behaves like StringIO, but it has a fileno() and so can be used where a real file descriptor is needed.

Example

I’ll demonstrate how to capture the result of an HTTP request, whilst efficiently streaming the response to stderr.

Do the necessary imports:

>>> from contextlib import closing
>>> import teena
>>> import os
>>> import sys
>>> import urllib2

Create a teena.Capture() object to capture the output:

>>> capture = teena.Capture()

Open a connection using urllib2.urlopen(). This connection object has an associated file descriptor, so you can pass it directly into tee():

>>> with closing(urllib2.urlopen('http://whatthecommit.com/index.txt')) as conn:
...     teena.tee(conn, (sys.stderr, capture.input))
This really should not take 19 minutes to build.
>>> print repr(capture.getvalue())
'This really should not take 19 minutes to build.\n'

Installation

pip install teena

License

Copyright (C) 2012 Zachary Voase

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

More Repositories

1

humanhash

Human-readable digests.
Python
852
star
2

markdoc

A lightweight Markdown-based wiki system. Current status: abandoned.
Python
347
star
3

jsonpipe

Convert JSON to a UNIX-friendly line-based format.
Python
302
star
4

zmqc

netcat for ØMQ. Small but powerful.
Python
256
star
5

urlobject

Python library for manipulating URLs (and some URIs) in a more natural way.
Python
188
star
6

django-postgres

First-class Postgres feature support for the Django ORM.
Python
184
star
7

dagny

Rails-style Resource-Oriented Architecture for Django.
Python
158
star
8

django-conch

Expose the Django shell as an SSH server.
Python
147
star
9

cssmin

*NO LONGER MAINTAINED*. A Python port of the YUI CSS compression algorithm.
Python
133
star
10

zenqueue

An incredibly simple (but fast) network message queueing system, written in Python.
Python
66
star
11

django-castor

A content-addressable storage backend for Django.
Python
56
star
12

django-qmethod

Easily define methods over collections of Django models.
Python
54
star
13

django-boss

Simpler Django management commands, powered by argparse.
Python
54
star
14

gevent-psycopg2

Obsolete; use https://bitbucket.org/dvarrazzo/psycogreen/ instead.
Python
51
star
15

django-qmixin

A Django app for extending managers and the querysets they produce.
Python
42
star
16

django-exceptional

A Django client for Exceptional (getexceptional.com)
Python
42
star
17

rkquery

jQuery for Riak, in Python.
Python
31
star
18

uptheasset

[OBSOLETE] Double-entry bookkeeping and accounting, powered by RDF.rb and UNIX.
Ruby
30
star
19

slugify

A generic slugifier (currently only for Latin-based scripts).
Python
29
star
20

django-clsview

Yet another class-based view system for Django.
Python
25
star
21

websession

Information on WebSession, a proposed protocol for secure session maintenance on the Web
JavaScript
21
star
22

gevent-threading-comparison

An experiment to compare the performances of gevent and threading.
Python
17
star
23

calabash

Bash-style pipelining for Python generators.
Python
17
star
24

pdiffer

A Python interface to the PerceptualDiff tool.
Python
16
star
25

django-qmanager

Create managers for Django models based on pre-defined queries.
Python
15
star
26

daterange

Python utility like xrange(), but for datetime objects.
Python
13
star
27

python-csiphash

The SipHash-2-4 C reference implementation, CFFI-wrapped for Python
Python
12
star
28

amoebajs

A WebAssembly-based linear constraint solver for JavaScript
JavaScript
12
star
29

gevent-selfpipe

Hack to run blocking calls whilst maintaining gevent-based synchronization.
Python
12
star
30

urecord

A structured record metaclass for Python.
Python
12
star
31

django-zskel-project

Zack’s Skeleton Django Project.
Python
11
star
32

glyphicons-splitter

Produce individual SVGs and PDFs of the Glyphicons.
Python
10
star
33

django-retracer

Store and restore old locations in Django.
Python
10
star
34

zrpc

ZeroMQ-based JSON-RPC in Python.
Python
9
star
35

pathobject

An update of Jason Orendorff’s path.py.
Python
9
star
36

pyhoudini

Houdini bindings for Python (c.f. https://github.com/vmg/houdini)
9
star
37

relations

A tiny relational algebra engine for Python.
Python
7
star
38

django-cssmin

Easy CSS compression for Django.
Python
6
star
39

strscan

A simple string scanner class for Python. Useful for building lexers/tokenizers by hand.
Python
6
star
40

flask-resource

Build resource-oriented Web apps with Flask.
Python
6
star
41

blog.zacharyvoase.com

Zachary Voase’s nanoc3-powered blog.
Ruby
5
star
42

bossy

Write commands in Python, run them from the shell.
Python
4
star
43

python-crbtree

SortedDict and SortedSet implementations backed by a red-black tree, written in C.
C
4
star
44

python-recordinality

An implementation of the Recordinality sketch in Python, with a CLI
Python
4
star
45

exchequer

Easy table formatting in Python and on the command-line.
Python
4
star
46

django-jsmin

Easy JavaScript minification for Django.
JavaScript
4
star
47

djanjinja

Seamless Jinja2 integration with Django.
Python
3
star
48

broker

Python function dispatching based on MIME types and Accept headers.
Python
3
star
49

pistachio

An experimental Mustache implementation in Python.
Python
3
star
50

logbook-zmqpush

Python
2
star
51

croaring.py

Fast integer sets for Python, based on Roaring Bitmaps and CFFI
Python
2
star
52

llvmbc-wasm-loader

Webpack loader which converts LLVM bytecode to WASM using Emscripten
JavaScript
2
star
53

curly

Use the curl command line interface from Python with minimal fuss.
Python
2
star
54

swipecheck

SwipeCheck: Check into Foursquare using RFID/Twilio.
Python
2
star
55

metaspace

Create Python sub-modules using class syntax.
Python
2
star
56

python-cskipdict

A CFFI-based SkipDict implementation for Python.
C++
2
star
57

logbook-gevent

Experimental support for greenlet-based contexts in Logbook.
Python
2
star
58

skeleton.rb

A skeleton for Ruby projects (using Rake, RSpec, YARD and Bundler)
Ruby
2
star
59

compass-tfg-plugin

A Compass-compatible Sass port of the Tiny Fluid Grid system, plus extras.
Ruby
2
star
60

lovedb

The LoveDB spec.
1
star
61

word2vec

Automatically exported from code.google.com/p/word2vec
C
1
star
62

zacharyvoase.com

The nanoc-powered source of zacharyvoase.com.
PHP
1
star
63

assert_changes

Test assertions about changes in monitored values.
Python
1
star
64

hotqueue

HotQueue is a Python library that allows you to use Redis as a message queue within your Python programs.
Python
1
star
65

django-migrationbug-poc

A proof-of-concept for a bug in Django v1.8 migrations
Python
1
star
66

Adelie

The Ghost theme which powers my blog at zacharyvoase.com
CSS
1
star
67

jpipe

Manipulate JSON at the command-line easily with this line-based formatter
Go
1
star
68

try

A Try monad for Java 8
Java
1
star
69

tipsum

Lorem ipsum using the testing-in-python archive as the text corpus for a Markov chain
Python
1
star
70

stitch-test

Created with StackBlitz ⚡️
TypeScript
1
star
71

czmqc

zmqc, re-implemented in portable C.
C
1
star
72

logbook-zmqcentral

Centralized ZMQ_PUB/SUB-based logging for Logbook.
1
star
73

ninja-builder

JS/Typescript utility for building ninja build files programmatically.
TypeScript
1
star