Decoupling the version of the file from the name of the module.

Raymond Hettinger python at rcn.com
Sun Jan 29 03:07:29 EST 2006


[bobueland at yahoo.com]
> I'm a newbie experimenting with Python. I want to incrementally develop
> a module called 'circle'.
 . . .
> Basically I want to decouple the version of my file from the name of
> the module.
>
> Is there a *simple* way out of this dilemma.

In the client code, use an import/as statement and update that single
line as needed:

    import circle_b as circle

If you don't want to edit the client code every time, the import can be
automated to smartly find the most recently updated version.  Build a
list of filenames using your naming convention.  Sort them by
modification date.  Then, import the most recent one as circle:

   names = glob.glob('circle_*.py')
   names.sort(key=lambda f: os.stat(f).st_mtime)
   newest_name = names[-1]
   newest_module, ext = os.path.splitext(newest_name)
   circle = __import__(newest_module)

Of course, the right answer is to do what everyone else does.  Use a
version control system instead of multiple files.


Raymond




More information about the Python-list mailing list