semvec/pypi-packages huggingface dataset:
karnickel 0.2
Python macros using the AST
License: BSD

.. -*- restructuredtext -*-

============================================
README for Karnickel - AST Macros for Python
============================================

"it's no ordinary rabbit..."


What is it?
===========

Karnickel is a small library that allows you to use macros (similar to those
found in Lisp) in Python code.  In a nutshell, macros allow you to insert code
(the macro *definition*) at a different point in the code (the macro *call*).
It is different from calling functions in that the code is inserted *before* it
is even compiled.

("Karnickel" is German for "rabbit", and there's a vicious killer
rabbit in "Monty Python and the Holy Grail" that is best left alone...)


Using
=====

Use Python 2.6+.  You can put macros in any module.  Macro definitions are
Python functions, like this::

   from karnickel import macro

   @macro
   def macroname(arg1, arg2):
        ... macro contents ...

Optional arguments are not supported.

If the contents are a single expression (no ``return``), the macro is an
*expression macro*.  Otherwise, it is a *block macro*.  If it contains a
statement consisting of only ``__body__``, it is a block macro *with body*.

For using the macros, you must install the import hook::

   import karnickel
   karnickel.install_hook()

*Then*, you can import modules that use macros like this::

   from module.__macros__ import macro1, macro2

That is, append ``.__macros__`` to the name of the module that contains the
macros.  Only ``from``-imports are supported.

Usage depends on the macro type:

* Expression macros can be used everywhere as expressions.  Arguments are put
  into the places of macro arguments.

* Block macros without body can only be used as an expression statement --
  i.e.::

     macroname(arg1, arg2)

* Block macros with body must be used with a ``with`` statement::

     with macroname(arg1, arg2):
         body

  Arguments are put into the places of macro arguments, and the body is put into
  the place of ``__body__`` in the macro definition.

Proper docs may follow as soon as I can find a decent documentation tool.


Why?
====

Why not?  Seriously, this is a demonstration of what you can do with the Python
AST, especially the standard ``ast`` module, and import hooks.  Besides, it's
been fun.


Installing
==========

Use ``setup.py``::

   sudo python setup.py install


Author
======

Georg Brandl <georg@python.org>
py-liquidhandler 0.5
Control program and python interface to Waters 2700 (and compatible) liquid handling robots
License: BSD
Keywords: robot liquid handler lab equipment

This is a library and a GUI control program written in Python for
controlling a Waters 2700 Sample Manager (and compatible) liquid
handling robot. These are quite common in Mass spectrometry labs and
typically have 1-2 arms with attached syringes and one 6-port valve.

Changes in Version 0.5: more bugfixes, and it looks even good in
Windows now!

The library allows to easily 

  *  control the movements of up to 2 arms
  *  control the syringe pump and 6-port valve to dispense and draw
     liquids from a reservoir or e.g. a 96-well plate
  *  save and recall positions (like "wash", "A1" on a plate, etc.) for
     easier scripting

The GUI program provides a platform-independent graphical interface
for the library. However, the library can be used without the GUI
part.
j2 1.2.1
cmdline text templating & rendering tool using Jinja2
License: BSD
Keywords: text templating cmdline

j2 is commandline text templating & rendering tool, it brings the power of the Jinja2 engine to general
purpose text compilation. The tool excels at the various situations where you need to compile/generate
text files as part of a build system or other types of automation process (sysadmin to configuration
files etc)