Skip to main content

Anyblok is a dynamic injection blok framework

Project description

AnyBlok

AnyBlok is a Python framework allowing to create highly dynamic and modular applications on top of SQLAlchemy.

AnyBlok is released under the terms of the Mozilla Public License.

See the latest documentation

Front Matter

Information about the AnyBlok project.

Project Homepage

AnyBlok is hosted on Bitbucket - the main project page is at https://bitbucket.org/jssuzanne/anyblok or http://code.anyblok.org. Source code is tracked here using Mercurial.

Releases and project status are available on Pypi at http://pypi.python.org/pypi/anyblok.

The most recent published version of this documentation should be at http://doc.anyblok.org.

Project Status

AnyBlok is currently in beta status and is expected to be fairly stable. Users should take care to report bugs and missing features on an as-needed basis. It should be expected that the development version may be required for proper implementation of recently repaired issues in between releases; the latest master is always available at http://code.anyblok.org/get/default.tar.gz. or http://code.anyblok.org/get/default.zip

Installation

Install released versions of AnyBlok from the Python package index with pip or a similar tool:

pip install anyblok

Installation via source distribution is via the setup.py script:

python setup.py install

Installation will add the anyblok commands to the environment.

Unit Test

Run the framework test with nose:

pip install nose
nosetests anyblok/tests

Run all the installed bloks:

anyblok_nose -c config.file.cfg

Run the blok tests at the installation:

anyblok_updatedb -c config.file.cfg --install_bloks myblok --test-blok-at-install

AnyBlok are tested by the Anybox builbot

Dependencies

AnyBlok works with Python 3.3 and later. The install process will ensure that SQLAlchemy, Alembic, SQLAlchemy-Utils are installed, in addition to other dependencies. AnyBlok will work with SQLAlchemy as of version 1.0.11. AnyBlok will work with Alembic as of version 0.8.4. AnyBlok will work with SQLAlchemy-Utils as of version 0.31.4. The latest version of them is strongly recommended.

Contributing (hackers needed!)

Anyblok is at a very early stage, feel free to fork, talk with core dev, and spread the word!

Author

Jean-Sébastien Suzanne

Contributors

Anybox team:

  • Georges Racinet

  • Christophe Combelles

  • Sandrine Chaufournais

  • Jean-Sébastien Suzanne

  • Florent Jouatte

  • Simon André

  • Clovis Nzouendjou

  • Pierre Verkest

  • Franck Bret

  • Sébastien Morele

other:

  • Sébastien Chazallet

Bugs

Bugs and feature enhancements to AnyBlok should be reported on the Issue tracker.

CHANGELOG

0.8.1 (2016-03-15)

  • [FIX] #21 Improve Decimal column setter

  • [FIX] #22 String, uString, Text and uText write ‘’ in database for False value

  • [FIX] Change the external_id save in a two way

  • [FIX] #23 Column.Selection with None value, don’t return ‘None’ value by the getter

0.8.0 (2016-02-05)

  • [REF] session expire is now on the attribute, the update method is refactored too.

  • [FIX] blok: update version if the version change

  • [REF] add required blok, this bloks is installed and updated by the scripts anyblok_updatedb and anyblok_createdb

  • [ADD] Add Color Column

  • [REF] column can be encrypted

  • [REF] DataTime column is not a naive datatime value

  • [ADD] Add Password Column

  • [ADD] Add UUID Column

  • [ADD] Add URL Column

0.7.2 (2016-01-14)

  • [FIX] delete flush after remove of the session

  • [FIX] nose pluggins

  • [FIX] does’nt destroy automaticly constraints (not created by anyblok), indexes (not created by anyblok), columns, tables by automigration, add options to force the delete of its.

  • [REF] standardize the constraint and index names

  • [FIX] Multi declaration of the same foreign key in the case of M2O and O2O

  • [REF] SqlBase.update, become hight level meth

0.7.1 (2016-01-08)

  • [FIX] didn’t cast the config data from the config file

  • [IMP] copy init entry point from anyblok_pyramid

