• This repository has been archived on 16/Oct/2022
  • Stars
    star
    157
  • Rank 237,001 (Top 5 %)
  • Language
    Python
  • License
    BSD 3-Clause "New...
  • Created almost 15 years ago
  • Updated almost 10 years ago

Reviews

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

Repository Details

A tool to nicely wrap-up your python softwares

Travis CI Build Status

Bento is an alternative to distutils-based packaging tools such as distutils, setuptools or distribute. Bento focus on reproducibility, extensibility and simplicity (in that order).

Packaging is as simple as writing a bento.info file with a file which looks as follows:

Name: Foo
Author: John Doe

Library:
    Packages: foo

The package is then installed with bentomaker, the command line interface to bento:

bentomaker install

Installing

To install bento, you can either:

  • install bento from itself (recommended):

    python bootstrap.py
    ./bentomaker install
    
  • install bento using setuptools (not recommended):

    python setup.py install
    

Python3 support

Bento supports python 3 as is, so there is no need to run 2to3 on it (doing so will probably break it).

Development

Bento discussions happen on the bento Mailing list ([email protected], archive on bento-ml). To subscribe, you simply need to send an email to the list. Development is on github. Bugs should be reported on bento issue-tracker. Online documentation is available on github as well.

Why you should use bento ?

  • Straightfoward package description, in an indentation-based syntax similar to python
  • Simple packages can have their setup.py automatically converted through the 'convert' command
  • Distutils compatibility mode so that a bento package can be installed through pip
  • Adding new commands is simple
  • Pluggable build-backend: you can build your C extensions with a real build system such as waf or scons.
  • Easy to customize install paths from the command line, with sensible defaults on every platform
  • Installing data files such as manpages, configuration, etc... is straightforward and customizable through the command line
  • Supports all python versions >= 2.4 (including 3.x)
  • Designed with reproducibility in mind: re-running the same command twice should produce the same result (idempotency)
  • Preliminary support for windows installers (.exe), eggs and mpkg.

But bento does more:

  • Designed as a library from the ground up, with a focus on robustness and extensibility:

    • new commands can be inserted before/after an existing one without modifying the latter (no monkey-patching needed)
    • easy to add command line options to existing commands
    • each command has a pre/post hook
    • API designed such as commands need to know very little from each other.
    • Moving toward a node-based architecture for robust file location (waf-based design)
    • No global variable/singleton in bento itself
  • Easily bundable, one-file distribution to avoid extra-dependencies when using bento. You only need to add one file to your sources, no need for your users to install anything.

  • Basic support for console scripts ala setuptools

  • Dependency-based extension builders (source content change is automatically rebuilt)

  • Parallel build support for C extensions

  • Low-level interface to the included build tool to override/change any compilation parameter (compilation flag, compiler, etc...)

Planned features:

  • Reliable and fast (parallel) 2->3 convertion.
  • Support for msi packages
  • Reliable conversion between packaging formats on the platforms where it makes sense (egg <-> wininst, mpkg <-> egg, etc...)
  • Provide API to enable Linux distributors to write simple extensions for packaging bento-packages as they see fit
  • Infrastructure for a correctly designed package index, using well-known packaging practices instead of the broken easy_install + pypi model (easy mirroring, enforced metadata, indexing to enable querying-before-installing, reliable install, etc...).

WHILE BENTO IS ALREADY USABLE, IT MAY STILL SIGNIFICANTLY CHANGE IN BACKWARD INCOMPATIBLE WAYS UNTIL THE FIRST ALPHA.

More Repositories

1

audiolab

A python package for reading/writing audio files from numpy array
C
141
star
2

talkbox

C
79
star
3

cython-codegen

some experiment to use ctypes codegen for cython
Python
27
star
4

samplerate

Python
23
star
5

numscons

Using scons within distutils
Python
14
star
6

import-profiler

A basic python import profiler to find bottlenecks in import times
Python
14
star
7

yaku

A simple build system in python to build C extensions
Python
10
star
8

numpy-macosx-installer

Scripts to create the new numpy mac os x installer
7
star
9

cross-mingw-w64

Set of makefiles to build cross and native toolchains for windows x64 on linux/darwin
C
5
star
10

aio-winrm

A python 3.5+ async library for the WinRM protocol
Python
4
star
11

atlas-debian

new debian package for atlas, with SSE/NOSSE fixes
C
3
star
12

garnumpy

Gar project to build numpy and its dependencies
Shell
3
star
13

waf-old

waf mirror
Python
3
star
14

pydata-talk

pydata talk data
3
star
15

matplotlib-dependencies

A repo to keep all matplotlib dependencies (png, zlib, wxpython, freetype) on windows with scons script to easily customize their build process
C
3
star
16

cournape.github.io

New, pelican-based blog
CSS
2
star
17

haproxy

my own copy of the haproxy source
C
2
star
18

pkg-rbtools

Debian packaging for rbtools
Python
1
star
19

pkg-mercurial-reviewboard

Debian packaging for mercurial-reviewboard plugin
Python
1
star
20

symbol-export

C
1
star
21

blog-old

Perl
1
star
22

ensetuptools

git import of ensetuptools
Python
1
star
23

atlas-nosse

ATLAS with modifications to build wo SSE on machines with SSE
C
1
star
24

cython-example

Simple cython example
Python
1
star
25

pig-it

A toy project to natively access git repository in python
Python
1
star
26

eggutils

A set of utilities to create and manipulate python eggs without setuptools
Python
1
star
27

advent-of-code-2020

Rust
1
star
28

sqlite_cache

A dumb python cache backed by sqlite
Python
1
star
29

traitlets

Python
1
star
30

nousagi

Test cli tools with a simple yaml description
Python
1
star
31

simple-versioner

Shell
1
star
32

waf

github clone of waf meta build system
Python
1
star