From 3c749cba527140aa5d8a5b72ecea3eb87b0a5f8a Mon Sep 17 00:00:00 2001 From: Jason Kirtland Date: Sat, 11 Aug 2007 16:05:27 +0000 Subject: [PATCH] Bake the version number into the source during packaging. --- VERSION | 1 + lib/sqlalchemy/__init__.py | 19 +-------- setup.py | 81 ++++++++++++++++++++++++++++---------- 3 files changed, 64 insertions(+), 37 deletions(-) create mode 100644 VERSION diff --git a/VERSION b/VERSION new file mode 100644 index 0000000000..6889c0606c --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +0.4.0beta1 diff --git a/lib/sqlalchemy/__init__.py b/lib/sqlalchemy/__init__.py index 6e95fd7e1d..ab12ecf4b2 100644 --- a/lib/sqlalchemy/__init__.py +++ b/lib/sqlalchemy/__init__.py @@ -7,22 +7,7 @@ from sqlalchemy.types import * from sqlalchemy.sql import * from sqlalchemy.schema import * - from sqlalchemy.engine import create_engine -def __figure_version(): - try: - from pkg_resources import require - import os - # NOTE: this only works when the package is either installed, - # or has an .egg-info directory present (i.e. wont work with raw SVN checkout) - info = require('sqlalchemy')[0] - if os.path.dirname(os.path.dirname(__file__)) == info.location: - return info.version - else: - return '(not installed)' - except: - return '(not installed)' - -__version__ = __figure_version() - + +__version__ = 'svn' diff --git a/setup.py b/setup.py index 735f3d7234..bb8e689fde 100644 --- a/setup.py +++ b/setup.py @@ -1,21 +1,66 @@ from ez_setup import use_setuptools use_setuptools() from setuptools import setup, find_packages +from distutils.command.build_py import build_py as _build_py +from setuptools.command.sdist import sdist as _sdist +import os +from os import path + +v = open(path.join(path.dirname(__file__), 'VERSION')) +VERSION = v.readline().strip() +v.close() + +class build_py(_build_py): + def run(self): + init = path.join(self.build_lib, 'sqlalchemy', '__init__.py') + if path.exists(init): + os.unlink(init) + _build_py.run(self) + _stamp_version(init) + self.byte_compile([init]) + +class sdist(_sdist): + def make_release_tree (self, base_dir, files): + _sdist.make_release_tree(self, base_dir, files) + orig = path.join('lib', 'sqlalchemy', '__init__.py') + assert path.exists(orig) + dest = path.join(base_dir, orig) + if hasattr(os, 'link') and path.exists(dest): + os.unlink(dest) + self.copy_file(orig, dest) + _stamp_version(dest) + +def _stamp_version(filename): + found, out = False, [] + f = open(filename, 'r') + for line in f: + if '__version__ =' in line: + line = line.replace("'svn'", "'%s'" % VERSION) + found = True + out.append(line) + f.close() + + if found: + f = open(filename, 'w') + f.writelines(out) + f.close() + setup(name = "SQLAlchemy", - version = "0.4.0", - description = "Database Abstraction Library", - author = "Mike Bayer", - author_email = "mike_mp@zzzcomputing.com", - url = "http://www.sqlalchemy.org", - packages = find_packages('lib'), - package_dir = {'':'lib'}, - entry_points = { - 'sqlalchemy.databases': [ - '%s = sqlalchemy.databases.%s:dialect' % (f,f) for f in - ['sqlite', 'postgres', 'mysql', 'oracle', 'mssql', 'firebird']]}, - license = "MIT License", - long_description = """\ + cmdclass={'build_py': build_py, 'sdist': sdist}, + version = VERSION, + description = "Database Abstraction Library", + author = "Mike Bayer", + author_email = "mike_mp@zzzcomputing.com", + url = "http://www.sqlalchemy.org", + packages = find_packages('lib'), + package_dir = {'':'lib'}, + entry_points = { + 'sqlalchemy.databases': [ + '%s = sqlalchemy.databases.%s:dialect' % (f,f) for f in + ['sqlite', 'postgres', 'mysql', 'oracle', 'mssql', 'firebird']]}, + license = "MIT License", + long_description = """\ SQLAlchemy is: * The Python SQL toolkit and Object Relational Mapper that gives application developers the full power and flexibility of SQL. SQLAlchemy provides a full suite of well known enterprise-level persistence patterns, designed for efficient and high-performing database access, adapted into a simple and Pythonic domain language. @@ -45,15 +90,11 @@ SVN version: """, - classifiers = [ + classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Topic :: Database :: Front-Ends", - ] - ) - - - - + ] + ) -- 2.47.3