0.7.0 (2016-01-07)

  • [REF] Add options to give database url, No break compatibility

  • [REF] the argument of ArgumentParser can be add in the configuration
    • Improve the help of the application

    • Improve the type of the configuration, Work also with config file.

    • Adapt current configuration

  • [REF] start to use sqlalchemy-utils, replace the database management

  • [IMP] #18 Forbidden the declaration of SQLAchemy column or relationship

  • [REF] #15 Refactor unittest case to not create/drop database for each test

  • [FIX] #19 During migration if an unique constraint must be apply without unique value, then the constraint will be ignore and log a warning. No break the instalation of the blok

  • [FIX] #20 Update meth: expire the instance cause of relationship

  • [IMP] refresh and expire meth on model

  • [REF] delete obj, flush the session and delete the instance of obj of the session, before expire all the session, the goal is to reload the relation ship.

  • [REF] #13 Remove association model, replace it by call at the Blok definition

  • [IMP] #14 Add conflicting link between blok, two blok who are in conflict can be installed if the other is installed

0.6.0 (2016-01-07)

  • [REF] unittest isolation

  • [IMP] possibility to apply an extension for sqlalchemy

  • [ADD] pool configuration

0.5.2 (2015-09-28)

  • [IMP] extension for Sphinx and autodoc

  • [ADD] API doc in doc

  • [ADD] add foreign key option in relation ship

  • [CRITICAL FIX] the EnvironnementManager didn’t return the good scoped method for SQLAlchemy

  • [CRITICAL FIX] the precommit_hook was not isolated by session

  • [REF] add a named argument must_be_loaded_by_unittest, by dafault False, in Configuration.add to indicate if the function must be call during the initialisation of the unittest, generally for the configuration initialized by Environ variable

0.5.1 (2015-08-29)

  • [IMP] unload declaration type callback

0.5.0 (2015-08-28)

  • [IMP] add pop behaviour on Model.System.Parameter

  • [REF] Load configuration befoare load bloks, to use Configuration during the declaration

  • [FIX] all must return InstrumentedList, also when the result is empty

  • [FIX] to_dict must not cast column

  • [REF] add third entry in foreign key declaration to add options

  • [IMP] ModelAttribute used to declarate the need of specific attribute and get the attribute or the foreign key from this attribute

  • [IMP] ModelAttributeAdapter, get a ModelAttribute from ModelAttribute or str

  • [IMP] ModelRepr, Speudo representation of a Model

  • [IMP] ModelAdapter, get a ModelRepr from ModelRepr or str

  • [IMP] ModelMapper and ModelAttributeMapper

  • [REF] Event, the declaration of an event can be an anyblok or a sqlalchemy event

  • [REF] the foreign key must be declared with ModelAttribute

  • [REF] Use Adapter for Model and attribute in relation ship

  • [REF] hybrid_method, cache and classmethod_cache are now only impotable decorator function

  • [IMP] in column the default can be a classmethod name

  • [REF] replace all the field (prefix, suffic, …) by a formater field. It is a python formater string

  • [IMP] Sequence column

  • [IMP] add the default system or user configuration file

0.4.1 (2015-07-22)

  • [FIX] Field.Function, fexp is now a class method

  • [REF] reduce flake8 complexity

  • [REF] refactor field function

  • [FIX] inherit relation ship from another model, thank Simon ANDRÉ for the bug report

  • [REF] table/mapper args definition

  • [REF] Refactor Field, Column, RelationShip use now polymophic inherit

  • [FIX] Foreign key constraint, allow to add and drop constraint on more than one foreign key

  • [ADD] update-all-bloks option

  • [ADD] pre / post migration

  • [REF] UML Diagram is now with autodoc script

  • [REF] SQL Diagram is now with autodoc script

  • [REF] Add extend key word in configuration file to extend an existing configuration

0.4.0 (2015-06-21)

  • [REF] Add the possibility to add a logging file by argparse

  • [ADD] No auto migration option

  • [ADD] Plugin for nose to run unit test of the installed bloks

  • [REF] The relation ship can be reference more than one foreign key

  • [IMP] Add define_table/mapper_args methods to fill __table/mapper_args__ class attribute need to configure SQLAlachemy models

  • [REF] Limit the commit in the registry only when the SQLA Session factory is recreated

  • [REF] Commit and re-create the SQLA Session Factory, at installation, only if the number of Session inheritance of the number of Query inheritance change, else keep the same session

  • [REF] Exception is not a Declarations type

  • [FIX] Reload fonctionnality in python 3.2

  • [REF] Remove the Declarations typs Field, Column, RelationShip, they are replaced by python import

  • [REF] rename ArgsParseManager by Configuration

  • [REF] rename reload_module_if_blok_is_reloaded by reload_module_if_blok_is_reloading method on blok

  • [REF] rename import_cfg_file by import_file method on blok

  • [REF] Consistency the argsparse configuration

  • [REF] refactor part_to_load, the entry points loaded is bloks

  • [IMP] Allow to define another column name in the table versus model

  • [FIX] add importer for import configuration file

  • [FIX] x2M importer without field just, external id

