Re: [Pythonmac-SIG] Building plans .....

2020-03-12 Thread Berg, Stuart
(I haven’t been following this thread too closely, so sorry in advance if the 
following is not exactly what you’re looking for.)

FWIW, I’ve shipped .app bundles using conda and py2app for years.*  I don’t 
have time to write up a minimal example, but I can provide links to the scripts 
we use.

It’s a little bit of a hack, but it’s not complicated.


  1.  First, create a conda environment that contains your application and all 
of its dependencies.
  2.  Run py2app in “alias mode”[1]. Alias mode creates a mostly-empty bundle 
that merely links to an external python installation.  It’s intended for 
development, but we can exploit it for our purposes. On my project, we use a 
special setup.py script for this.[2]
  3.  Move the entire conda environment into the .app bundle directory.  
There’s no need to change the directory structure.
  4.  Since the .app bundle was pointing to that environment, you need to 
find/replace the internal links that py2app wrote within your .app bundle.  
Instead of pointing to the external conda environment, they should point to the 
now-internal environment (with relative paths, of course).  It amounts to a few 
sed commands and symlinks.[3]

Note: Although you moved the conda environment, there should (usually) be no 
need to replace any paths within the conda environment directory itself.  
Unless you’re doing something weird, most conda environments use purely 
relative links internally, and are thus fully relocatable.  For example, our 
application is based on the standard scientific python stack (numpy, pandas, 
skimage, etc.), with lots of other dependencies, too.  If it works for us, it 
probably works for most people.

If you want to see what the final bundle will look like, try downloading the 
current version of ilastik[4]. (Sorry, it’s a heavy download – it’s based on a 
big conda environment, with ~120 packages.)

Maybe there are better ways of doing this, but I settled on this method without 
really needing to understand exactly what py2app is really doing.  And plus, it 
leaves your conda environment completely intact.  For instance, you can inspect 
it with “conda list -p ilastik.app/Contents/ilastik-release”, or even install 
additional packages after-the-fact.

Best,
Stuart

*I don’t work on the ilastik project any more, but I’m pretty sure the current 
team still uses this procedure.

[1]: 
https://py2app.readthedocs.io/en/latest/tutorial.html#development-with-alias-mode
[2]: https://git.io/Jv6VG
[3]: https://git.io/Jv6Vl
[4]: https://www.ilastik.org/download.html



From: Pythonmac-SIG  
on behalf of Christopher Barker 
Date: Thursday, March 12, 2020 at 12:26 PM
To: Just van Rossum 
Cc: Jack Jansen , Pythonmac-Sig 
Subject: Re: [Pythonmac-SIG] Building plans .

On Wed, Mar 11, 2020 at 11:48 PM Just van Rossum 
mailto:justvanros...@gmail.com>> wrote:
FWIW, as far as I can tell, a non-framework-build can't be used to build a 
native macos app, at least not with py2app.

I'm pretty sure it can. We've moved to PyInstaller, which does work, and 
I'm'pretty sure that py2app can work with conda's non-Framework build.

and it's on conda-forge, so presumably it's worked for at least one person :-)

https://anaconda.org/conda-forge/py2app

I do recall some issues a while back that have presumably been resolved.

I ran into this while trying to build an app on github-actions, and had to 
resort to downloading and installing Python from 
python.org
 upon build. Which is wasteful, and in my eyes completely unnecessary.

https://github.com/actions/setup-python/issues/58

I'm sad to learn conda does the same as it renders its Python completely 
useless for my work.

Actually, perhaps conda would work for you :-) I'm not clear on what gitHub 
actions allows, but you can certainly use conda on, e.g. TravisCI with OS-X. 
I've only used it to run tests, but I can't see why you couldn't build a app 
that way.

By the way, it's great to "see" all you from back in the day -- this has been a 
very quiet list lately!

-CHB


--
Christopher Barker, PhD

Python Language Consulting
  - Teaching
  - Scientific Software Development
  - Desktop GUI and Web Development
  - wxPython, numpy, scipy, Cython
___
Pythonmac-SIG maillist  -  Pythonmac-SIG@python.org
https://mail.python.org/mailman/listinfo/pythonmac-sig
unsubscribe: https://mail.python.org/mailman/options/Pythonmac-SIG


