11craft / schevo

Python DBMS for reliably managing structured data and schema changes

This URL has Read+Write access

schevo / pavement.py
100644 172 lines (140 sloc) 5.396 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
try:
    import paver
except ImportError:
    # Ignore pavement during tests.
    pass
else:
    from paver.easy import *
    import paver.misctasks
    import paver.setuputils
    from paver.setuputils import setup
 
    from textwrap import dedent
 
    from setuptools import Extension, find_packages
 
    from schevo.release import VERSION
 
 
    setup(
        name='Schevo',
        version=VERSION,
        description='Next-generation DBMS',
        long_description=dedent("""
Schevo is a next-generation DBMS that focuses on the following:
 
* **Rapid Development**.
 
It's easy and fun to create even the most complex of
databases. Easily write and understand schema syntax. Quickly
place required initial data directly in your schema; use the
same syntax to create sets of sample data for development use.
 
* **Rich Schema Definition**.
 
Write database schemata using concise, easy-to-read Python
code. Your schema will describe not only database structure, but
also all transactions and rules that ensure database integrity.
 
* **Automated Schema Evolution**.
 
Deploy a Schevo database and use it to store valuable data, then
easily make further changes to the structure of the
database. Use Schevo's tools to help restructure a database and
safely migrate data from one schema version to the next.
 
* **Transaction Based**.
 
Schevo protects your data. Use transactions to make all changes
to a Schevo database (it's the only way it allows you to!), and
you can trust Schevo to ensure that your database is left in a
consistent state at all times.
 
* **User Interface Generation**.
 
User interface code takes advantage of the richness of your
database schema. Use a full-featured database navigator to
interact with your database without writing a single line of
code outside your database schema. Build customized UIs using
Schevo-aware widgets and UI tools.
 
You can also get the `latest development version
<http://github.com/gldnspud/schevo/zipball/master#egg=Schevo-dev>`__.
"""),
        classifiers=[
            'Development Status :: 4 - Beta',
            'Environment :: Console',
            'Intended Audience :: Developers',
            'License :: OSI Approved :: MIT License',
            'Operating System :: OS Independent',
            'Programming Language :: Python',
            'Topic :: Database :: Database Engines/Servers',
            'Topic :: Software Development :: Libraries :: '
                'Application Frameworks',
        ],
        keywords='database dbms',
        author='ElevenCraft Inc.',
        author_email='schevo@googlegroups.com',
        url='http://www.schevo.org/',
        license='MIT',
        packages=find_packages(exclude=['doc', 'tests']),
        include_package_data=True,
        package_data={
            'schevo.test.icons': ['*.png'],
        },
        zip_safe=False,
        install_requires=[
            'SchevoDurus == dev, >= 3.1.0dev-20090922',
        ],
        extras_require={
            'notifications': ['Louie >= 1.1'],
            'templates': ['PasteScript >= 1.7.3'],
        },
        tests_require=['nose >= 0.10.4'],
        test_suite='nose.collector',
        ext_modules=[
            Extension('schevo.store._s_persistent',
                      ['schevo/store/_s_persistent.c']),
        ],
        entry_points = """
[console_scripts]
schevo = schevo.script.main:start
schevo_hotshot = schevo.script.main:start_hotshot
 
[paste.paster_create_template]
schevo = schevo.template:SchevoTemplate
 
[schevo.backend]
schevostore = schevo.store.backend:SchevoStoreBackend
 
[schevo.schevo_command]
backends = schevo.script.backends:start
db = schevo.script.db:start
shell = schevo.script.shell:start
""",
        )
 
 
    options(
        cog=Bunch(
            basdir='doc/source',
            includedir='doc/source',
            pattern='*.txt',
            beginspec='<==',
            endspec='==>',
            endoutput='<==end==>',
        ),
        sphinx=Bunch(
            docroot='doc',
            builddir='build',
            sourcedir='source',
        ),
    )
 
 
    @task
    @needs('generate_setup', 'minilib', 'setuptools.command.sdist')
    def sdist():
        """Overrides sdist to make sure that our setup.py is generated."""
        pass
 
 
    @task
    @needs(['paver.doctools.cog', 'paver.doctools.html', 'paver.doctools.uncog'])
    def html():
        pass
 
 
    @task
    @needs('html')
    def docs():
        import webbrowser
        index_file = path('doc/build/html/index.html')
        webbrowser.open('file://' + index_file.abspath())
 
 
    @task
    def doctests():
        from paver.doctools import _get_paths
        import sphinx
        options.order('sphinx', add_rest=True)
        paths = _get_paths()
        sphinxopts = ['', '-b', 'doctest', '-d', paths.doctrees,
            paths.srcdir, paths.htmldir]
        ret = dry(
            "sphinx-build %s" % (" ".join(sphinxopts),), sphinx.main, sphinxopts)
 
 
    @task
    @needs(['doctests', 'nosetests'])
    def test():
        pass