0.3.5 (2015-05-10)

  • [IMP] When a new column is add, if the column have a default value, then this value will be added in all the entries where the value is null for this column

  • [REF] import_cfg_file remove the importer when import has done

0.3.4 (2015-05-10)

  • [ADD] logger.info on migration script to indicate what is changed

  • [IMP] Add sequence facility in the declaration of Column

  • [ADD] ADD XML Importer

0.3.3 (2015-05-04)

  • [FIX] createdb script

0.3.2 (2015-05-04)

  • [IMP] doc

  • [REF] Use logging.config.configFile

0.3.1 (2015-05-04)

  • [IMP] Update setup to add documentation files and blok’s README

0.3.0 (2015-05-03)

  • [IMP] Update Doc

  • [FIX] Remove nullable column, the nullable constraint is removed not the column

  • [ADD] Formater, convert value 2 str or str 2 value, with or without mapping

  • [ADD] CSV Importer

  • [REF] CSV Exporter to use Formater

0.2.12 (2015-04-29)

  • [IMP] CSV Exporter

  • [IMP] Exporter Model give external ID behaviour

  • [ADD] Sequence model (Model.System.Sequence)

  • [ADD] fields_description cached_classmethod with invalidation

  • [ADD] Parameter Model (Model.System.Parameter)

  • [FIX] environnement variable for test unitaire

0.2.11 (2015-04-26)

  • [FIX] UNIT test createdb with prefix

0.2.10 (2015-04-26)

  • [IMP] add enviroment variable for database information

  • [ADD] argsparse option install all bloks

  • [FIX] Python 3.2 need that bloks directory are python modules, add empty __init__ file

0.2.9 (2015-04-18)

  • [FIX] Add all rst at the main path of all the bloks

0.2.8 (2015-04-16)

  • [IMP] unittest on SQLBase

  • [IMP] add delete method on SQLBase to delete une entry from an instance of the model

  • [REF] rename get_primary_keys to get_mapping_primary_keys, cause of get_primary_keys already exist in SQLBase

0.2.7 (2015-04-15)

  • [IMP] Add IPython support for interpreter

  • [REF] Update and Standardize the method to field the models (Field, Column, RelationShip) now all the type of the column go on the ftype and comme from the name of the class

0.2.6 (2015-04-11)

  • [FIX] use the backref name to get the label of the remote relation ship

  • [FIX] add type information of the simple field

0.2.5 (2015-03-23)

  • [FIX] In the parent / children relationship, where the pk is on a mixin or from inherit

  • [FIX] How to Environment

  • [FIX] Many2Many declared in Mixin

  • [IMP] Many2One can now declared than the local column must be unique ( only if the local column is not declared in the model)

0.2.3 (2015-03-23)

  • [FIX] Allow to add a relationship on the same model, the main use is to add parent / children relation ship on a model, They are any difference with the declaration of ta relation ship on another model

  • [REF] standardize foreign_key and relation ship, if the str which replace the Model Declarations is now the registry name

0.2.2 (2015-03-15)

  • [REF] Unittest
    • TestCase and DBTestCase are only used for framework

    • BlokTestCase is used:
      • by run_exit function to test all the installed bloks

      • at the installation of a blok if wanted

0.2.0 (2015-02-13)

  • [REF] Import and reload are more explicite

  • [ADD] IO:
    • Mapping: Link between Model instance and (Model, str key)

  • [ADD] Env in registry_base to access at EnvironmentManager without to import it at each time

  • [IMP] doc add how to on the environment

0.1.3 (2015-02-03)

  • [FIX] setup long description, good for pypi but not for easy_install

0.1.2 (2015-02-02)

  • [REFACTOR] Allow to declare Core components

  • [ADD] Howto declare Core / Type

  • [FIX] Model can only inherit simple python class, Mixin or Model

  • [FIX] Mixin inherit chained

  • [FIX] Flake8

0.1.1 (2015-01-23)

  • [FIX] version, documentation, setup

0.1.0 (2015-01-23)

Main version of AnyBlok. You can with this version

  • Create your own application

  • Connect to a database

  • Define bloks

  • Install, Update, Uninstall the blok

  • Define field types

  • Define Column types

  • Define Relationship types

  • Define Core

  • Define Mixin

  • Define Model (SQL or not)

  • Define SQL view

  • Define more than one Model on a specific table

  • Write unittest for your blok

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

AnyBlok-0.8.1.tar.gz (178.0 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page