Re: [Pythonmac-SIG] py2app: How can I run tests using the bundled python interpreter?

2013-11-07 Thread Berg, Stuart
Hi Ronald,

 Recent versions of py2app have a way to specify secondary python scripts to 
 be included in the app bundle (the --extra-scripts option, introduced in 
 version 0.7). You could use that to include the test script in the app bundle 
 and launch it using the helper binary in ./dist/MyBundle.app/Contents/MacOS. 

The --extra-scripts option will satisfy my needs.  Thanks!  Somehow I 
overlooked this option when reading the documentation. I didn't understand what 
this option actually did.

 A helper script to launch a script with the right environment could also be 
 useful (that way you don't have to copy your script in the application 
 bundle). Could you file an issue about this in the py2app tracker 
 (https://bitbucket.org/ronaldoussoren/py2app/issues)?

Done!  (Issue #125)

Thanks for your help, and thanks for your great work on py2app!

Cheers,
Stuart

___
Pythonmac-SIG maillist  -  Pythonmac-SIG@python.org
https://mail.python.org/mailman/listinfo/pythonmac-sig
unsubscribe: https://mail.python.org/mailman/options/Pythonmac-SIG


[Pythonmac-SIG] py2app: How can I run tests using the bundled python interpreter?

2013-11-01 Thread Berg, Stuart
Hi all,

I just posted a question about py2app to stackoverflow:
http://stackoverflow.com/questions/19734558/py2app-how-can-i-run-tests-using-the-bundled-python-interpreter

For your convenience, I've also pasted the question below.  Any responses (via 
your preferred venue :-) are much appreciated.

Many thanks,
Stuart

I use py2app to package my application.  A few quick notes about my app:

- It uses a special python executable (i.e. non-system python), which py2app 
includes in the bundle.
- I explicitly exclude a few packages from site-packages.zip using the py2app 
recipe feature.

In the past, I've sometimes had issues with my app bundle because I forgot to 
exclude certain packages from site-packages.zip.  This was easy to fix once I 
discovered the problem, but I wasn't quick to discover it because the packages 
in question *mostly* worked.  The problem only showed itself after testing 
special cases that happen to exercise specific submodules in the problematic 
dependency.

In order to avoid problems like this in the future, I want to run a test suite 
using the same exact interpreter that py2app includes in my bundle.  For that 
to work, I need the proper environment setup that is somehow automatically 
created when the app starts up (including PYTHONPATH, DYLD_LIBRARY_PATH, etc.).

Just using ./dist/MyBundle.app/Contents/MacOS/python to run my tests doesn't 
seem to do the trick.  What's the recommended method to run tests on the fully 
built app bundle itself?

___
Pythonmac-SIG maillist  -  Pythonmac-SIG@python.org
https://mail.python.org/mailman/listinfo/pythonmac-sig
unsubscribe: https://mail.python.org/mailman/options/Pythonmac-SIG


Re: [Pythonmac-SIG] py2app + pyqt: Differences between command-line and double-click

2013-08-12 Thread Berg, Stuart
Hi Ronald,

It took me a while to follow up on this thread I started a few months ago 
because I wanted to find a minimal test case that illustrates my problem.  Now 
I've got one.  Apparently the PyQt spashscreen doesn't behave correctly when I 
use the py2app argv_emulation option.  

To save you from digging through your email for the previous posts, I'll 
summarize my issue again:

- I use py2app to bundle my app, which is implemented with PyQt4 (qt-4.8.3, 
pyqt-4.9.5). 
- I want to show a QSplashScreen when my app starts up, and hide it when the 
main window is shown.
- When I double-click my app bundle:
 -- There is a brief delay
 -- The splash screen appears
 -- The main window does not appear.
 -- At this point, I can summon the main window into existence by using 
command-tab to switch away from the app and then back again.
- I get correct splash screen behavior if I launch the app from the command 
line via MyBundle.app/Contents/MacOS/myapp

I noticed that the odd behavior happens when I use the argv_emulation option. 
 Here's a minimal example that shows the incorrect behavior on my machine.  To 
see correct behavior, comment out the 'argv_emulation' option in setup.py.

If necessary, I can probably use a workaround to avoid argv_emulation, but if 
there is a quick fix for this, I'd love to know about it.

Thanks,
Stuart

# bash commands to run:
$ python setup.py py2app
$ open dist/splashtest.app # incorrect splash screen behavior
$ open dist/splashtest.app/Contents/MacOS/splashtest # Correct behavior

##
### splashtest.py
import sys, time
from PyQt4.QtGui import QPixmap, QSplashScreen, QApplication, QMainWindow

app = QApplication([])

# Show a (blank) splash screen
splash = QSplashScreen( QPixmap(300, 200) )
splash.show()
app.processEvents()

time.sleep(1)

# Create  show the main window
window = QMainWindow()
window.show()
window.raise_()

# Close the splash screen
splash.finish(window)

sys.exit( app.exec_() )

##
# setup.py
from setuptools import setup, find_packages
setup(
app=['splashtest.py'],
options={ 'py2app': { 'argv_emulation': True,
  'includes':['PyQt4.QtCore','PyQt4.QtGui' ] } },
setup_requires=['py2app']
)


___
Pythonmac-SIG maillist  -  Pythonmac-SIG@python.org
http://mail.python.org/mailman/listinfo/pythonmac-sig
unsubscribe: http://mail.python.org/mailman/options/Pythonmac-SIG


[Pythonmac-SIG] py2app + pyqt: Differences between command-line and double-click

2013-05-15 Thread Berg, Stuart
Hi,

I'm using py2app to packages my (cross-platform) PyQt app into a Mac OS X 
application bundle.  (py2app is great, btw!)

I was wondering if anyone could point me to some documentation that explains in 
detail how a python app bundle's launch process differs from launching the 
python app directly from the command-line.  My app bundle seems to function 
exactly the same in most respects, but my main window doesn't activate unless I 
manually activate the application via command-tab.

I give a few more details in this question on stack overflow:
http://stackoverflow.com/questions/16574315/qt-mainwindow-does-not-appear-until-application-is-activated-manually

Any ideas, suggestions, or links would be appreciated.

Thanks,
Stuart

___
Pythonmac-SIG maillist  -  Pythonmac-SIG@python.org
http://mail.python.org/mailman/listinfo/pythonmac-sig
unsubscribe: http://mail.python.org/mailman/options/Pythonmac-SIG


Re: [Pythonmac-SIG] py2app + pyqt: Differences between command-line and double-click

2013-05-15 Thread Berg, Stuart



Hi Michael,


Thanks for your response. I am already calling show() and then raise() (though my SO question didn't make that clear -- sorry about that). I think I'm having a different issue than the one in the link you provided, because my app behaves correctly when
 launched from the command line. It only misbehaves when launched from the app-bundle (i.e. when launched with double-click).


For that reason, I suspect that perhaps there may be a subtle difference in the way the app bundle launches the main thread. (Grasping in the dark here...) Any py2app experts out there care to comment?


-Stuart


On May 15, 2013, at 4:50 PM, Michael McCracken wrote:


Hi, I answered on stack overflow too - but the short version is call show() *then also call* raise_() on your main window.


The answer to an earlier version of this question has a couple of links for more background:http://stackoverflow.com/questions/3662559/why-does-my-pyqt-application-open-in-the-background-on-mac-os-x



On Wed, May 15, 2013 at 1:32 PM, Berg, Stuart 
be...@janelia.hhmi.org wrote:

Hi,

I'm using py2app to packages my (cross-platform) PyQt app into a Mac OS X application bundle. (py2app is great, btw!)

I was wondering if anyone could point me to some documentation that explains in detail how a python app bundle's launch process differs from launching the python app directly from the command-line. My app bundle seems to function exactly the same in most respects,
 but my main window doesn't activate unless I manually activate the application via command-tab.

I give a few more details in this question on stack overflow:
http://stackoverflow.com/questions/16574315/qt-mainwindow-does-not-appear-until-application-is-activated-manually

Any ideas, suggestions, or links would be appreciated.

Thanks,
Stuart

___
Pythonmac-SIG maillist - Pythonmac-SIG@python.org
http://mail.python.org/mailman/listinfo/pythonmac-sig
unsubscribe: 
http://mail.python.org/mailman/options/Pythonmac-SIG










___
Pythonmac-SIG maillist  -  Pythonmac-SIG@python.org
http://mail.python.org/mailman/listinfo/pythonmac-sig
unsubscribe: http://mail.python.org/mailman/options/Pythonmac-SIG


Re: [Pythonmac-SIG] PyObjC ScreenSaver on 10.7

2012-12-26 Thread Berg, Stuart
Hi Ronald,

 The screensaver framework should work just fine, but only if the bundle 
 contains 64-bit code.
 
 What is the output of 'file SillyBalls.saver/Contents/MacOS/SillyBalls' ?

I have two versions of python, so I'll try this twice.  First with the built-in 
version:
$ which python
/usr/local/bin/python

$ python --version
Python 2.7.2

$ python setup.py py2app
……..

$ file dist/SillyBalls.saver/Contents/MacOS/SillyBalls 
dist/SillyBalls.saver/Contents/MacOS/SillyBalls: Mach-O universal binary with 2 
architectures
dist/SillyBalls.saver/Contents/MacOS/SillyBalls (for architecture i386):
Mach-O bundle i386
dist/SillyBalls.saver/Contents/MacOS/SillyBalls (for architecture x86_64):  
Mach-O 64-bit bundle x86_64

$ file dist/SillyBalls.saver/Contents/MacOS/python 
dist/SillyBalls.saver/Contents/MacOS/python: Mach-O universal binary with 2 
architectures
dist/SillyBalls.saver/Contents/MacOS/python (for architecture i386):Mach-O 
executable i386
dist/SillyBalls.saver/Contents/MacOS/python (for architecture x86_64):  Mach-O 
64-bit executable x86_64

And with my own build of python:

$ rm -rf build dist

$ which python
/Users/bergs/special-build/Frameworks/Python.framework/Versions/2.7/bin/python

$ python --version
Python 2.7.3rc2

$ python setup.py py2app
…….

$ file dist/SillyBalls.saver/Contents/MacOS/SillyBalls 
dist/SillyBalls.saver/Contents/MacOS/SillyBalls: Mach-O 64-bit bundle x86_64

$ file dist/SillyBalls.saver/Contents/MacOS/python 
dist/SillyBalls.saver/Contents/MacOS/python: Mach-O 64-bit executable x86_64


 Which versions of python, pyobjc, and py2app do you use (and for the python 
 versions, is this the apple provided one or some other install)?


I installed the same version of pyobjc to each python install:

$ python -c import objc; print objc.__version__
2.4

$ python -c import py2app; print py2app.__version__
0.7.2

The System Preferences app doesn't give a very useful error message (Contact 
the developer of this screen saver for a newer version.).  Do you know if 
there's any way to get a better idea of what's going wrong?  As far as I can 
tell, Console.app doesn't have any useful output on this problem.

Thanks,
Stuart



___
Pythonmac-SIG maillist  -  Pythonmac-SIG@python.org
http://mail.python.org/mailman/listinfo/pythonmac-sig
unsubscribe: http://mail.python.org/mailman/options/Pythonmac-SIG


Re: [Pythonmac-SIG] PyObjC ScreenSaver on 10.7

2012-12-26 Thread Berg, Stuart
One more note.  I came across this link yesterday:
http://developer.apple.com/library/mac/#qa/qa1666/_index.html

How do I make sure that the ScreenSaver bundle I've created with py2app uses 
the correct garbage collection setting?  Is there a way to specify 
GCC_ENABLE_OBJC_GC=required from setup.py?  Also, is there a way to inspect a 
binary to see if this setting was used to build it?

Sorry for my ignorance….

Thanks again,
Stuart

On Dec 26, 2012, at 12:08 PM, Stuart Berg wrote:

 Hi Ronald,
 
 The screensaver framework should work just fine, but only if the bundle 
 contains 64-bit code.
 
 What is the output of 'file SillyBalls.saver/Contents/MacOS/SillyBalls' ?
 
 I have two versions of python, so I'll try this twice.  First with the 
 built-in version:
 $ which python
 /usr/local/bin/python
 
 $ python --version
 Python 2.7.2
 
 $ python setup.py py2app
 ……..
 
 $ file dist/SillyBalls.saver/Contents/MacOS/SillyBalls 
 dist/SillyBalls.saver/Contents/MacOS/SillyBalls: Mach-O universal binary with 
 2 architectures
 dist/SillyBalls.saver/Contents/MacOS/SillyBalls (for architecture i386):  
 Mach-O bundle i386
 dist/SillyBalls.saver/Contents/MacOS/SillyBalls (for architecture x86_64):
 Mach-O 64-bit bundle x86_64
 
 $ file dist/SillyBalls.saver/Contents/MacOS/python 
 dist/SillyBalls.saver/Contents/MacOS/python: Mach-O universal binary with 2 
 architectures
 dist/SillyBalls.saver/Contents/MacOS/python (for architecture i386):  Mach-O 
 executable i386
 dist/SillyBalls.saver/Contents/MacOS/python (for architecture x86_64):
 Mach-O 64-bit executable x86_64
 
 And with my own build of python:
 
 $ rm -rf build dist
 
 $ which python
 /Users/bergs/special-build/Frameworks/Python.framework/Versions/2.7/bin/python
 
 $ python --version
 Python 2.7.3rc2
 
 $ python setup.py py2app
 …….
 
 $ file dist/SillyBalls.saver/Contents/MacOS/SillyBalls 
 dist/SillyBalls.saver/Contents/MacOS/SillyBalls: Mach-O 64-bit bundle x86_64
 
 $ file dist/SillyBalls.saver/Contents/MacOS/python 
 dist/SillyBalls.saver/Contents/MacOS/python: Mach-O 64-bit executable x86_64
 
 
 Which versions of python, pyobjc, and py2app do you use (and for the python 
 versions, is this the apple provided one or some other install)?
 
 
 I installed the same version of pyobjc to each python install:
 
 $ python -c import objc; print objc.__version__
 2.4
 
 $ python -c import py2app; print py2app.__version__
 0.7.2
 
 The System Preferences app doesn't give a very useful error message (Contact 
 the developer of this screen saver for a newer version.).  Do you know if 
 there's any way to get a better idea of what's going wrong?  As far as I can 
 tell, Console.app doesn't have any useful output on this problem.
 
 Thanks,
 Stuart
 
 
 

