Path: csiph.com!eternal-september.org!feeder.eternal-september.org!border1.nntp.ams1.giganews.com!nntp.giganews.com!newsfeed.xs4all.nl!newsfeed7.news.xs4all.nl!nzpost1.xs4all.net!not-for-mail Return-Path: X-Original-To: python-announce-list@python.org Delivered-To: python-announce-list@mail.python.org X-Spam-Status: OK 0.000 X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'else:': 0.03; '"""': 0.05; 'cache': 0.05; 'compiler': 0.05; 'none:': 0.05; 'sys': 0.05; 'url:bitbucket': 0.05; '(python,': 0.07; '(so': 0.07; 'pypy': 0.07; 'subject:ANN': 0.07; 'urllib2': 0.07; 'versions.': 0.07; "'...'": 0.09; 'bit)': 0.09; 'hooks': 0.09; 'msi': 0.09; 'path)': 0.09; 'python': 0.10; '2.7': 0.13; 'def': 0.13; '"""download': 0.16; '(32': 0.16; '(now': 0.16; 'base_name': 0.16; 'cache:': 0.16; 'clone': 0.16; 'fp.close()': 0.16; 'install.': 0.16; 'installer.': 0.16; 'invokes': 0.16; 'mercurial,': 0.16; 'received:194.109': 0.16; 'received:194.109.24': 0.16; 'received:eu': 0.16; 'run:': 0.16; "skip:' 60": 0.16; 'version.': 0.18; 'subject:] ': 0.19; 'versions': 0.20; 'changes': 0.20; 'windows': 0.20; '2015': 0.20; 'environments': 0.22; 'bit': 0.23; '(or': 0.23; '(you': 0.23; 'import': 0.24; 'downloaded': 0.24; 'testing': 0.25; '----------': 0.25; 'install': 0.25; 'header :User-Agent:1': 0.26; 'command': 0.26; 'installed': 0.26; '(e.g.': 0.27; '2.3': 0.27; "skip:' 10": 0.28; 'skip:u 20': 0.28; '32-bit': 0.29; 'behaviour': 0.29; 'received:78.46': 0.29; 'spaces': 0.29; 'environment': 0.29; 'allows': 0.30; 'print': 0.30; 'system,': 0.30; 'code': 0.30; 'skip:[ 10': 0.31; 'post': 0.31; 'another': 0.32; 'included': 0.32; 'skip:_ 10': 0.32; 'announce': 0.32; 'older': 0.32; 'run': 0.33; 'options': 0.33; 'downloading': 0.33; 'machine.': 0.33; 'url:downloads': 0.33; 'version:': 0.33; 'open': 0.33; 'file': 0.34; 'list': 0.34; 'next': 0.35; 'done': 0.35; 'installing': 0.35; 'path': 0.35; 'community': 0.36; 'skip:i 20': 0.36; 'needed': 0.36; 'url:org': 0.36; 'visual': 0.36; 'setting': 0.37; 'received:org': 0.37; 'starting': 0.37; 'virtual': 0.38; 'version': 0.38; 'feedback': 0.38; 'files': 0.38; 'skip:o 20': 0.38; 'subject:[': 0.39; 'data': 0.39; 'easily': 0.39; 'to:addr:python.org': 0.40; 'waiting': 0.60; 'your': 0.60; 'default': 0.61; 'received:194': 0.61; 'watch': 0.62; 'course': 0.62; 'more': 0.63; 'yourself,': 0.72; 'special': 0.73; 'click': 0.76; 'prompt': 0.79; 'particular:': 0.84; 'pip': 0.84; 'snapshot': 0.84; 'wheel': 0.84; 'interesting,': 0.93 To: python-announce-list@python.org From: Anthon van der Neut Subject: [ANN] winpysetup 1.2 Date: Sun, 27 Sep 2015 21:41:03 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Mailman-Approved-At: Sun, 27 Sep 2015 21:57:15 +0200 X-BeenThere: python-announce-list@python.org X-Mailman-Version: 2.1.20+ Precedence: list List-Id: Announcement-only list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Approved: python-announce-list@python.org Newsgroups: comp.lang.python.announce Message-ID: Lines: 108 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1443383836 news.xs4all.nl 23778 [2001:888:2000:d::a6]:60269 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python.announce:1877 I am happy to announce the availability of a new version of winpysetup changes in this version: - added 3.5 and VisualStudio 2015 Community edition. Both are for post XP windows versions only. Be forewarned that VisualStudio can take a long time downloading updates it needs on a clean Windows 7, all the more reason to use winpysetup. version 1.2 dd 2015-09-27 Winpysetup ( https://bitbucket.org/ruamel/winpysetup/ ) allows setting up a clean testing environment on Windows for multiple python versions without downloading and installing MSI installers, prerequisites, yourself, all the time waiting for the last to finish in order to click a few options to start the next install. Winpysetup makes it trivial to install both 64- and 32-bit versions of the same Python version. Because tox-globinterpreter is installed as well, all these versions can be found and used on one machine. - install Windows (or clone your clean Windows Virtual Machine) - Download winpysetup.exe and start it. ( https://bitbucket.org/ruamel/winpysetup/downloads/winpysetup.exe ) - Once the program is done (now is a good time to make another snapshot if you run Windows in a VM), open a new Command Prompt (to get the change in PATH) and change to a directory without spaces in the path (e.g. C:\src). - Run: hg clone --insecure https://hg@bitbucket.org/ruamel/minimal - Change to the directory "minimal" and run tox. - Watch how tox invokes py.test succesfully against Python 2.7/3.5/3.4/3.3/2.6 and pypy (you can of course run tox immediately on your own, more interesting, code as well). Installed items include: pip (latest version even if older version is included in the installed python version), easy_install, mercurial, tox, detox, py.test and the Visual C compiler for Python 2.7 (e.g. needed for mercurial) and the other Pythons versions. Special hooks can change the behaviour of the installer. In particular: - the list of python versions to install can be easily extended/reduced - the list of default packages to install can be extended/reduced - already downloaded packages (Python, VisualStudio) can be cached. To both cache downloads, and install 32 bit versions on a 64 bit system, create a file pre_winpysetup.py next to your winpysetup.exe file before starting the latter: ---------- import sys import os import urllib2 def _download_url(self, url, path=None, base_name=None): """download a url if it is not yet in the cache """ cache = '/full/path/to/some/peristent/cache/directory/on/a/host/network drive' print 'url', url if cache and not os.path.exists(cache): cache = None if path is None: path = self._msi_dir if base_name is None: base_name = os.path.basename(url) if cache: full_name = os.path.join(cache, base_name) else: full_name = os.path.join(path, base_name) if not os.path.exists(full_name): print 'retrieving', base_name, '...' data = urllib2.urlopen(url).read() fp = open(full_name, 'wb') fp.write(data) fp.close() return full_name def pre_versions(self): self.versions = self.versions[:-1] + [ '3.5-32', '3.4-32', '3.3-32', '2.6-32', '2.7-32', ] + [self.versions[-1]] def main(verbose, installer): print 'loading winpysetup_pre' installer._download_url = _download_url installer.pre_versions = pre_versions ---------- Winpysetup has been used to setup the 2.3 environment to create the winpysetup.exe (so it will run on a clean Windows XP install). Winpysetup is used to generate the wheel files for ruamel.ordereddict and ruamel.yaml. It has been tested on: WinXP with Service Pack 2 (32 and 64 bit) Windows 7 (32 and 64 bit) Feedback (avdn@europython.eu or via bitbucket) is welcome, in particular if tested on other Windows environments to which I currently don't have access.