]> git.ipfire.org Git - thirdparty/sqlalchemy/alembic.git/commitdiff
- ignore __init__.py in versions directory, fixes #95.
authorMike Bayer <mike_mp@zzzcomputing.com>
Thu, 24 Jul 2014 22:48:17 +0000 (18:48 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Thu, 7 Aug 2014 18:51:59 +0000 (14:51 -0400)
alembic/script.py
docs/build/changelog.rst
tests/test_revision_create.py

index 32943664d1b19f11ef9eb93713e1764496ff5438..ed44f71ba38c57fd07ba4f60d89c79f0a086a020 100644 (file)
@@ -4,8 +4,8 @@ import re
 import shutil
 from . import util
 
-_sourceless_rev_file = re.compile(r'(.*\.py)(c|o)?$')
-_only_source_rev_file = re.compile(r'(.*\.py)$')
+_sourceless_rev_file = re.compile(r'(?!__init__)(.*\.py)(c|o)?$')
+_only_source_rev_file = re.compile(r'(?!__init__)(.*\.py)$')
 _legacy_rev = re.compile(r'([a-f0-9]+)\.py$')
 _mod_def_re = re.compile(r'(upgrade|downgrade)_([a-z0-9]+)')
 _slug_re = re.compile(r'\w+')
@@ -209,6 +209,7 @@ class ScriptDirectory(object):
     @util.memoized_property
     def _revision_map(self):
         map_ = {}
+
         for file_ in os.listdir(self.versions):
             script = Script._from_filename(self, self.versions, file_)
             if script is None:
index 5f140405b31b00b44b96dafab98435f532b18331..1f7cb5db66ad7a9c5ae1bf8f14beef66861941fc 100644 (file)
@@ -5,6 +5,15 @@ Changelog
 .. changelog::
     :version: 0.6.6
 
+    .. change::
+      :tags: bug
+      :tickets: 95
+      :pullreq: bitbucket:24
+
+      A file named ``__init__.py`` in the ``versions/`` directory is now
+      ignored by Alembic when the collection of version files is retrieved.
+      Pull request courtesy Michael Floering.
+
     .. change::
       :tags: bug
       :pullreq: bitbucket:23
index 07ed6d44639e24129c3afa94020ce925efc7a335..5bf12cf4a46c6a4cbef6635340139509cb606df6 100644 (file)
@@ -1,7 +1,7 @@
 from tests import clear_staging_env, staging_env, eq_, ne_, is_, staging_directory
 from tests import _no_sql_testing_config, env_file_fixture, script_file_fixture, _testing_config
 from alembic import command
-from alembic.script import ScriptDirectory
+from alembic.script import ScriptDirectory, Script
 from alembic.environment import EnvironmentContext
 from alembic import util
 import os
@@ -159,6 +159,36 @@ class TemplateArgsTest(unittest.TestCase):
             {"x": "x1", "y": "y2", "z": "z1", "q": "q1"}
         )
 
+    def test_step_ignore_init_py(self):
+        """test that __init__.py is ignored."""
+
+        env_file_fixture("""
+context.configure(dialect_name='sqlite', template_args={"somearg":"somevalue"})
+""")
+        command.revision(self.cfg, message="some rev")
+        script = ScriptDirectory.from_config(self.cfg)
+        path = os.path.join(script.versions, "__init__.py")
+        with open(path, 'w') as f:
+            f.write(
+                "crap, crap -> crap"
+            )
+        command.revision(self.cfg, message="another rev")
+
+        script.get_revision('head')
+
+    def test_is_ignored_filename(self):
+        script = ScriptDirectory.from_config(self.cfg)
+        cases = [
+            '__init__.py',
+            u'__init__.py',
+            u'__init__.pyc',
+            u'__init__.pyx',
+            u'__init__.pyo',
+        ]
+        for case in cases:
+            assert Script._from_filename(
+                script, script.versions, case) is None
+
     def test_tmpl_args_revision(self):
         env_file_fixture("""
 context.configure(dialect_name='sqlite', template_args={"somearg":"somevalue"})
@@ -168,8 +198,10 @@ context.configure(dialect_name='sqlite', template_args={"somearg":"somevalue"})
 revision = ${repr(up_revision)}
 down_revision = ${repr(down_revision)}
 """)
+
         command.revision(self.cfg, message="some rev")
         script = ScriptDirectory.from_config(self.cfg)
+
         rev = script.get_revision('head')
         with open(rev.path) as f:
             text = f.read()