___
Pythonmac-SIG maillist  -  Pythonmac-SIG@python.org
http://mail.python.org/mailman/listinfo/pythonmac-sig
unsubscribe: http://mail.python.org/mailman/options/Pythonmac-SIG


Re: [Pythonmac-SIG] PyObjC ScreenSaver on 10.7

2012-12-26 Thread Berg, Stuart
Hi Ronald,

Still trying to crack this nut….

If I open the screensaver from the command line using the System Preferences 
app, I get this error.  It doesn't seem to happen with other screensavers (e.g. 
if I build the original (objective-c) SillyBalls screensaver, there are no 
errors.

$ /Applications/System\ Preferences.app/Contents/MacOS/System\ Preferences 
dist/SillyBalls.saver
System Preferences(7983,0x7fff7e816960) malloc: reference count underflow for 
0x4003b38e0, break on auto_refcount_underflow_error to debug.
System Preferences(7983,0x7fff7e816960) malloc: reference count underflow for 
0x400352b80, break on auto_refcount_underflow_error to debug.

Unfortunately, I'm a little out of my comfort-zone here.  Could this error be 
causing my problem?  Here's a log of a gdb session showing the backtrace at the 
site of the refcount error.  (Note the br command before the run command.)

(By the way, if you try this yourself, ignore any invalid frame buffer 
operation errors you may see, which are probably coming from the built-in 
Flurry screensaver.)

