Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/lynnporu/annotatec

Python library which allows you to annotate C code and use it for ctypes.
https://github.com/lynnporu/annotatec

annotations ctypes ctypes-bindings python

Last synced: 9 days ago
JSON representation

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

Awesome Lists containing this project

README

        



[![PyPI](https://img.shields.io/pypi/v/annotatec.svg)](https://pypi.python.org/pypi/annotatec)
![GitHub repo size](https://img.shields.io/github/repo-size/lynnporu/annotatec)
![GitHub](https://img.shields.io/github/license/lynnporu/annotatec)

------------

**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](https://docs.python.org/3/library/ctypes.html)-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`:

```bash
pip install annotatec
```

Or build it and install yourself:

```bash
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:
```c
#include "lib.h"
int sum(int a, short b, long long c) { return a + b + c; }
```

`lib.h` source:
```c
/* @function sum
* @return int
* @argument int
* @argument short
* @argument longlong
*/
int sum(int, short, long long);
```

Here's a Python wrapper:
```python
import annotatec

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

That's all! Now you can test it like so:
```python
>>> libc.sum(1, 2, 3)
<<< 6
```
## Reference

Read detailed reference in [wiki](https://github.com/lynnporu/annotatec/wiki)-pages.