Skip to content

Python library which allows you to annotate C code and use it for ctypes.

License

Notifications You must be signed in to change notification settings

lynnporu/annotatec

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PyPI GitHub repo size GitHub


annotatec helps you create Python packages with C embeddings.

Imagine you're developing C library and already have more than 50 functions. Sometimes you change signatures of old functions or rename them. It'll be headache to write and support all ctypes-declarations for Python wrapper. annotatec will create all Python objects for you. All you need is to provide declarations, which can be placed directly into your C code.

How to install

This library can be installed with pip:

pip install annotatec

Or build it and install yourself:

pip install git+https://github.com/lynnporu/annotatec.git#egg=annotatec

Minimal livable example

You have some library lib.c and it's header lib.h. These files were compiled into lib.so (or lib.dll in Windows).

lib.c source:

#include "lib.h"
int sum(int a, short b, long long c) { return a + b + c; }

lib.h source:

/* @function sum
 * @return int
 * @argument int
 * @argument short
 * @argument longlong
 */
int sum(int, short, long long);

Here's a Python wrapper:

import annotatec

libc = annotatec.Loader(
    library="lib.so", headers=["lib.h"])

That's all! Now you can test it like so:

>>> libc.sum(1, 2, 3)
<<< 6

Reference

Read detailed reference in wiki-pages.