Thanks again for any ideas you've got…
Stuart

$ gdb --args /Applications/System\ Preferences.app/Contents/MacOS/System\ 
Preferences dist/SillyBalls.saver
GNU gdb 6.3.50-20050815 (Apple version gdb-1822) (Sun Aug  5 03:00:42 UTC 2012)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type show copying to see the conditions.
There is absolutely no warranty for GDB.  Type show warranty for details.
This GDB was configured as x86_64-apple-darwin...Reading symbols for shared 
libraries . done

(gdb) br auto_refcount_underflow_error
Function auto_refcount_underflow_error not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (auto_refcount_underflow_error) pending.

(gdb) run
Starting program: /Applications/System Preferences.app/Contents/MacOS/System 
Preferences dist/SillyBalls.saver
Reading symbols for shared libraries 

 done
Breakpoint 1 at 0x7fff9766d0c4
Pending breakpoint 1 - auto_refcount_underflow_error resolved
Reading symbols for shared libraries . done
Reading symbols for shared libraries . done
Reading symbols for shared libraries . done
Reading symbols for shared libraries . done
Reading symbols for shared libraries . done
Reading symbols for shared libraries . done
Reading symbols for shared libraries . done
Reading symbols for shared libraries . done
Reading symbols for shared libraries . done
Reading symbols for shared libraries . done
Reading symbols for shared libraries . done
Reading symbols for shared libraries . done
Reading symbols for shared libraries . done
Reading symbols for shared libraries .. done
Reading symbols for shared libraries .. done
Reading symbols for shared libraries ... done
Reading symbols for shared libraries . done
Reading symbols for shared libraries . done
Reading symbols for shared libraries . done
System Preferences(8058,0x7fff7e816960) malloc: reference count underflow for 
0x4003b8a20, break on auto_refcount_underflow_error to debug.

Breakpoint 1, 0x7fff9766d0c4 in auto_refcount_underflow_error ()

(gdb) backtrace
#0  0x7fff9766d0c4 in auto_refcount_underflow_error ()
#1  0x7fff976a19c7 in Auto::SubzoneBlockRef::dec_refcount_no_lock ()
#2  0x7fff976a19fa in Auto::SubzoneBlockRef::dec_refcount ()
#3  0x7fff9766821e in 
Auto::sieve_base::sieve_base_pointerAuto::auto_refcount_sieve1  ()
#4  0x7fff9766474c in auto_zone_release ()
#5  0x7fff8d86ea9a in CFRelease ()
#6  0x7fff8ffd91c7 in -[NSWindow _cancelPerformSelectors] ()
#7  0x7fff9043e716 in -[NSWindow finalize] ()
#8  0x7fff9464c57c in finalizeOneObject ()
#9  0x7fff9767a07e in Auto::foreach_block_do ()
#10 0x7fff9464c4ac in batchFinalize ()
#11 0x7fff9464b219 in batchFinalizeOnMainThread ()
#12 0x7fff9464afdc in objc_collect ()
#13 0x7fff8d901d65 in __NSArrayEnumerate ()
#14 0x7fff8fe67aeb in -[NSView(NSInternal) _updateTrackingAreas] ()
#15 0x7fff8d901cee in __NSArrayEnumerate ()
#16 0x7fff8fe67aeb in -[NSView(NSInternal) _updateTrackingAreas] ()
#17 0x7fff8d901cee in __NSArrayEnumerate ()
#18 0x7fff8fe67aeb in -[NSView(NSInternal) _updateTrackingAreas] ()
#19 0x7fff8d901cee in __NSArrayEnumerate ()
#20 0x7fff8fe67aeb in -[NSView(NSInternal) _updateTrackingAreas] ()
#21 0x7fff8d901cee in __NSArrayEnumerate ()
#22 0x7fff8fe67aeb in -[NSView(NSInternal) _updateTrackingAreas] ()
#23 0x7fff8d901cee in __NSArrayEnumerate ()
#24 0x7fff8fe67aeb in -[NSView(NSInternal) _updateTrackingAreas] ()
#25 0x7fff8d901cee in __NSArrayEnumerate ()
#26 0x7fff8fe67aeb in 

[Pythonmac-SIG] PyObjC ScreenSaver on 10.7

2012-12-25 Thread Berg, Stuart
Greetings,

I'm new to PyObjC, but it looks great.  I can run basic examples, but the 
ScreenSaver example in the docs doesn't seem to work on 10.7:
http://packages.python.org/pyobjc/examples/ScreenSaver/SillyBallsSaver/index.html

Someone on stack overflow seems to be having the same trouble as me:
http://stackoverflow.com/questions/7821589/compile-64-bit-mac-app-with-py2app

But I don't think that 32-bit vs. 64-bit is the issue. (I'm able to run 
non-screensaver examples…)

Does anyone know if the ScreenSaver framework pyobjc wrappers are still 
supported for OS 10.7?

By the way, I'm using Xcode 4.5.2.  I know that Xcode 4 threw a wrench in some 
aspects of pyobjc.  Is this an example of that?

Thanks,
Stuart


___
Pythonmac-SIG maillist  -  Pythonmac-SIG@python.org
http://mail.python.org/mailman/listinfo/pythonmac-sig
unsubscribe: http://mail.python.org/mailman/options/Pythonmac-SIG