Compare commits

..

9 Commits

Author SHA1 Message Date
Hubert Pham a88f867130 Add package maker for PyAudio 0.2.8. 2014-02-16 18:27:55 -08:00
Hubert Pham d89fe5a9ae Merge branch 'master' into bdist 2014-02-16 16:05:00 -08:00
Hubert Pham 09fdc77f3a Add support for Python 3.3. 2012-10-20 22:57:52 -04:00
Hubert Pham d1040e9636 Mac OS X: Add package maker for PyAudio 0.2.7. 2012-10-20 22:57:52 -04:00
Hubert Pham a956fd1974 Merge branch 'master' into bdist
Conflicts:
	Makefile
2012-10-20 21:43:43 -04:00
Hubert Pham 9a4ca96592 Update Mac OS X packaging. 2012-09-01 23:01:44 -04:00
Hubert Pham 7b88f611dd Binaries: for Mac OS X, set the minimum OS to 10.6. 2012-09-01 23:01:44 -04:00
Hubert Pham 6966b35cea Merge branch 'master' into bdist 2012-09-01 23:01:05 -04:00
Hubert Pham c7468753fe Add packaging for binary installers. 2010-09-01 15:28:41 -04:00
91 changed files with 2063 additions and 1816 deletions

View File

@ -1,50 +1,3 @@
2017-03-18 Hubert Pham <hubert@mit.edu>
PyAudio 0.2.11
- Fix use-after-free memory issue in callback handler.
Thanks to both Blaise Potard and Matthias Schaff for their patches!
- Fix docstring for get_output_latency().
Thanks to Timothy Port for finding the issue!
2017-01-10 Hubert Pham <hubert@mit.edu>
PyAudio 0.2.10
- Release the GIL during PortAudio I/O calls to avoid potential deadlock.
Thanks to Michael Graczyk for submitting a patch!
- Add a few automated unit tests.
2015-10-18 Hubert Pham <hubert@mit.edu>
PyAudio 0.2.9
- Fix overflow error handling logic for pa_read_stream.
Stream.read takes an additional parameter that specifies whether
an exception is raised on audio buffer overflow, for parity with
Stream.write. Includes relevant bug fixes in the C module logic.
Thanks to Tony Jacobson for submitting a patch!
- Fix IOError arguments.
IOError exceptions previously had values in the strerror and errno fields
swapped, which is now corrected.
Thanks to Sami Liedes for the report!
- Miscellaneous updates.
Python library surfaces issues with importing low-level C module.
Code formatting update.
Updates to examples for Python 3 compatibility.
2014-02-16 Hubert Pham <hubert@mit.edu>
PyAudio 0.2.8
@ -143,3 +96,4 @@
2008-02-12 Justin Mazzola Paluska <jmp@mit.edu>
- Initial version of debian packaging.

96
INSTALL
View File

@ -8,83 +8,81 @@ platforms:
* General UNIX Guide: (GNU/Linux, Mac OS X, Cygwin)
* Microsoft Windows (native)
Generally speaking, installation involves building the PortAudio v19
library and then building PyAudio.
Generally speaking, you must first install the PortAudio v19 library
before building PyAudio.
----------------------------------------------------------------------
General UNIX Guide (GNU/Linux, Mac OS X, Cygwin)
----------------------------------------------------------------------
1. Use a package manager to install PortAudio v19.
To build PortAudio from source instead, extract the source and run:
1. Build and install PortAudio, i.e.:
% ./configure
% make
% make install # you may need to be root
2. Extract PyAudio. To build and install, run:
(Or better yet, use your package manager to install PortAudio v19)
2. Extract PyAudio; to build and install, run:
% python setup.py install
----------------------------------------------------------------------
Microsoft Windows
----------------------------------------------------------------------
Targeting native Win32 Python will require either Microsoft Visual
Studio or MinGW (via Cygwin). Here are compilation hints for using
MinGW under the Cygwin build environment.
If you are targeting native Win32 Python, you will need either
Microsoft Visual Studio or MinGW (via Cygwin). Here are compilation
hints for using MinGW under the Cygwin build environment.
Note: I've only tested this under Cygwin's build environment. Your
mileage may vary in other environments (i.e., compiling PortAudio with
MinGW's compiler).
MinGW's compiler and environment).
1. Install cygwin's gcc and mingw packages.
(If you have instructions for building PyAudio using Visual Studio,
I'd love to hear about it.)
2. Download PortAudio and build. When running configure, be sure to
specify the MinGW compiler (via a CC environment variable) to
generate native Win32 binaries:
1. Download PortAudio to ./portaudio-v19 in this directory
and build. When running configure, be sure to use ``-mno-cygwin``
(under cygwin) to generate native Win32 binaries:
% CC=i686-w64-mingw32-gcc ./configure --enable-static --with-pic
% make
% cd ./portaudio-v19
% CFLAGS="-mno-cygwin" LDFLAGS="-mno-cygwin" ./configure
% make
% cd ..
3. Before building PyAudio, apply a few necessary modifications:
2. To build PyAudio, run (from this directory):
a. Python distutils calls ``gcc'' to build the C extension, so
temporarily move your MinGW compiler to /usr/bin/gcc.
b. Modify Python's Lib/distutils/cygwincompiler.py so that
mscvr900.dll is not included in the build. See:
http://bugs.python.org/issue16472.
Both Python 2.7 and Python 3+ require similar modification.
c. For some versions of Python (e.g., Python 2.7 32-bit), it is
necessary to further modify Python's
Lib/distutils/cygwincompiler.py and remove references to
-cmingw32, a flag which is no longer supported.
See http://hg.python.org/cpython/rev/6b89176f1be5/.
d. For some versions of 64-bit Python 3 (e.g., Python 3.2, 3.3, 3.4),
it is necessary to generate .a archive of the Python DLL.
See https://bugs.python.org/issue20785. Example for Python 3.4:
% cd /path/to/Python34-x64/libs/
% gendef /path/to/Windows/System32/python34.dll
% dlltool --as-flags=--64 -m i386:x64-64 -k --output-lib libpython34.a \
--input-def python34.def
4. To build PyAudio, run:
% PORTAUDIO_PATH=/path/to/portaudio_tree /path/to/win/python \
setup.py build --static-link -cmingw32
% python setup.py build --static-link -cmingw32
Be sure to invoke the native Win32 python rather than cygwin's
python. The --static-link option statically links in the PortAudio
library to the PyAudio module.
library to the PyAudio module, which is probably the best way to go
on Windows.
5. To install PyAudio:
From: http://boodebr.org/main/python/build-windows-extensions
% python setup.py install --skip-build
Update: 2008-09-10
Or create a Python wheel and install using pip.
Recent versions of Cygwin binutils have version numbers that are
breaking the version number parsing, resulting in errors like:
ValueError: invalid version number '2.18.50.20080625'
To fix this, edit distutils/version.py. At line 100, replace:
version_re = re.compile(r'^(\d+) \. (\d+) (\. (\d+))? ([ab](\d+))?$',
re.VERBOSE)
with
version_re = re.compile(r'^(\d+) \. (\d+) (\. (\d+))? (\. (\d+))?$',
re.VERBOSE)
3. To install PyAudio:
% python setup.py install --skip-build
The --skip-build option prevents Python from searching your system
for Visual Studio and the .NET framework.

View File

@ -1,5 +1,5 @@
include src/*.c src/*.h src/*.py
include Makefile CHANGELOG INSTALL MANIFEST.in
recursive-include examples *.py
recursive-include tests *.py
recursive-include test *.py *.c
graft docs
graft sphinx

View File

@ -2,7 +2,7 @@
.PHONY: docs clean build
VERSION := 0.2.11
VERSION := 0.2.8
PYTHON ?= python
BUILD_ARGS ?=
SPHINX ?= sphinx-build
@ -11,8 +11,7 @@ PYTHON_BUILD_DIR:=$(shell $(PYTHON) -c "import distutils.util; import sys; print
BUILD_DIR:=lib.$(PYTHON_BUILD_DIR)
BUILD_STAMP:=$(BUILD_DIR)/build
SRCFILES := src/*.c src/*.h src/*.py
EXAMPLES := examples/*.py
TESTS := tests/*.py
EXAMPLES := test/*.py
what:
@echo "make targets:"
@ -44,5 +43,7 @@ docs: build
######################################################################
# Source Tarball
######################################################################
tarball: $(SRCFILES) $(EXAMPLES) $(TESTS) MANIFEST.in
tarball: docs $(SRCFILES) $(EXAMPLES) MANIFEST.in
@$(PYTHON) setup.py sdist
include bdist.mk

5
README
View File

@ -1,5 +1,5 @@
======================================================================
PyAudio v0.2.12: Python Bindings for PortAudio.
PyAudio v0.2.8: Python Bindings for PortAudio.
======================================================================
See: http://people.csail.mit.edu/hubert/pyaudio/
@ -14,7 +14,7 @@ See INSTALL for compilation hints.
PyAudio : Python Bindings for PortAudio.
Copyright (c) 2006 Hubert Pham
Copyright (c) 2006-2014 Hubert Pham
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@ -36,3 +36,4 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
======================================================================

208
bdist.mk Normal file
View File

@ -0,0 +1,208 @@
distclean: clean
@rm -rf $(PYAUDIODIR)/PyAudio.egg-info
######################################################################
# Binary Distribution
######################################################################
PYAUDIODIR := src
BUILDDIR := build
DISTDIR := dist
PACKAGINGDIR := packaging
OUTPUT := $(DISTDIR)
PORTAUDIODIR ?= portaudio-v19
SRCFILES = $(addprefix $(PYAUDIODIR)/,\
_portaudiomodule.c \
_portaudiomodule.h \
pyaudio.py) \
setup.py
# windows / mingw
WIN32_PYTHON26 := /cygdrive/c/Python26/python.exe
WIN32_PYTHON27 := /cygdrive/c/Python27/python.exe
WIN32_PYTHON32 := /cygdrive/c/Python32/python.exe
WIN32_PYTHON33 := /cygdrive/c/Python33/python.exe
# distribution output:
WIN32_PKG := PyAudio-$(VERSION).win32.exe
WIN32_PYTHON26_PKG := $(OUTPUT)/pyaudio-$(VERSION).py26.exe
WIN32_PYTHON27_PKG := $(OUTPUT)/pyaudio-$(VERSION).py27.exe
WIN32_PYTHON32_PKG := $(OUTPUT)/pyaudio-$(VERSION).py32.exe
WIN32_PYTHON33_PKG := $(OUTPUT)/pyaudio-$(VERSION).py33.exe
# mac os x:
CLEAN_MPKG := $(PACKAGINGDIR)/remove-macosx-mpkg-rules.py
SYS_PYTHON26_DIR := /System/Library/Frameworks/Python.framework/Versions/2.6/
SYS_PYTHON27_DIR := /System/Library/Frameworks/Python.framework/Versions/2.7/
MAC_PYTHON27_DIR := /Library/Frameworks/Python.framework/Versions/2.7/
MAC_PYTHON32_DIR := /Library/Frameworks/Python.framework/Versions/3.2/
MAC_PYTHON33_DIR := /Library/Frameworks/Python.framework/Versions/3.3/
# targets
SYS_PYTHON26_PKG := $(OUTPUT)/PyAudio-$(VERSION)-sys-py2.6-macosx10.9.mpkg
SYS_PYTHON27_PKG := $(OUTPUT)/PyAudio-$(VERSION)-sys-py2.7-macosx10.9.mpkg
MAC_PYTHON27_PKG := $(OUTPUT)/PyAudio-$(VERSION)-mac-py2.7-macosx10.9.mpkg
MAC_PYTHON32_PKG := $(OUTPUT)/PyAudio-$(VERSION)-mac-py3.2-macosx10.9.mpkg
MAC_PYTHON33_PKG := $(OUTPUT)/PyAudio-$(VERSION)-mac-py3.3-macosx10.9.mpkg
# meta package containing all installers
MPKG_INSTALLER := $(OUTPUT)/pyaudio-$(VERSION).mpkg
PACKAGEMAKER := /Applications/Xcode.app/Contents/Applications/PackageMaker.app/Contents/MacOS/PackageMaker
PACKAGEDOC := packaging/pyaudio-$(VERSION)-mpkg.pmdoc
VOLNAME_FILENAME := pyaudio-$(VERSION)
VOLNAME := PyAudio\ $(VERSION)
DS_STORE := DS_Store-$(VERSION)
# add 20480 sectors (~10MB) for safety; we'll shrink it later
SECTORS = `du -s $(MPKG_INSTALLER) | awk '{print $$1 + 20480}'`
HDIUTIL = hdiutil
MAC_SNAKEY = snakey.tif
# final dmg:
DMG := $(DISTDIR)/$(VOLNAME_FILENAME).dmg
######################################################################
# Mac OS X
######################################################################
$(MAC_PYTHON27_PKG): PYTHON_DIR=$(MAC_PYTHON27_DIR)
$(MAC_PYTHON27_PKG): BDIST_MPKG_DIR=$(PYTHON_DIR)/bin
$(MAC_PYTHON27_PKG): PYTHON=python
$(MAC_PYTHON27_PKG): CC=/usr/bin/gcc
$(MAC_PYTHON27_PKG):
$(call _build_mac_package,$@)
$(MAC_PYTHON32_PKG): PYTHON_DIR=$(MAC_PYTHON32_DIR)
$(MAC_PYTHON32_PKG): BDIST_MPKG_DIR=$(PYTHON_DIR)/bin
$(MAC_PYTHON32_PKG): PYTHON=python3.2
$(MAC_PYTHON32_PKG): CC=/usr/bin/gcc
$(MAC_PYTHON32_PKG):
$(call _build_mac_package,$@)
$(MAC_PYTHON33_PKG): PYTHON_DIR=$(MAC_PYTHON33_DIR)
$(MAC_PYTHON33_PKG): BDIST_MPKG_DIR=$(PYTHON_DIR)/bin
$(MAC_PYTHON33_PKG): PYTHON=python3.3
$(MAC_PYTHON33_PKG): CC=/usr/bin/gcc
$(MAC_PYTHON33_PKG):
$(call _build_mac_package,$@)
$(SYS_PYTHON26_PKG): PYTHON_DIR=$(SYS_PYTHON26_DIR)
$(SYS_PYTHON26_PKG): BDIST_MPKG_DIR=$(PYTHON_DIR)/Extras/bin/
$(SYS_PYTHON26_PKG): CC=/usr/bin/gcc
$(SYS_PYTHON26_PKG): PYTHON=python
$(SYS_PYTHON26_PKG):
$(call _build_mac_package,$@)
$(call _fix_bundle_id,$@)
$(SYS_PYTHON27_PKG): PYTHON_DIR=$(SYS_PYTHON27_DIR)
$(SYS_PYTHON27_PKG): BDIST_MPKG_DIR=$(PYTHON_DIR)/Extras/bin/
$(SYS_PYTHON27_PKG): PYTHON=python
$(SYS_PYTHON27_PKG): CC=/usr/bin/gcc
$(SYS_PYTHON27_PKG):
$(call _build_mac_package,$@)
$(call _fix_bundle_id,$@)
_build_mac_package = \
SYSROOT_PATH=$(SYSROOT_PATH) \
PORTAUDIO_PATH=$(PORTAUDIODIR) \
$(PYTHON_DIR)/bin/$(PYTHON) setup.py build --static-link && \
$(BDIST_MPKG_DIR)/bdist_mpkg && \
sleep 2 && \
mv $(DISTDIR)/$(notdir $(subst -mac-,-,$(subst -sys-,-,$(1)))) \
$(1) && \
$(PYTHON_DIR)/bin/$(PYTHON) $(CLEAN_MPKG) -i \
$(1)/Contents/Packages/PyAudio-platlib-$(VERSION)-*/Contents/Info.plist -o $(1)/Contents/Packages/PyAudio-platlib-$(VERSION)-*/Contents/Info.plist
# Change the default system python bundle ID to include .systemdefault
# so as to not conflict with the MacPython bundles (they are
# identically named). PackageMaker will fail in mysterious ways if
# bundle IDs are not unique.
_fix_bundle_id = \
sed -i .backup -e 's/org\.pythonmac/org\.pythonmac\.systemdefault/g' \
$(1)/Contents/Packages/PyAudio-platlib-$(VERSION)-*/Contents/Info.plist
$(MPKG_INSTALLER): $(OUTPUT) $(SYS_PYTHON26_PKG) \
$(SYS_PYTHON27_PKG) $(MAC_PYTHON27_PKG) \
$(MAC_PYTHON32_PKG) $(MAC_PYTHON33_PKG)
@echo "Making Meta Package"
@$(PACKAGEMAKER) --doc $(PACKAGEDOC) --out $(MPKG_INSTALLER)
$(DMG): $(MPKG_INSTALLER)
@rm -f $(OUTPUT)/$(VOLNAME_FILENAME).dmg
@echo "Creating a DMG with $(SECTORS) sectors"
@$(HDIUTIL) create -sectors $(SECTORS) -fs HFS+ \
-volname $(VOLNAME) $(OUTPUT)/$(VOLNAME_FILENAME).dmg
@$(HDIUTIL) attach $(OUTPUT)/$(VOLNAME_FILENAME).dmg
@echo "Copying Data"
@mkdir /Volumes/$(VOLNAME)/.packaging
@cp $(PACKAGINGDIR)/$(MAC_SNAKEY) \
/Volumes/$(VOLNAME)/.packaging/$(MAC_SNAKEY)
@cp -r $(MPKG_INSTALLER) /Volumes/$(VOLNAME)/Install\ PyAudio.mpkg
@SetFile -a E /Volumes/$(VOLNAME)/Install\ PyAudio.mpkg
@cat $(PACKAGINGDIR)/setup_dmg | osascript
@echo "Done Copying"
@$(HDIUTIL) detach /Volumes/$(VOLNAME)
cp $(OUTPUT)/$(VOLNAME_FILENAME).dmg $(OUTPUT)/$(VOLNAME_FILENAME).rw.dmg
@echo "Resizing DMG"
@$(HDIUTIL) resize -sectors \
`$(HDIUTIL) resize $(OUTPUT)/$(VOLNAME_FILENAME).dmg | awk '{print $$1}'` $(OUTPUT)/$(VOLNAME_FILENAME).dmg
@echo "Compressing DMG"
@$(HDIUTIL) convert -imagekey zlib-level=9 -format UDZO \
$(OUTPUT)/$(VOLNAME_FILENAME).dmg \
-o $(OUTPUT)/$(VOLNAME_FILENAME).tmp.dmg
@mv $(OUTPUT)/$(VOLNAME_FILENAME).tmp.dmg \
$(OUTPUT)/$(VOLNAME_FILENAME).dmg
macosx: $(DMG)
######################################################################
# Win32
######################################################################
$(WIN32_PYTHON26_PKG): $(SRCFILES)
$(WIN32_PYTHON26_PKG): PYTHON=$(WIN32_PYTHON26)
$(WIN32_PYTHON26_PKG):
$(call _build_win_package,$@)
$(WIN32_PYTHON27_PKG): $(SRCFILES)
$(WIN32_PYTHON27_PKG): PYTHON=$(WIN32_PYTHON27)
$(WIN32_PYTHON27_PKG):
$(call _build_win_package,$@)
$(WIN32_PYTHON32_PKG): $(SRCFILES)
$(WIN32_PYTHON32_PKG): PYTHON=$(WIN32_PYTHON32)
$(WIN32_PYTHON32_PKG):
$(call _build_win_package,$@)
$(WIN32_PYTHON33_PKG): $(SRCFILES)
$(WIN32_PYTHON33_PKG): PYTHON=$(WIN32_PYTHON33)
$(WIN32_PYTHON33_PKG):
$(call _build_win_package,$@)
_build_win_package = \
PACKAGING_PATH=$(PACKAGINGDIR) \
PORTAUDIO_PATH=$(PORTAUDIODIR) \
$(PYTHON) setup.py build -cmingw32 --static-link && \
$(PYTHON) setup.py bdist_wininst --skip-build -t PyAudio \
--bitmap=$(PACKAGINGDIR)/win-background.bmp && \
mv $(DISTDIR)/$(WIN32_PKG) $(1)
win32: $(OUTPUT) $(WIN32_PYTHON26_PKG) $(WIN32_PYTHON27_PKG) \
$(WIN32_PYTHON32_PKG) $(WIN32_PYTHON33_PKG)
$(OUTPUT):
@mkdir -p $(OUTPUT)

BIN
packaging/DS_Store-0.2.0 Normal file

Binary file not shown.

BIN
packaging/DS_Store-0.2.3 Normal file

Binary file not shown.

BIN
packaging/DS_Store-0.2.4 Normal file

Binary file not shown.

1
packaging/postinst.py Executable file
View File

@ -0,0 +1 @@
print "Installation Completed Successfully."

View File

@ -0,0 +1 @@
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.0-py2.5.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>

View File

@ -0,0 +1 @@
<pkgref spec="1.12" uuid="8532508D-DE23-450B-81FD-48CBF54DB99A"><config><identifier>csail.mit.edu.pyaudio020.pyaudioplatlib020py25macosx105.pkg</identifier><version>0.2</version><description/><post-install type="none"/><requireAuthorization/><installTo mod="true">/Library/Python/2.5/site-packages</installTo><flags/><packageStore type="internal"/><mod>parent</mod><mod>version</mod><mod>installTo.path</mod><mod>postInstall</mod><mod>installTo</mod></config><contents><file-list>01pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath>/Users/hubert/projects/portaudio/pyaudio-0.2.0/dist/PyAudio-0.2.0-sys-py2.5-macosx10.5.mpkg/Contents/Packages/PyAudio-platlib-0.2.0-py2.5-macosx10.5.pkg</packagePath><title>PyAudio-platlib-0.2.0-py2.5-macosx10.5</title></extra></pkgref>

View File

@ -0,0 +1 @@
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.0-py2.5.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>

View File

@ -0,0 +1 @@
<pkgref spec="1.12" uuid="9ECD1352-4655-4CD7-8EAB-64DC197FF285"><config><identifier>csail.mit.edu.pyaudio020.pyaudioplatlib020py25macosx105-1.pkg</identifier><version>0.2</version><description/><post-install type="none"/><requireAuthorization/><installTo mod="true">/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages</installTo><flags/><packageStore type="internal"/><mod>parent</mod><mod>version</mod><mod>installTo.path</mod><mod>postInstall</mod><mod>installTo</mod></config><contents><file-list>02pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath>/Users/hubert/projects/portaudio/pyaudio-0.2.0/dist/PyAudio-0.2.0-mac-py2.5-macosx10.5.mpkg/Contents/Packages/PyAudio-platlib-0.2.0-py2.5-macosx10.5.pkg</packagePath><title>PyAudio-platlib-0.2.0-py2.5-macosx10.5</title></extra></pkgref>

View File

@ -0,0 +1 @@
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.0-py2.4.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>

View File

@ -0,0 +1 @@
<pkgref spec="1.12" uuid="CEDEDA2F-4FF3-4E48-8D33-26E2B7026233"><config><identifier>csail.mit.edu.pyaudio020.pyaudioplatlib020py24macosx105.pkg</identifier><version>0.2</version><description/><post-install type="none"/><requireAuthorization/><installTo mod="true">/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages</installTo><flags/><packageStore type="internal"/><mod>parent</mod><mod>version</mod><mod>installTo.path</mod><mod>postInstall</mod><mod>installTo</mod></config><contents><file-list>03pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath>/Users/hubert/projects/portaudio/pyaudio-0.2.0/dist/PyAudio-0.2.0-py2.4-macosx10.5.mpkg/Contents/Packages/PyAudio-platlib-0.2.0-py2.4-macosx10.5.pkg</packagePath><title>PyAudio-platlib-0.2.0-py2.4-macosx10.5</title></extra></pkgref>

View File

@ -0,0 +1,57 @@
<pkmkdoc spec="1.12"><properties><title>PyAudio 0.2.0</title><organization>csail.mit.edu</organization><userSees ui="both"/><min-target os="2"/><domain system="true"/></properties><distribution><versions min-spec="1.000000"/><scripts></scripts></distribution><description>PyAudio v0.2.0: Python Bindings for PortAudio.
Copyright (c) 2006-2008 Hubert Pham
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY
OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
USE OR OTHER DEALINGS IN THE SOFTWARE.
</description><contents><choice title="PyAudio 0.2.0 for System Python 2.5" id="choice8" description="System Python 2.5 is installed by default in Leopard." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="csail.mit.edu.pyaudio020.pyaudioplatlib020py25macosx105.pkg"/></choice><choice title="PyAudio 0.2.0 for MacPython 2.5" id="choice11" description="MacPython 2.5 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/.
" starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="csail.mit.edu.pyaudio020.pyaudioplatlib020py25macosx105-1.pkg"/></choice><choice title="PyAudio 0.2.0 for MacPython 2.4" id="choice12" description="MacPython 2.4 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="csail.mit.edu.pyaudio020.pyaudioplatlib020py24macosx105.pkg"/></choice></contents><resources bg-scale="none" bg-align="topleft"><locale lang="en"><resource mime-type="text/rtf" kind="embedded" type="license"><![CDATA[{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf270
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
\f0\fs24 \cf0 PyAudio v0.2.0: Python Bindings for PortAudio.\
\
Copyright (c) 2006-2008 Hubert Pham\
\
Permission is hereby granted, free of charge, to any person obtaining\
a copy of this software and associated documentation files (the\
"Software"), to deal in the Software without restriction, including\
without limitation the rights to use, copy, modify, merge, publish,\
distribute, sublicense, and/or sell copies of the Software, and to\
permit persons to whom the Software is furnished to do so, subject to\
the following conditions:\
\
The above copyright notice and this permission notice shall be\
included in all copies or substantial portions of the Software.\
\
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY\
OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT\
LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\
FITNESS FOR A PARTICULAR PURPOSE AND\
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS\
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\
USE OR OTHER DEALINGS IN THE SOFTWARE.\
}]]></resource></locale></resources><flags/><item type="pkgref">01pyaudio.xml</item><item type="pkgref">02pyaudio.xml</item><item type="pkgref">03pyaudio.xml</item><mod>properties.customizeOption</mod><mod>properties.title</mod><mod>description</mod><mod>properties.systemDomain</mod><mod>properties.anywhereDomain</mod></pkmkdoc>

View File

@ -0,0 +1 @@
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.3-py2.4.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>

View File

@ -0,0 +1 @@
<pkgref spec="1.12" uuid="06B5F833-4169-4987-921F-FC888D569E7F"><config><identifier>csail.mit.edu.pyaudio023.pyaudioplatlib023py24macosx105.pkg</identifier><version></version><description></description><post-install type="none"/><requireAuthorization/><installTo mod="true">/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages</installTo><flags/><packageStore type="internal"></packageStore><mod>parent</mod><mod>installTo.path</mod><mod>postInstall</mod><mod>installTo</mod></config><contents><file-list>01pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath mod="true">/Users/hubert/sync/projects/pyaudio/pyaudio/pyaudio/dist/PyAudio-0.2.3-mac-py2.4-macosx10.5.mpkg/Contents/Packages/PyAudio-platlib-0.2.3-py2.4-macosx10.5.pkg</packagePath><title>PyAudio-platlib-0.2.3-py2.4-macosx10.5</title></extra></pkgref>

View File

@ -0,0 +1 @@
<pkg-contents spec="1.12"/>

View File

@ -0,0 +1 @@
<pkgref spec="1.12" uuid="E6536ADE-3652-4893-9929-7A3FAD8957F2"><config><identifier>csail.mit.edu.pyaudio023.pyaudioplatlib023py25macosx105.pkg</identifier><version></version><description></description><post-install type="none"/><requireAuthorization/><installTo mod="true">/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages</installTo><flags/><packageStore type="internal"></packageStore><mod>parent</mod><mod>requireAuthorization</mod><mod>installTo.path</mod><mod>postInstall</mod><mod>installTo</mod></config><extra><packagePath>/Users/hubert/sync/projects/pyaudio/pyaudio/pyaudio/dist/PyAudio-0.2.3-mac-py2.5-macosx10.5.mpkg/Contents/Packages/PyAudio-platlib-0.2.3-py2.5-macosx10.5.pkg</packagePath><title>PyAudio-platlib-0.2.3-py2.5-macosx10.5</title></extra></pkgref>

View File

@ -0,0 +1 @@
<pkg-contents spec="1.12"/>

View File

@ -0,0 +1 @@
<pkgref spec="1.12" uuid="14793237-1CBC-4469-AF98-A1D5B7586FFE"><config><identifier>csail.mit.edu.pyaudio023.pyaudioplatlib023py25macosx105-1.pkg</identifier><version></version><description></description><post-install type="none"/><requireAuthorization/><installTo mod="true">/Library/Python/2.5/site-packages/</installTo><flags/><packageStore type="internal"></packageStore><mod>parent</mod><mod>installTo.path</mod><mod>postInstall</mod><mod>installTo</mod></config><extra><packagePath>/Users/hubert/sync/projects/pyaudio/pyaudio/pyaudio/dist/PyAudio-0.2.3-sys-py2.5-macosx10.5.mpkg/Contents/Packages/PyAudio-platlib-0.2.3-py2.5-macosx10.5.pkg</packagePath><title>PyAudio-platlib-0.2.3-py2.5-macosx10.5</title></extra></pkgref>

View File

@ -0,0 +1 @@
<pkg-contents spec="1.12"/>

View File

@ -0,0 +1 @@
<pkgref spec="1.12" uuid="30D5A341-97B1-46E5-946A-D62472C212A9"><config><identifier>csail.mit.edu.pyaudio023.pyaudioplatlib023py26macosx105.pkg</identifier><version></version><description></description><post-install type="none"/><requireAuthorization/><installTo mod="true">/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages</installTo><flags/><packageStore type="internal"></packageStore><mod>parent</mod><mod>installTo.path</mod><mod>postInstall</mod><mod>installTo</mod></config><extra><packagePath>/Users/hubert/sync/projects/pyaudio/pyaudio/pyaudio/dist/PyAudio-0.2.3-mac-py2.6-macosx10.5.mpkg/Contents/Packages/PyAudio-platlib-0.2.3-py2.6-macosx10.5.pkg</packagePath><title>PyAudio-platlib-0.2.3-py2.6-macosx10.5</title></extra></pkgref>

View File

@ -0,0 +1,56 @@
<pkmkdoc spec="1.12"><properties><title>PyAudio 0.2.3</title><build>/Users/hubert/sync/projects/pyaudio/pyaudio/pyaudio/dist/PyAudio 0.2.3.mpkg</build><organization>csail.mit.edu</organization><userSees ui="both"/><min-target os="2"/><domain system="true"/></properties><distribution><versions min-spec="1.000000"/><scripts></scripts></distribution><description>PyAudio v0.2.3: Python Bindings for PortAudio.
Copyright (c) 2006-2008 Hubert Pham
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY
OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
USE OR OTHER DEALINGS IN THE SOFTWARE.
</description><contents><choice title="PyAudio 0.2.3 for MacPython 2.4" id="choice2" description="MacPython 2.4 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="csail.mit.edu.pyaudio023.pyaudioplatlib023py24macosx105.pkg"/></choice><choice title="PyAudio 0.2.3 for MacPython 2.5" id="choice3" description="MacPython 2.5 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/. " starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="csail.mit.edu.pyaudio023.pyaudioplatlib023py25macosx105.pkg"/></choice><choice title="PyAudio 0.2.3 for System Python 2.5" id="choice1" description="System Python 2.5 is installed by default in Leopard." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="csail.mit.edu.pyaudio023.pyaudioplatlib023py25macosx105-1.pkg"/></choice><choice title="PyAudio 0.2.3 for MacPython 2.6" id="choice4" description="MacPython 2.6 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="csail.mit.edu.pyaudio023.pyaudioplatlib023py26macosx105.pkg"/></choice></contents><resources bg-scale="none" bg-align="topleft"><locale lang="en"><resource mime-type="text/rtf" kind="embedded" type="license"><![CDATA[{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf350
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
\f0\fs24 \cf0 PyAudio v0.2.3: Python Bindings for PortAudio.\
\
Copyright (c) 2006-2008 Hubert Pham\
\
Permission is hereby granted, free of charge, to any person obtaining\
a copy of this software and associated documentation files (the\
"Software"), to deal in the Software without restriction, including\
without limitation the rights to use, copy, modify, merge, publish,\
distribute, sublicense, and/or sell copies of the Software, and to\
permit persons to whom the Software is furnished to do so, subject to\
the following conditions:\
\
The above copyright notice and this permission notice shall be\
included in all copies or substantial portions of the Software.\
\
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY\
OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT\
LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\
FITNESS FOR A PARTICULAR PURPOSE AND\
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS\
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\
USE OR OTHER DEALINGS IN THE SOFTWARE.\
}]]></resource></locale></resources><flags/><item type="pkgref">01pyaudio.xml</item><item type="pkgref">02pyaudio.xml</item><item type="pkgref">03pyaudio.xml</item><item type="pkgref">04pyaudio.xml</item><mod>properties.customizeOption</mod><mod>properties.title</mod><mod>description</mod><mod>properties.systemDomain</mod><mod>properties.anywhereDomain</mod></pkmkdoc>

View File

@ -0,0 +1 @@
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.4-py2.4.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/><mod>owner</mod></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"><mod>owner</mod></f><f n="pyaudio.py" o="hubert" g="admin" p="33204"><mod>owner</mod></f><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"><mod>owner</mod></f><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"><mod>owner</mod></f><mod>name</mod><mod>owner</mod></f></pkg-contents>

View File

@ -0,0 +1,2 @@
<pkgref spec="1.12" uuid="D53D1F32-3F4B-4186-9517-59CC7852B3F9"><config><identifier>org.pythonmac.PyAudio-platlib-py2.4-macosx10.6</identifier><version>0.2.4</version><description>(Required) Python modules, extensions, and packages
Installed to: /Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>installTo</mod><mod>parent</mod></config><scripts><scripts-dir>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.4-mac-py2.4-macosx10.6.mpkg/Contents/Packages/PyAudio-platlib-0.2.4-py2.4-macosx10.6.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>01pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath relative="true">../dist/PyAudio-0.2.4-mac-py2.4-macosx10.6.mpkg/Contents/Packages/PyAudio-platlib-0.2.4-py2.4-macosx10.6.pkg</packagePath><title>PyAudio-platlib-py2.4-macosx10.6</title></extra></pkgref>

View File

@ -0,0 +1 @@
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.4-py2.5.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/><mod>owner</mod></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"><mod>owner</mod></f><f n="pyaudio.py" o="hubert" g="admin" p="33204"><mod>owner</mod></f><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"><mod>owner</mod></f><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"><mod>owner</mod></f><mod>name</mod><mod>owner</mod></f></pkg-contents>

View File

@ -0,0 +1,2 @@
<pkgref spec="1.12" uuid="5FDD7FD2-50D0-491A-8B1C-2CD5774A084B"><config><identifier>org.pythonmac.PyAudio-platlib-py2.5-macosx10.6</identifier><version>0.2.4</version><description>(Required) Python modules, extensions, and packages
Installed to: /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>installTo</mod><mod>parent</mod></config><scripts><scripts-dir>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.4-mac-py2.5-macosx10.6.mpkg/Contents/Packages/PyAudio-platlib-0.2.4-py2.5-macosx10.6.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>02pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath relative="true" mod="true">../dist/PyAudio-0.2.4-mac-py2.5-macosx10.6.mpkg/Contents/Packages/PyAudio-platlib-0.2.4-py2.5-macosx10.6.pkg</packagePath><title>PyAudio-platlib-py2.5-macosx10.6</title></extra></pkgref>

View File

@ -0,0 +1 @@
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.4-py2.6.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>

View File

@ -0,0 +1,2 @@
<pkgref spec="1.12" uuid="868766F0-6141-4AE8-8E10-FDFA9C1413E4"><config><identifier>org.pythonmac.PyAudio-platlib-py2.6-macosx10.6</identifier><version>0.2.4</version><description>(Required) Python modules, extensions, and packages
Installed to: /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>installTo</mod><mod>parent</mod></config><scripts><scripts-dir>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.4-mac-py2.6-macosx10.6.mpkg/Contents/Packages/PyAudio-platlib-0.2.4-py2.6-macosx10.6.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>03pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath relative="true" mod="true">../dist/PyAudio-0.2.4-mac-py2.6-macosx10.6.mpkg/Contents/Packages/PyAudio-platlib-0.2.4-py2.6-macosx10.6.pkg</packagePath><title>PyAudio-platlib-py2.6-macosx10.6</title></extra></pkgref>

View File

@ -0,0 +1 @@
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.4-py2.7.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>

View File

@ -0,0 +1,2 @@
<pkgref spec="1.12" uuid="B5E9CC07-7255-42CA-8AFC-A54CF28DF671"><config><identifier>org.pythonmac.PyAudio-platlib-py2.7-macosx10.6</identifier><version>0.2.4</version><description>(Required) Python modules, extensions, and packages
Installed to: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>installTo</mod><mod>parent</mod></config><scripts><scripts-dir>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.4-mac-py2.7-macosx10.6.mpkg/Contents/Packages/PyAudio-platlib-0.2.4-py2.7-macosx10.6.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>04pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath relative="true">../dist/PyAudio-0.2.4-mac-py2.7-macosx10.6.mpkg/Contents/Packages/PyAudio-platlib-0.2.4-py2.7-macosx10.6.pkg</packagePath><title>PyAudio-platlib-py2.7-macosx10.6</title></extra></pkgref>

View File

@ -0,0 +1 @@
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.4-py2.5.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>

View File

@ -0,0 +1,2 @@
<pkgref spec="1.12" uuid="97DF981A-2465-4CB8-8B1E-28B4F6EF99A9"><config><identifier>org.pythonmac.systemdefault.PyAudio-platlib-py2.5-macosx10.6</identifier><version>0.2.4</version><description>(Required) Python modules, extensions, and packages
Installed to: /Library/Python/2.5/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Python/2.5/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"/><mod>parent</mod><mod>installTo</mod></config><scripts><scripts-dir>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.4-sys-py2.5-macosx10.6.mpkg/Contents/Packages/PyAudio-platlib-0.2.4-py2.5-macosx10.6.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>05pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath relative="true">../dist/PyAudio-0.2.4-sys-py2.5-macosx10.6.mpkg/Contents/Packages/PyAudio-platlib-0.2.4-py2.5-macosx10.6.pkg</packagePath><title>PyAudio-platlib-py2.5-macosx10.6</title></extra></pkgref>

View File

@ -0,0 +1 @@
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.4-py2.6.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>

View File

@ -0,0 +1,2 @@
<pkgref spec="1.12" uuid="8F8BDBBA-CEA7-4816-8EEE-28C7B8AD7F77"><config><identifier>org.pythonmac.systemdefault.PyAudio-platlib-py2.6-macosx10.6</identifier><version>0.2.4</version><description>(Required) Python modules, extensions, and packages
Installed to: /Library/Python/2.6/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Python/2.6/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"/><mod>parent</mod><mod>installTo</mod></config><scripts><scripts-dir>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.4-sys-py2.6-macosx10.6.mpkg/Contents/Packages/PyAudio-platlib-0.2.4-py2.6-macosx10.6.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>06pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath relative="true">../dist/PyAudio-0.2.4-sys-py2.6-macosx10.6.mpkg/Contents/Packages/PyAudio-platlib-0.2.4-py2.6-macosx10.6.pkg</packagePath><title>PyAudio-platlib-py2.6-macosx10.6</title></extra></pkgref>

View File

@ -0,0 +1,56 @@
<pkmkdoc spec="1.12"><properties><title>PyAudio 0.2.4</title><organization>edu.mit.csail</organization><userSees ui="both"/><min-target os="2"/><domain system="true"/></properties><distribution><versions min-spec="1.000000"/><scripts></scripts></distribution><description>PyAudio v0.2.4: Python Bindings for PortAudio.
Copyright (c) 2006-2010 Hubert Pham
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY
OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
USE OR OTHER DEALINGS IN THE SOFTWARE.
</description><contents><choice title="PyAudio 0.2.4 for MacPython 2.4" id="choice14" description="MacPython 2.4 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.PyAudio-platlib-py2.4-macosx10.6"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/Library/Frameworks/Python.framework/Versions/2.4</file></requirement></choice-reqs></choice><choice title="PyAudio 0.2.4 for MacPython 2.5" id="choice15" description="MacPython 2.5 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.PyAudio-platlib-py2.5-macosx10.6"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/Library/Frameworks/Python.framework/Versions/2.5</file></requirement></choice-reqs></choice><choice title="PyAudio 0.2.4 for MacPython 2.6" id="choice16" description="MacPython 2.6 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.PyAudio-platlib-py2.6-macosx10.6"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/Library/Frameworks/Python.framework/Versions/2.6</file></requirement></choice-reqs></choice><choice title="PyAudio 0.2.4 for MacPython 2.7" id="choice17" description="MacPython 2.7 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.PyAudio-platlib-py2.7-macosx10.6"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/Library/Frameworks/Python.framework/Versions/2.7</file></requirement></choice-reqs></choice><choice title="PyAudio 0.2.4 for System Python 2.5" id="choice20" description="System Python 2.5 is installed by default in Mac OS X (Snow) Leopard." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.systemdefault.PyAudio-platlib-py2.5-macosx10.6"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/System/Library/Frameworks/Python.framework/Versions/2.5</file></requirement></choice-reqs></choice><choice title="PyAudio 0.2.4 for System Python 2.6" id="choice21" description="System Python 2.6 is installed by default in Mac OS X (Snow) Leopard." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.systemdefault.PyAudio-platlib-py2.6-macosx10.6"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/System/Library/Frameworks/Python.framework/Versions/2.6</file></requirement></choice-reqs></choice></contents><resources bg-scale="none" bg-align="topleft"><locale lang="en"><resource mime-type="text/rtf" kind="embedded" type="license"><![CDATA[{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
\f0\fs24 \cf0 PyAudio v0.2.4: Python Bindings for PortAudio.\
\
Copyright (c) 2006-2010 Hubert Pham\
\
Permission is hereby granted, free of charge, to any person obtaining\
a copy of this software and associated documentation files (the\
"Software"), to deal in the Software without restriction, including\
without limitation the rights to use, copy, modify, merge, publish,\
distribute, sublicense, and/or sell copies of the Software, and to\
permit persons to whom the Software is furnished to do so, subject to\
the following conditions:\
\
The above copyright notice and this permission notice shall be\
included in all copies or substantial portions of the Software.\
\
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY\
OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT\
LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\
FITNESS FOR A PARTICULAR PURPOSE AND\
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS\
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\
USE OR OTHER DEALINGS IN THE SOFTWARE.\
}]]></resource></locale></resources><flags/><item type="pkgref">01pyaudio.xml</item><item type="pkgref">02pyaudio.xml</item><item type="pkgref">03pyaudio.xml</item><item type="pkgref">04pyaudio.xml</item><item type="pkgref">05pyaudio.xml</item><item type="pkgref">06pyaudio.xml</item><mod>properties.title</mod><mod>properties.customizeOption</mod><mod>description</mod><mod>properties.anywhereDomain</mod><mod>properties.systemDomain</mod></pkmkdoc>

View File

@ -0,0 +1 @@
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.6-py3.2.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="__pycache__" o="hubert" g="admin" p="16893"><f n="pyaudio.cpython-32.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.cpython-32.pyo" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>

View File

@ -0,0 +1,2 @@
<pkgref spec="1.12" uuid="B0F9229A-B947-42C2-AD99-73BB6F3DF773"><config><identifier>org.pythonmac.PyAudio-platlib-py3.2-macosx10.8</identifier><version>0.2.6</version><description>(Required) Python modules, extensions, and packages
Installed to: /Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"/><mod>parent</mod><mod>installTo</mod></config><scripts><scripts-dir>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.6-mac-py3.2-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.6-py3.2-macosx10.8.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>01pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath relative="true">../dist/PyAudio-0.2.6-mac-py3.2-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.6-py3.2-macosx10.8.pkg</packagePath><title>PyAudio-platlib-py3.2-macosx10.8</title></extra></pkgref>

View File

@ -0,0 +1 @@
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.6-py2.7.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>

View File

@ -0,0 +1,2 @@
<pkgref spec="1.12" uuid="40ABE8F0-C9E3-4879-8026-68529E7211BB"><config><identifier>org.pythonmac.PyAudio-platlib-py2.7-macosx10.8</identifier><version>0.2.6</version><description>(Required) Python modules, extensions, and packages
Installed to: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"/><mod>parent</mod><mod>installTo</mod></config><scripts><scripts-dir>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.6-mac-py2.7-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.6-py2.7-macosx10.8.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>02pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath relative="true">../dist/PyAudio-0.2.6-mac-py2.7-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.6-py2.7-macosx10.8.pkg</packagePath><title>PyAudio-platlib-py2.7-macosx10.8</title></extra></pkgref>

View File

@ -0,0 +1 @@
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.6-py2.7.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>

View File

@ -0,0 +1,2 @@
<pkgref spec="1.12" uuid="E6650362-E54D-4405-871B-822EAD14D900"><config><identifier>org.pythonmac.systemdefault.PyAudio-platlib-py2.7-macosx10.8</identifier><version>0.2.6</version><description>(Required) Python modules, extensions, and packages
Installed to: /Library/Python/2.7/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Python/2.7/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"/><mod>parent</mod><mod>installTo</mod></config><scripts><scripts-dir>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.6-sys-py2.7-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.6-py2.7-macosx10.8.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>03pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath relative="true">../dist/PyAudio-0.2.6-sys-py2.7-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.6-py2.7-macosx10.8.pkg</packagePath><title>PyAudio-platlib-py2.7-macosx10.8</title></extra></pkgref>

View File

@ -0,0 +1 @@
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.6-py2.6.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>

View File

@ -0,0 +1,2 @@
<pkgref spec="1.12" uuid="DFE5FF62-448B-4C08-8DEA-87E81313A4AD"><config><identifier>org.pythonmac.systemdefault.PyAudio-platlib-py2.6-macosx10.8</identifier><version>0.2.6</version><description>(Required) Python modules, extensions, and packages
Installed to: /Library/Python/2.6/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Python/2.6/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"/><mod>parent</mod><mod>installTo</mod></config><scripts><scripts-dir>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.6-sys-py2.6-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.6-py2.6-macosx10.8.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>04pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath relative="true">../dist/PyAudio-0.2.6-sys-py2.6-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.6-py2.6-macosx10.8.pkg</packagePath><title>PyAudio-platlib-py2.6-macosx10.8</title></extra></pkgref>

View File

@ -0,0 +1,57 @@
<pkmkdoc spec="1.12"><properties><title>PyAudio 0.2.6</title><build>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/pyaudio-0.2.6.mpkg</build><organization>edu.mit.csail</organization><userSees ui="both"/><min-target os="2"/><domain system="true"/></properties><distribution><versions min-spec="1.000000"/><scripts></scripts></distribution><description>PyAudio v0.2.6: Python Bindings for PortAudio.
Copyright (c) 2006-2012 Hubert Pham
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY
OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
USE OR OTHER DEALINGS IN THE SOFTWARE.
</description><contents><choice title="PyAudio 0.2.6 for MacPython 3.2" id="choice22" description="MacPython 3.2 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.PyAudio-platlib-py3.2-macosx10.8"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/</file></requirement></choice-reqs></choice><choice title="PyAudio 0.2.6 for MacPython 2.7" id="choice23" description="MacPython 2.7 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/.
" starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.PyAudio-platlib-py2.7-macosx10.8"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/</file></requirement></choice-reqs></choice><choice title="PyAudio 0.2.6 for System Python 2.7" id="choice24" description="System Python 2.7 is installed by default in Mac OS X." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.systemdefault.PyAudio-platlib-py2.7-macosx10.8"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/</file></requirement></choice-reqs></choice><choice title="PyAudio 0.2.6 for System Python 2.6" id="choice25" description="System Python 2.6 is installed by default in Mac OS X." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.systemdefault.PyAudio-platlib-py2.6-macosx10.8"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/</file></requirement></choice-reqs></choice></contents><resources bg-scale="none" bg-align="topleft"><locale lang="en"><resource mime-type="text/rtf" kind="embedded" type="license"><![CDATA[{\rtf1\ansi\ansicpg1252\cocoartf1187
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
\f0\fs24 \cf0 PyAudio v0.2.6: Python Bindings for PortAudio.\
\
Copyright (c) 2006-2012 Hubert Pham\
\
Permission is hereby granted, free of charge, to any person obtaining\
a copy of this software and associated documentation files (the\
"Software"), to deal in the Software without restriction, including\
without limitation the rights to use, copy, modify, merge, publish,\
distribute, sublicense, and/or sell copies of the Software, and to\
permit persons to whom the Software is furnished to do so, subject to\
the following conditions:\
\
The above copyright notice and this permission notice shall be\
included in all copies or substantial portions of the Software.\
\
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY\
OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT\
LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\
FITNESS FOR A PARTICULAR PURPOSE AND\
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS\
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\
USE OR OTHER DEALINGS IN THE SOFTWARE.\
}]]></resource></locale></resources><flags/><item type="pkgref">01pyaudio.xml</item><item type="pkgref">02pyaudio.xml</item><item type="pkgref">03pyaudio.xml</item><item type="pkgref">04pyaudio.xml</item><mod>properties.title</mod><mod>properties.customizeOption</mod><mod>description</mod><mod>properties.anywhereDomain</mod><mod>properties.systemDomain</mod></pkmkdoc>

View File

@ -0,0 +1 @@
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.7-py3.2.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="__pycache__" o="hubert" g="admin" p="16893"><f n="pyaudio.cpython-32.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.cpython-32.pyo" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>

View File

@ -0,0 +1,2 @@
<pkgref spec="1.12" uuid="B0F9229A-B947-42C2-AD99-73BB6F3DF773"><config><identifier>org.pythonmac.PyAudio-platlib-py3.2-macosx10.8</identifier><version>0.2.7</version><description>(Required) Python modules, extensions, and packages
Installed to: /Library/Frameworks/Python.framework/Versions</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Frameworks/Python.framework/Versions</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>installTo</mod><mod>scripts.scriptsDirectoryPath.isRelativeType</mod><mod>parent</mod></config><scripts><scripts-dir relative="true">../dist/PyAudio-0.2.7-mac-py3.2-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.7-py3.2-macosx10.8.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>01pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath relative="true">../dist/PyAudio-0.2.7-mac-py3.2-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.7-py3.2-macosx10.8.pkg</packagePath><title>PyAudio-platlib-py3.2-macosx10.8</title></extra></pkgref>

View File

@ -0,0 +1 @@
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.7-py2.7.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>

View File

@ -0,0 +1,2 @@
<pkgref spec="1.12" uuid="40ABE8F0-C9E3-4879-8026-68529E7211BB"><config><identifier>org.pythonmac.PyAudio-platlib-py2.7-macosx10.8</identifier><version>0.2.7</version><description>(Required) Python modules, extensions, and packages
Installed to: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>installTo</mod><mod>scripts.scriptsDirectoryPath.isRelativeType</mod><mod>parent</mod></config><scripts><scripts-dir relative="true">../dist/PyAudio-0.2.7-mac-py2.7-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.7-py2.7-macosx10.8.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>02pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath relative="true">../dist/PyAudio-0.2.7-mac-py2.7-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.7-py2.7-macosx10.8.pkg</packagePath><title>PyAudio-platlib-py2.7-macosx10.8</title></extra></pkgref>

View File

@ -0,0 +1 @@
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.7-py2.7.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>

View File

@ -0,0 +1,2 @@
<pkgref spec="1.12" uuid="E6650362-E54D-4405-871B-822EAD14D900"><config><identifier>org.pythonmac.systemdefault.PyAudio-platlib-py2.7-macosx10.8</identifier><version>0.2.7</version><description>(Required) Python modules, extensions, and packages
Installed to: /Library/Python/2.7/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Python/2.7/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>installTo</mod><mod>scripts.scriptsDirectoryPath.isRelativeType</mod><mod>parent</mod></config><scripts><scripts-dir relative="true">../dist/PyAudio-0.2.7-sys-py2.7-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.7-py2.7-macosx10.8.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>03pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath relative="true">../dist/PyAudio-0.2.7-sys-py2.7-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.7-py2.7-macosx10.8.pkg</packagePath><title>PyAudio-platlib-py2.7-macosx10.8</title></extra></pkgref>

View File

@ -0,0 +1 @@
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.7-py2.6.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>

View File

@ -0,0 +1,2 @@
<pkgref spec="1.12" uuid="DFE5FF62-448B-4C08-8DEA-87E81313A4AD"><config><identifier>org.pythonmac.systemdefault.PyAudio-platlib-py2.6-macosx10.8</identifier><version>0.2.7</version><description>(Required) Python modules, extensions, and packages
Installed to: /Library/Python/2.6/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Python/2.6/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>installTo</mod><mod>scripts.scriptsDirectoryPath.isRelativeType</mod><mod>parent</mod></config><scripts><scripts-dir relative="true">../dist/PyAudio-0.2.7-sys-py2.6-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.7-py2.6-macosx10.8.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>04pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath relative="true">../dist/PyAudio-0.2.7-sys-py2.6-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.7-py2.6-macosx10.8.pkg</packagePath><title>PyAudio-platlib-py2.6-macosx10.8</title></extra></pkgref>

View File

@ -0,0 +1 @@
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.7-py3.3.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="__pycache__" o="hubert" g="admin" p="16893"><f n="pyaudio.cpython-33.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.cpython-33.pyo" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>

View File

@ -0,0 +1,2 @@
<pkgref spec="1.12" uuid="A282C0E8-28FF-42E8-8AB2-BB08F6A682D7"><config><identifier>org.pythonmac.PyAudio-platlib-py3.3-macosx10.8</identifier><version>0.2.7</version><description>(Required) Python modules, extensions, and packages
Installed to: /Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"/><mod>parent</mod><mod>scripts.scriptsDirectoryPath.isRelativeType</mod><mod>installTo</mod></config><scripts><scripts-dir relative="true">../dist/PyAudio-0.2.7-mac-py3.3-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.7-py3.3-macosx10.8.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>05pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.7-mac-py3.3-macosx10.8.mpkg/Contents/Packages/PyAudio-platlib-0.2.7-py3.3-macosx10.8.pkg</packagePath><title>PyAudio-platlib-py3.3-macosx10.8</title></extra></pkgref>

View File

@ -0,0 +1,56 @@
<pkmkdoc spec="1.12"><properties><title>PyAudio 0.2.7</title><build>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/pyaudio-0.2.7.mpkg</build><organization>edu.mit.csail</organization><userSees ui="both"/><min-target os="2"/><domain system="true"/></properties><distribution><versions min-spec="1.000000"/><scripts></scripts></distribution><description>PyAudio v0.2.7: Python Bindings for PortAudio.
Copyright (c) 2006-2012 Hubert Pham
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY
OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
USE OR OTHER DEALINGS IN THE SOFTWARE.
</description><contents><choice title="PyAudio 0.2.7 for MacPython 3.2" id="choice22" description="MacPython 3.2 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.PyAudio-platlib-py3.2-macosx10.8"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/</file></requirement></choice-reqs></choice><choice title="PyAudio 0.2.7 for MacPython 2.7" id="choice23" description="MacPython 2.7 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/. " starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.PyAudio-platlib-py2.7-macosx10.8"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/</file></requirement></choice-reqs></choice><choice title="PyAudio 0.2.7 for System Python 2.7" id="choice24" description="System Python 2.7 is installed by default in Mac OS X." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.systemdefault.PyAudio-platlib-py2.7-macosx10.8"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/</file></requirement></choice-reqs></choice><choice title="PyAudio 0.2.7 for System Python 2.6" id="choice25" description="System Python 2.6 is installed by default in Mac OS X." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.systemdefault.PyAudio-platlib-py2.6-macosx10.8"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/</file></requirement></choice-reqs></choice><choice title="PyAudio 0.2.7 for MacPython 3.3" id="choice21" description="MacPython 3.3 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.PyAudio-platlib-py3.3-macosx10.8"/></choice></contents><resources bg-scale="none" bg-align="topleft"><locale lang="en"><resource mime-type="text/rtf" kind="embedded" type="license"><![CDATA[{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf340
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
\f0\fs24 \cf0 PyAudio v0.2.7: Python Bindings for PortAudio.\
\
Copyright (c) 2006-2012 Hubert Pham\
\
Permission is hereby granted, free of charge, to any person obtaining\
a copy of this software and associated documentation files (the\
"Software"), to deal in the Software without restriction, including\
without limitation the rights to use, copy, modify, merge, publish,\
distribute, sublicense, and/or sell copies of the Software, and to\
permit persons to whom the Software is furnished to do so, subject to\
the following conditions:\
\
The above copyright notice and this permission notice shall be\
included in all copies or substantial portions of the Software.\
\
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY\
OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT\
LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\
FITNESS FOR A PARTICULAR PURPOSE AND\
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS\
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\
USE OR OTHER DEALINGS IN THE SOFTWARE.\
}]]></resource></locale></resources><flags/><item type="pkgref">01pyaudio.xml</item><item type="pkgref">02pyaudio.xml</item><item type="pkgref">03pyaudio.xml</item><item type="pkgref">04pyaudio.xml</item><item type="pkgref">05pyaudio.xml</item><mod>properties.title</mod><mod>properties.customizeOption</mod><mod>description</mod><mod>properties.anywhereDomain</mod><mod>properties.systemDomain</mod></pkmkdoc>

View File

@ -0,0 +1 @@
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.8-py3.3.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="__pycache__" o="hubert" g="admin" p="16893"><f n="pyaudio.cpython-33.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.cpython-33.pyo" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>

View File

@ -0,0 +1,2 @@
<pkgref spec="1.12" uuid="F2E92B23-3C6D-4D10-B99A-0C0B1E93BF7F"><config><identifier>org.pythonmac.PyAudio-platlib-py3.3-macosx10.9</identifier><version>0.2.8</version><description>(Required) Python modules, extensions, and packages
Installed to: /Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>parent</mod><mod>installTo</mod></config><scripts><scripts-dir>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.8-mac-py3.3-macosx10.9.mpkg/Contents/Packages/PyAudio-platlib-0.2.8-py3.3-macosx10.9.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>01pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.8-mac-py3.3-macosx10.9.mpkg/Contents/Packages/PyAudio-platlib-0.2.8-py3.3-macosx10.9.pkg</packagePath><title>PyAudio-platlib-py3.3-macosx10.9</title></extra></pkgref>

View File

@ -0,0 +1 @@
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.8-py2.6.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>

View File

@ -0,0 +1,2 @@
<pkgref spec="1.12" uuid="AAD2F01F-60DA-4429-81C4-97D897B4851E"><config><identifier>org.pythonmac.systemdefault.PyAudio-platlib-py2.6-macosx10.9</identifier><version>0.2.8</version><description>(Required) Python modules, extensions, and packages
Installed to: /Library/Python/2.6/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Python/2.6/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>installTo</mod><mod>parent</mod></config><scripts><scripts-dir>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.8-sys-py2.6-macosx10.9.mpkg/Contents/Packages/PyAudio-platlib-0.2.8-py2.6-macosx10.9.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>02pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.8-sys-py2.6-macosx10.9.mpkg/Contents/Packages/PyAudio-platlib-0.2.8-py2.6-macosx10.9.pkg</packagePath><title>PyAudio-platlib-py2.6-macosx10.9</title></extra></pkgref>

View File

@ -0,0 +1 @@
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.8-py3.2.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="__pycache__" o="hubert" g="admin" p="16893"><f n="pyaudio.cpython-32.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.cpython-32.pyo" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>

View File

@ -0,0 +1,2 @@
<pkgref spec="1.12" uuid="257A7430-20E9-4A46-9D6D-70315CBB85FB"><config><identifier>org.pythonmac.PyAudio-platlib-py3.2-macosx10.9</identifier><version>0.2.8</version><description>(Required) Python modules, extensions, and packages
Installed to: /Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"/><mod>parent</mod><mod>installTo</mod></config><scripts><scripts-dir>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.8-mac-py3.2-macosx10.9.mpkg/Contents/Packages/PyAudio-platlib-0.2.8-py3.2-macosx10.9.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>03pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.8-mac-py3.2-macosx10.9.mpkg/Contents/Packages/PyAudio-platlib-0.2.8-py3.2-macosx10.9.pkg</packagePath><title>PyAudio-platlib-py3.2-macosx10.9</title></extra></pkgref>

View File

@ -0,0 +1 @@
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.8-py2.7.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>

View File

@ -0,0 +1,2 @@
<pkgref spec="1.12" uuid="52248D16-32E5-42A2-93D0-3487777E6024"><config><identifier>org.pythonmac.PyAudio-platlib-py2.7-macosx10.9</identifier><version>0.2.8</version><description>(Required) Python modules, extensions, and packages
Installed to: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"/><mod>parent</mod><mod>installTo</mod></config><scripts><scripts-dir>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.8-mac-py2.7-macosx10.9.mpkg/Contents/Packages/PyAudio-platlib-0.2.8-py2.7-macosx10.9.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>04pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.8-mac-py2.7-macosx10.9.mpkg/Contents/Packages/PyAudio-platlib-0.2.8-py2.7-macosx10.9.pkg</packagePath><title>PyAudio-platlib-py2.7-macosx10.9</title></extra></pkgref>

View File

@ -0,0 +1 @@
<pkg-contents spec="1.12"><f n="PackageRoot" o="hubert" g="admin" p="16893" pt="." m="true" t="bom"><f n="PyAudio-0.2.8-py2.7.egg-info" o="hubert" g="admin" p="16893"><f n="PKG-INFO" o="hubert" g="admin" p="33204"/><f n="SOURCES.txt" o="hubert" g="admin" p="33204"/><f n="dependency_links.txt" o="hubert" g="admin" p="33204"/><f n="top_level.txt" o="hubert" g="admin" p="33204"/></f><f n="_portaudio.so" o="hubert" g="admin" p="33277" c="true"/><f n="pyaudio.py" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyc" o="hubert" g="admin" p="33204"/><f n="pyaudio.pyo" o="hubert" g="admin" p="33204"/><mod>name</mod></f></pkg-contents>

View File

@ -0,0 +1,2 @@
<pkgref spec="1.12" uuid="00721604-991D-41D3-904C-7A25E30A6962"><config><identifier>org.pythonmac.systemdefault.PyAudio-platlib-py2.7-macosx10.9</identifier><version>0.2.8</version><description>(Required) Python modules, extensions, and packages
Installed to: /Library/Python/2.7/site-packages</description><post-install type="none"/><requireAuthorization/><installTo>/Library/Python/2.7/site-packages</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"/><mod>parent</mod><mod>installTo</mod></config><scripts><scripts-dir>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.8-sys-py2.7-macosx10.9.mpkg/Contents/Packages/PyAudio-platlib-0.2.8-py2.7-macosx10.9.pkg/Contents/Resources</scripts-dir></scripts><contents><file-list>05pyaudio-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra><packagePath>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/PyAudio-0.2.8-sys-py2.7-macosx10.9.mpkg/Contents/Packages/PyAudio-platlib-0.2.8-py2.7-macosx10.9.pkg</packagePath><title>PyAudio-platlib-py2.7-macosx10.9</title></extra></pkgref>

View File

@ -0,0 +1,56 @@
<pkmkdoc spec="1.12"><properties><title>PyAudio 0.2.8</title><build>/Users/hubert/sync/projects/pyaudio/pyaudio/dist/pyaudio-0.2.8.mpkg</build><organization>edu.mit.csail</organization><userSees ui="both"/><min-target os="2"/><domain system="true"/></properties><distribution><versions min-spec="1.000000"/><scripts></scripts></distribution><description>PyAudio v0.2.8: Python Bindings for PortAudio.
Copyright (c) 2006-2012 Hubert Pham
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY
OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
USE OR OTHER DEALINGS IN THE SOFTWARE.
</description><contents><choice title="PyAudio 0.2.8 for MacPython 3.2" id="choice22" description="MacPython 3.2 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.PyAudio-platlib-py3.2-macosx10.9"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/</file></requirement></choice-reqs></choice><choice title="PyAudio 0.2.8 for MacPython 2.7" id="choice23" description="MacPython 2.7 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/. " starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.PyAudio-platlib-py2.7-macosx10.9"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/</file></requirement></choice-reqs></choice><choice title="PyAudio 0.2.8 for System Python 2.7" id="choice24" description="System Python 2.7 is installed by default in Mac OS X." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.systemdefault.PyAudio-platlib-py2.7-macosx10.9"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/</file></requirement></choice-reqs></choice><choice title="PyAudio 0.2.8 for System Python 2.6" id="choice25" description="System Python 2.6 is installed by default in Mac OS X." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.systemdefault.PyAudio-platlib-py2.6-macosx10.9"/><choice-reqs><requirement id="file" operator="eq" value="true" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"><file>/</file></requirement></choice-reqs></choice><choice title="PyAudio 0.2.8 for MacPython 3.3" id="choice21" description="MacPython 3.3 is available from python.org and is typically installed in /Library/Frameworks/Python.framework/." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.pythonmac.PyAudio-platlib-py3.3-macosx10.9"/></choice></contents><resources bg-scale="none" bg-align="topleft"><locale lang="en"><resource mime-type="text/rtf" kind="embedded" type="license"><![CDATA[{\rtf1\ansi\ansicpg1252\cocoartf1265
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
\f0\fs24 \cf0 PyAudio v0.2.8: Python Bindings for PortAudio.\
\
Copyright (c) 2006-2014 Hubert Pham\
\
Permission is hereby granted, free of charge, to any person obtaining\
a copy of this software and associated documentation files (the\
"Software"), to deal in the Software without restriction, including\
without limitation the rights to use, copy, modify, merge, publish,\
distribute, sublicense, and/or sell copies of the Software, and to\
permit persons to whom the Software is furnished to do so, subject to\
the following conditions:\
\
The above copyright notice and this permission notice shall be\
included in all copies or substantial portions of the Software.\
\
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY\
OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT\
LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\
FITNESS FOR A PARTICULAR PURPOSE AND\
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS\
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\
USE OR OTHER DEALINGS IN THE SOFTWARE.\
}]]></resource></locale></resources><flags/><item type="pkgref">01pyaudio.xml</item><item type="pkgref">02pyaudio.xml</item><item type="pkgref">03pyaudio.xml</item><item type="pkgref">04pyaudio.xml</item><item type="pkgref">05pyaudio.xml</item><mod>properties.title</mod><mod>properties.customizeOption</mod><mod>description</mod><mod>properties.anywhereDomain</mod><mod>properties.systemDomain</mod></pkmkdoc>

View File

@ -0,0 +1,93 @@
"""
Remove requirements section in Info.plist for Mac OS X Installer package.
Background: There is a bug in the command-line version of PackageMaker
v3.0.4 (179). When creating a meta-package (bundle of packages), if
any of constituent packages specify installation requirements,
PackageMaker will crash. The reason is probably that PackageMaker
needs to ask the user (via the GUI, which in this case doesn't exist
from the command line) how to handle each constituents' requirements.
The solution is to bake those requirements into the global
meta-package template (pmdoc) and then remove the requirements from
each constituent package. This script does the latter by removing a
known key and value from the specified package's Info.plist file.
"""
import sys
from xml.dom.minidom import parse
from optparse import OptionParser
def main():
parser = OptionParser()
parser.add_option("-i", "--input", dest="input")
parser.add_option("-o", "--output", dest="output")
(options, args) = parser.parse_args()
if not options.input:
print("No input given.")
parser.print_help()
return -1
try:
dom = parse(options.input)
except Exception as err:
print("Error: ", err)
return -1
# XML looks something like this:
# <plist />
# <dict>
# <key> ... </key>
# <string> ... </string> # this is the value
# <key> ... </key>
# <string> ... </string>
# ...
# <key>IFRequirementDicts</key> # REMOVE THIS
# <array> # ...AND THIS
# <dict>
# ...
# </dict>
# </array>
# ...
# </dict>
# </plist>
plist = dom.getElementsByTagName("key")
for k in plist:
if ((k.firstChild.nodeType is k.TEXT_NODE) and
(k.firstChild.data.strip() == "IFRequirementDicts")):
sibling = k.nextSibling
# Skip all whitespace between this key and the upcoming
# <array>
while sibling.nodeType is k.TEXT_NODE:
sibling = sibling.nextSibling
assert sibling.tagName == "array", "Could not find <array>"
# Remove nodes
parent = k.parentNode
parent.removeChild(k)
parent.removeChild(sibling)
k.unlink()
sibling.unlink()
break
xml = dom.toxml()
if options.output:
try:
f = open(options.output, "w")
except IOError as err:
print("Error: ", err)
return -1
f.write(xml)
f.close()
else:
print(xml)
if __name__ == "__main__":
sys.exit(main())

19
packaging/setup_dmg Normal file
View File

@ -0,0 +1,19 @@
-- http://stackoverflow.com/questions/96882/how-do-i-create-a-nice-looking-dmg-for-mac-os-x-using-command-line-tools
tell application "Finder"
tell disk "PyAudio 0.2.8"
open
set current view of container window to icon view
set toolbar visible of container window to false
set statusbar visible of container window to false
set the bounds of container window to {0, 0, 635, 385}
set theViewOptions to the icon view options of container window
set arrangement of theViewOptions to not arranged
set icon size of theViewOptions to 148
set background picture of theViewOptions to file ".packaging:snakey.tif"
set position of item "Install PyAudio" of container window to {460, 240}
close
open
update without registering applications
delay 5
end tell
end tell

BIN
packaging/snakey.tif Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

118
setup.py Executable file → Normal file
View File

@ -1,7 +1,7 @@
"""
PyAudio v0.2.11: Python Bindings for PortAudio.
PyAudio v0.2.8: Python Bindings for PortAudio.
Copyright (c) 2006 Hubert Pham
Copyright (c) 2006-2014 Hubert Pham
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@ -26,25 +26,25 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
USE OR OTHER DEALINGS IN THE SOFTWARE.
"""
import os
import platform
from distutils.core import setup, Extension
import sys
try:
from setuptools import setup, Extension
except ImportError:
from distutils.core import setup, Extension
import os
__version__ = "0.2.12"
__version__ = "0.2.8"
# distutils will try to locate and link dynamically against portaudio.
# Note: distutils will try to locate and link dynamically
# against portaudio.
#
# If you would rather statically link in the portaudio library (e.g.,
# typically on Microsoft Windows), run:
# You probably don't want to statically link in the PortAudio
# library unless you're building on Microsoft Windows.
#
# % python setup.py build --static-link
# In any case, if you would rather statically link in libportaudio,
# run:
#
# Specify the environment variable PORTAUDIO_PATH with the build tree
# of PortAudio.
# % python setup.py build --static-link
#
# Be sure to specify the location of the libportaudio.a in
# the `extra_link_args' variable below.
STATIC_LINKING = False
@ -53,9 +53,11 @@ if "--static-link" in sys.argv:
sys.argv.remove("--static-link")
portaudio_path = os.environ.get("PORTAUDIO_PATH", "./portaudio-v19")
packaging_path = os.environ.get("PACKAGING_PATH", None)
mac_sysroot_path = os.environ.get("SYSROOT_PATH", None)
pyaudio_module_sources = ['src/_portaudiomodule.c']
include_dirs = []
external_libraries = []
extra_compile_args = []
@ -63,24 +65,27 @@ extra_link_args = []
scripts = []
defines = []
if sys.platform == 'darwin':
defines += [('MACOSX', '1')]
if mac_sysroot_path:
extra_compile_args += ["-isysroot", mac_sysroot_path]
extra_link_args += ["-isysroot", mac_sysroot_path]
elif sys.platform == 'win32':
bits = platform.architecture()[0]
if '64' in bits:
defines.append(('MS_WIN64', '1'))
if not STATIC_LINKING:
external_libraries = ['portaudio']
extra_link_args = []
else:
include_dirs = [os.path.join(portaudio_path, 'include/')]
if STATIC_LINKING:
extra_link_args = [
os.path.join(portaudio_path, 'lib/.libs/libportaudio.a')
]
include_dirs = [os.path.join(portaudio_path, 'include/')]
else:
# dynamic linking
external_libraries = ['portaudio']
extra_link_args = []
if sys.platform == 'darwin':
defines += [('MACOSX', '1')]
extra_compile_args += ["-mmacosx-version-min=10.6"]
extra_link_args += ["-mmacosx-version-min=10.6"]
if mac_sysroot_path:
extra_compile_args += ["-isysroot", mac_sysroot_path]
extra_link_args += ["-isysroot", mac_sysroot_path]
if STATIC_LINKING:
# platform specific configuration
if sys.platform == 'darwin':
@ -88,36 +93,47 @@ else:
'-framework', 'AudioToolbox',
'-framework', 'AudioUnit',
'-framework', 'Carbon']
elif sys.platform == 'cygwin':
external_libraries += ['winmm']
extra_link_args += ['-lwinmm']
elif sys.platform == 'win32':
# i.e., Win32 Python with mingw32
# run: python setup.py build -cmingw32
external_libraries += ['winmm']
extra_link_args += ['-lwinmm']
if packaging_path:
scripts += [os.path.join(packaging_path, 'postinst.py')]
elif sys.platform == 'linux2':
extra_link_args += ['-lrt', '-lm', '-lpthread']
# GNU/Linux has several audio systems (backends) available; be
# sure to specify the desired ones here. Start with ALSA and
# JACK, since that's common today.
# Since you're insisting on linking statically against
# PortAudio on GNU/Linux, be sure to link in whatever sound
# backend you used in portaudio (e.g., ALSA, JACK, etc...)
# I'll start you off with ALSA, since that's the most common
# today. If you need JACK support, add it here.
extra_link_args += ['-lasound', '-ljack']
setup(name='PyAudio',
version=__version__,
author="Hubert Pham",
url="http://people.csail.mit.edu/hubert/pyaudio/",
description='PortAudio Python Bindings',
long_description=__doc__.lstrip(),
scripts=scripts,
py_modules=['pyaudio'],
package_dir={'': 'src'},
ext_modules=[
Extension('_portaudio',
sources=pyaudio_module_sources,
include_dirs=include_dirs,
define_macros=defines,
libraries=external_libraries,
extra_compile_args=extra_compile_args,
extra_link_args=extra_link_args)
])
pyaudio = Extension('_portaudio',
sources=pyaudio_module_sources,
include_dirs=include_dirs,
define_macros=defines,
libraries=external_libraries,
extra_compile_args=extra_compile_args,
extra_link_args=extra_link_args)
setup(name = 'PyAudio',
version = __version__,
author = "Hubert Pham",
url = "http://people.csail.mit.edu/hubert/pyaudio/",
description = 'PortAudio Python Bindings',
long_description = __doc__.lstrip(),
scripts = scripts,
py_modules = ['pyaudio'],
package_dir = {'': 'src'},
ext_modules = [pyaudio])

View File

@ -42,16 +42,16 @@ master_doc = 'index'
# General information about the project.
project = 'PyAudio'
copyright = '2006, Hubert Pham'
copyright = '2014, Hubert Pham'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = '0.2.11'
version = '0.2.8'
# The full version, including alpha/beta/rc tags.
release = '0.2.11'
release = '0.2.8'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

View File

@ -1,7 +1,7 @@
Example: Blocking Mode Audio I/O
--------------------------------
.. literalinclude:: ../examples/play_wave.py
.. literalinclude:: ../test/play_wave.py
To use PyAudio, first instantiate PyAudio using
:py:func:`pyaudio.PyAudio` (1), which sets up the portaudio system.
@ -30,7 +30,7 @@ Finally, terminate the portaudio session using
Example: Callback Mode Audio I/O
--------------------------------
.. literalinclude:: ../examples/play_wave_callback.py
.. literalinclude:: ../test/play_wave_callback.py
In callback mode, PyAudio will call a specified callback function (2)
whenever it needs new audio data (to play) and/or when there is new

File diff suppressed because it is too large Load Diff

View File

@ -3,7 +3,7 @@
*
* PyAudio : API Header File
*
* Copyright (c) 2006 Hubert Pham
* Copyright (c) 2006-2012 Hubert Pham
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation

View File

@ -1,6 +1,6 @@
# PyAudio : Python Bindings for PortAudio.
# Copyright (c) 2006 Hubert Pham
# Copyright (c) 2006-2012 Hubert Pham
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@ -106,7 +106,7 @@ Overview
"""
__author__ = "Hubert Pham"
__version__ = "0.2.11"
__version__ = "0.2.8"
__docformat__ = "restructuredtext en"
import sys
@ -115,8 +115,9 @@ import sys
try:
import _portaudio as pa
except ImportError:
print("Could not import the PyAudio C module '_portaudio'.")
raise
print("Please build and install the PortAudio Python " +
"bindings first.")
sys.exit(-1)
############################################################
# GLOBALS
@ -471,7 +472,7 @@ class Stream:
def get_output_latency(self):
"""
Return the output latency.
Return the input latency.
:rtype: float
"""
@ -561,7 +562,7 @@ class Stream:
Defaults to None, in which this value will be
automatically computed.
:param exception_on_underflow:
Specifies whether an IOError exception should be thrown
Specifies whether an exception should be thrown
(or silently ignored) on buffer underflow. Defaults
to False for improved performance, especially on
slower platforms.
@ -586,16 +587,12 @@ class Stream:
exception_on_underflow)
def read(self, num_frames, exception_on_overflow=True):
def read(self, num_frames):
"""
Read samples from the stream. Do not call when using
*non-blocking* mode.
:param num_frames: The number of frames to read.
:param exception_on_overflow:
Specifies whether an IOError exception should be thrown
(or silently ignored) on input buffer overflow. Defaults
to True.
:raises IOError: if stream is not an input stream
or if the read operation was unsuccessful.
:rtype: string
@ -605,7 +602,7 @@ class Stream:
raise IOError("Not input stream",
paCanNotReadFromAnOutputOnlyStream)
return pa.read_stream(self._stream, num_frames, exception_on_overflow)
return pa.read_stream(self._stream, num_frames)
def get_read_available(self):
"""

View File

@ -25,7 +25,7 @@ stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
data = wf.readframes(CHUNK)
# play stream (3)
while len(data) > 0:
while data != '':
stream.write(data)
data = wf.readframes(CHUNK)

View File

@ -64,7 +64,7 @@ stream = p.open(
data = wf.readframes(chunk)
# play stream
while len(data) > 0:
while data != '':
stream.write(data)
data = wf.readframes(chunk)

View File

@ -12,7 +12,6 @@ import sys
WIDTH = 2
CHANNELS = 2
RATE = 44100
DURATION = 5
if sys.platform == 'darwin':
CHANNELS = 1
@ -31,9 +30,7 @@ stream = p.open(format=p.get_format_from_width(WIDTH),
stream.start_stream()
start = time.time()
while stream.is_active() and (time.time() - start) < DURATION:
while stream.is_active():
time.sleep(0.1)
stream.stop_stream()

View File

@ -1,120 +0,0 @@
import sys
import time
import unittest
import pyaudio
class PyAudioErrorTests(unittest.TestCase):
def setUp(self):
self.p = pyaudio.PyAudio()
def tearDown(self):
self.p.terminate()
def test_invalid_sample_size(self):
with self.assertRaises(ValueError):
self.p.get_sample_size(10)
def test_invalid_width(self):
with self.assertRaises(ValueError):
self.p.get_format_from_width(8)
def test_invalid_device(self):
with self.assertRaises(IOError):
self.p.get_host_api_info_by_type(-1)
def test_invalid_hostapi(self):
with self.assertRaises(IOError):
self.p.get_host_api_info_by_index(-1)
def test_invalid_host_api_devinfo(self):
with self.assertRaises(IOError):
self.p.get_device_info_by_host_api_device_index(0, -1)
with self.assertRaises(IOError):
self.p.get_device_info_by_host_api_device_index(-1, 0)
def test_invalid_device_devinfo(self):
with self.assertRaises(IOError):
self.p.get_device_info_by_index(-1)
def test_error_without_stream_start(self):
with self.assertRaises(IOError):
stream = self.p.open(channels=1,
rate=44100,
format=pyaudio.paInt16,
input=True,
start=False) # not starting stream
stream.read(2)
def test_error_writing_to_readonly_stream(self):
with self.assertRaises(IOError):
stream = self.p.open(channels=1,
rate=44100,
format=pyaudio.paInt16,
input=True)
stream.write('foo')
def test_error_negative_frames(self):
with self.assertRaises(ValueError):
stream = self.p.open(channels=1,
rate=44100,
format=pyaudio.paInt16,
input=True)
stream.read(-1)
def test_invalid_attr_on_closed_stream(self):
stream = self.p.open(channels=1,
rate=44100,
format=pyaudio.paInt16,
input=True)
stream.close()
with self.assertRaises(IOError):
stream.get_input_latency()
with self.assertRaises(IOError):
stream.read(1)
def test_invalid_format_supported(self):
with self.assertRaises(ValueError):
self.p.is_format_supported(8000, -1, 1, pyaudio.paInt16)
with self.assertRaises(ValueError):
self.p.is_format_supported(8000, 0, -1, pyaudio.paInt16)
def test_write_underflow_exception(self):
stream = self.p.open(channels=1,
rate=44100,
format=pyaudio.paInt16,
output=True)
time.sleep(0.5)
stream.write('\x00\x00\x00\x00', exception_on_underflow=False)
# It's difficult to invoke an underflow on ALSA, so skip.
if sys.platform in ('linux', 'linux2'):
return
with self.assertRaises(IOError) as err:
time.sleep(0.5)
stream.write('\x00\x00\x00\x00', exception_on_underflow=True)
self.assertEqual(err.exception.errno, pyaudio.paOutputUnderflowed)
self.assertEqual(err.exception.strerror, 'Output underflowed')
def test_read_overflow_exception(self):
stream = self.p.open(channels=1,
rate=44100,
format=pyaudio.paInt16,
input=True)
time.sleep(0.5)
stream.read(2, exception_on_overflow=False)
# It's difficult to invoke an underflow on ALSA, so skip.
if sys.platform in ('linux', 'linux2'):
return
with self.assertRaises(IOError) as err:
time.sleep(0.5)
stream.read(2, exception_on_overflow=True)
self.assertEqual(err.exception.errno, pyaudio.paInputOverflowed)
self.assertEqual(err.exception.strerror, 'Input overflowed')

View File

@ -1,642 +0,0 @@
# -*- coding: utf-8 -*-
"""Automated unit tests for testing audio playback and capture.
These tests require an OS loopback sound device that forwards audio
output, generated by PyAudio for playback, and forwards it to an input
device, which PyAudio can record and verify against a test signal.
On Mac OS X, Soundflower can create such a device.
On GNU/Linux, the snd-aloop kernel module provides a loopback ALSA
device. Use examples/system_info.py to identify the name of the loopback
device.
"""
import math
import struct
import time
import unittest
import wave
import sys
import numpy
import pyaudio
DUMP_CAPTURE=False
class PyAudioTests(unittest.TestCase):
def setUp(self):
self.p = pyaudio.PyAudio()
(self.loopback_input_idx,
self.loopback_output_idx) = self.get_audio_loopback()
assert (self.loopback_input_idx is None
or self.loopback_input_idx >= 0), "No loopback device found"
assert (self.loopback_output_idx is None
or self.loopback_output_idx >= 0), "No loopback device found"
def tearDown(self):
self.p.terminate()
def get_audio_loopback(self):
if sys.platform == 'darwin':
return self._find_audio_loopback(
'Soundflower (2ch)', 'Soundflower (2ch)')
if sys.platform in ('linux', 'linux2'):
return self._find_audio_loopback(
'Loopback: PCM (hw:1,0)', 'Loopback: PCM (hw:1,1)')
if sys.platform == 'win32':
# Assumes running in a VM, in which the hypervisor can
# set up a loopback device to back the "default" audio devices.
# Here, None indicates default device.
return None, None
return -1, -1
def _find_audio_loopback(self, indev, outdev):
"""Utility to find audio loopback device."""
input_idx, output_idx = -1, -1
for device_idx in range(self.p.get_device_count()):
devinfo = self.p.get_device_info_by_index(device_idx)
if (outdev == devinfo.get('name') and
devinfo.get('maxOutputChannels', 0) > 0):
output_idx = device_idx
if (indev == devinfo.get('name') and
devinfo.get('maxInputChannels', 0) > 0):
input_idx = device_idx
if output_idx > -1 and input_idx > -1:
break
return input_idx, output_idx
def test_system_info(self):
"""Basic system info tests"""
self.assertTrue(self.p.get_host_api_count() > 0)
self.assertTrue(self.p.get_device_count() > 0)
api_info = self.p.get_host_api_info_by_index(0)
self.assertTrue(len(api_info.items()) > 0)
def test_input_output_blocking(self):
"""Test blocking-based record and playback."""
rate = 44100 # frames per second
width = 2 # bytes per sample
channels = 2
# Blocking-mode might add some initial choppiness on some
# platforms/loopback devices, so set a longer duration.
duration = 3 # seconds
frames_per_chunk = 1024
freqs = [130.81, 329.63, 440.0, 466.16, 587.33, 739.99]
test_signal = self.create_reference_signal(freqs, rate, width, duration)
audio_chunks = self.signal_to_chunks(
test_signal, frames_per_chunk, channels)
out_stream = self.p.open(
format=self.p.get_format_from_width(width),
channels=channels,
rate=rate,
output=True,
frames_per_buffer=frames_per_chunk,
output_device_index=self.loopback_output_idx)
in_stream = self.p.open(
format=self.p.get_format_from_width(width),
channels=channels,
rate=rate,
input=True,
frames_per_buffer=frames_per_chunk,
input_device_index=self.loopback_input_idx)
captured = []
for chunk in audio_chunks:
out_stream.write(chunk)
captured.append(in_stream.read(frames_per_chunk))
# Capture a few more frames, since there is some lag.
for i in range(8):
captured.append(in_stream.read(frames_per_chunk))
in_stream.stop_stream()
out_stream.stop_stream()
if DUMP_CAPTURE:
self.write_wav('test_blocking.wav', b''.join(captured),
width, channels, rate)
captured_signal = self.pcm16_to_numpy(b''.join(captured))
captured_left_channel = captured_signal[::2]
captured_right_channel = captured_signal[1::2]
self.assert_pcm16_spectrum_nearly_equal(
rate,
captured_left_channel,
test_signal,
len(freqs))
self.assert_pcm16_spectrum_nearly_equal(
rate,
captured_right_channel,
test_signal,
len(freqs))
def test_input_output_callback(self):
"""Test callback-based record and playback."""
rate = 44100 # frames per second
width = 2 # bytes per sample
channels = 2
duration = 1 # second
frames_per_chunk = 1024
freqs = [130.81, 329.63, 440.0, 466.16, 587.33, 739.99]
test_signal = self.create_reference_signal(freqs, rate, width, duration)
audio_chunks = self.signal_to_chunks(
test_signal, frames_per_chunk, channels)
state = {'count': 0}
def out_callback(_, frame_count, time_info, status):
if state['count'] >= len(audio_chunks):
return ('', pyaudio.paComplete)
rval = (audio_chunks[state['count']], pyaudio.paContinue)
state['count'] += 1
return rval
captured = []
def in_callback(in_data, frame_count, time_info, status):
captured.append(in_data)
return (None, pyaudio.paContinue)
out_stream = self.p.open(
format=self.p.get_format_from_width(width),
channels=channels,
rate=rate,
output=True,
frames_per_buffer=frames_per_chunk,
output_device_index=self.loopback_output_idx,
stream_callback=out_callback)
in_stream = self.p.open(
format=self.p.get_format_from_width(width),
channels=channels,
rate=rate,
input=True,
frames_per_buffer=frames_per_chunk,
input_device_index=self.loopback_input_idx,
stream_callback=in_callback)
in_stream.start_stream()
out_stream.start_stream()
time.sleep(duration + 1)
in_stream.stop_stream()
out_stream.stop_stream()
if DUMP_CAPTURE:
self.write_wav('test_callback.wav', b''.join(captured),
width, channels, rate)
captured_signal = self.pcm16_to_numpy(b''.join(captured))
captured_left_channel = captured_signal[::2]
captured_right_channel = captured_signal[1::2]
self.assert_pcm16_spectrum_nearly_equal(
rate,
captured_left_channel,
test_signal,
len(freqs))
self.assert_pcm16_spectrum_nearly_equal(
rate,
captured_right_channel,
test_signal,
len(freqs))
def test_device_lock_gil_order(self):
"""Ensure no deadlock between Pa_{Open,Start,Stop}Stream and GIL."""
# This test targets OSX/macOS CoreAudio, which seems to use
# audio device locks. On ALSA and Win32 MME, this problem
# doesn't seem to appear despite not releasing the GIL when
# calling into PortAudio.
rate = 44100 # frames per second
width = 2 # bytes per sample
channels = 2
frames_per_chunk = 1024
def out_callback(_, frame_count, time_info, status):
return ('', pyaudio.paComplete)
def in_callback(in_data, frame_count, time_info, status):
# Release the GIL for a bit
time.sleep(2)
return (None, pyaudio.paComplete)
in_stream = self.p.open(
format=self.p.get_format_from_width(width),
channels=channels,
rate=rate,
input=True,
start=False,
frames_per_buffer=frames_per_chunk,
input_device_index=self.loopback_input_idx,
stream_callback=in_callback)
# In a separate (C) thread, portaudio/driver will grab the device lock,
# then the GIL to call in_callback.
in_stream.start_stream()
# Wait a bit to let that callback thread start.
time.sleep(1)
# in_callback will eventually drop the GIL when executing
# time.sleep (while retaining the device lock), allowing the
# following code to run. Opening a stream and starting it MUST
# release the GIL before attempting to acquire the device
# lock. Otherwise, the following code will wait for the device
# lock (while holding the GIL), while the in_callback thread
# will be waiting for the GIL once time.sleep completes (while
# holding the device lock), leading to deadlock.
out_stream = self.p.open(
format=self.p.get_format_from_width(width),
channels=channels,
rate=rate,
output=True,
frames_per_buffer=frames_per_chunk,
output_device_index=self.loopback_output_idx,
stream_callback=out_callback)
out_stream.start_stream()
time.sleep(0.1)
in_stream.stop_stream()
out_stream.stop_stream()
def test_stream_state_gil(self):
"""Ensure no deadlock between Pa_IsStream{Active,Stopped} and GIL."""
rate = 44100 # frames per second
width = 2 # bytes per sample
channels = 2
frames_per_chunk = 1024
def out_callback(_, frame_count, time_info, status):
return ('', pyaudio.paComplete)
def in_callback(in_data, frame_count, time_info, status):
# Release the GIL for a bit
time.sleep(2)
return (None, pyaudio.paComplete)
in_stream = self.p.open(
format=self.p.get_format_from_width(width),
channels=channels,
rate=rate,
input=True,
start=False,
frames_per_buffer=frames_per_chunk,
input_device_index=self.loopback_input_idx,
stream_callback=in_callback)
out_stream = self.p.open(
format=self.p.get_format_from_width(width),
channels=channels,
rate=rate,
output=True,
start=False,
frames_per_buffer=frames_per_chunk,
output_device_index=self.loopback_output_idx,
stream_callback=out_callback)
# In a separate (C) thread, portaudio/driver will grab the device lock,
# then the GIL to call in_callback.
in_stream.start_stream()
# Wait a bit to let that callback thread start.
time.sleep(1)
# in_callback will eventually drop the GIL when executing
# time.sleep (while retaining the device lock), allowing the
# following code to run. Checking the state of the stream MUST
# not require the device lock, but if it does, it must release the GIL
# before attempting to acquire the device
# lock. Otherwise, the following code will wait for the device
# lock (while holding the GIL), while the in_callback thread
# will be waiting for the GIL once time.sleep completes (while
# holding the device lock), leading to deadlock.
self.assertTrue(in_stream.is_active())
self.assertFalse(in_stream.is_stopped())
self.assertTrue(out_stream.is_stopped())
self.assertFalse(out_stream.is_active())
out_stream.start_stream()
self.assertFalse(out_stream.is_stopped())
self.assertTrue(out_stream.is_active())
time.sleep(0.1)
in_stream.stop_stream()
out_stream.stop_stream()
def test_get_stream_time_gil(self):
"""Ensure no deadlock between PA_GetStreamTime and GIL."""
rate = 44100 # frames per second
width = 2 # bytes per sample
channels = 2
frames_per_chunk = 1024
def out_callback(_, frame_count, time_info, status):
return ('', pyaudio.paComplete)
def in_callback(in_data, frame_count, time_info, status):
# Release the GIL for a bit
time.sleep(2)
return (None, pyaudio.paComplete)
in_stream = self.p.open(
format=self.p.get_format_from_width(width),
channels=channels,
rate=rate,
input=True,
start=False,
frames_per_buffer=frames_per_chunk,
input_device_index=self.loopback_input_idx,
stream_callback=in_callback)
out_stream = self.p.open(
format=self.p.get_format_from_width(width),
channels=channels,
rate=rate,
output=True,
start=False,
frames_per_buffer=frames_per_chunk,
output_device_index=self.loopback_output_idx,
stream_callback=out_callback)
# In a separate (C) thread, portaudio/driver will grab the device lock,
# then the GIL to call in_callback.
in_stream.start_stream()
# Wait a bit to let that callback thread start.
time.sleep(1)
# in_callback will eventually drop the GIL when executing
# time.sleep (while retaining the device lock), allowing the
# following code to run. Getting the stream time MUST not
# require the device lock, but if it does, it must release the
# GIL before attempting to acquire the device lock. Otherwise,
# the following code will wait for the device lock (while
# holding the GIL), while the in_callback thread will be
# waiting for the GIL once time.sleep completes (while holding
# the device lock), leading to deadlock.
self.assertGreater(in_stream.get_time(), -1)
self.assertGreater(out_stream.get_time(), 1)
time.sleep(0.1)
in_stream.stop_stream()
out_stream.stop_stream()
def test_get_stream_cpuload_gil(self):
"""Ensure no deadlock between Pa_GetStreamCpuLoad and GIL."""
rate = 44100 # frames per second
width = 2 # bytes per sample
channels = 2
frames_per_chunk = 1024
def out_callback(_, frame_count, time_info, status):
return ('', pyaudio.paComplete)
def in_callback(in_data, frame_count, time_info, status):
# Release the GIL for a bit
time.sleep(2)
return (None, pyaudio.paComplete)
in_stream = self.p.open(
format=self.p.get_format_from_width(width),
channels=channels,
rate=rate,
input=True,
start=False,
frames_per_buffer=frames_per_chunk,
input_device_index=self.loopback_input_idx,
stream_callback=in_callback)
out_stream = self.p.open(
format=self.p.get_format_from_width(width),
channels=channels,
rate=rate,
output=True,
start=False,
frames_per_buffer=frames_per_chunk,
output_device_index=self.loopback_output_idx,
stream_callback=out_callback)
# In a separate (C) thread, portaudio/driver will grab the device lock,
# then the GIL to call in_callback.
in_stream.start_stream()
# Wait a bit to let that callback thread start.
time.sleep(1)
# in_callback will eventually drop the GIL when executing
# time.sleep (while retaining the device lock), allowing the
# following code to run. Getting the stream cpuload MUST not
# require the device lock, but if it does, it must release the
# GIL before attempting to acquire the device lock. Otherwise,
# the following code will wait for the device lock (while
# holding the GIL), while the in_callback thread will be
# waiting for the GIL once time.sleep completes (while holding
# the device lock), leading to deadlock.
self.assertGreater(in_stream.get_cpu_load(), -1)
self.assertGreater(out_stream.get_cpu_load(), -1)
time.sleep(0.1)
in_stream.stop_stream()
out_stream.stop_stream()
def test_get_stream_write_available_gil(self):
"""Ensure no deadlock between Pa_GetStreamWriteAvailable and GIL."""
rate = 44100 # frames per second
width = 2 # bytes per sample
channels = 2
frames_per_chunk = 1024
def in_callback(in_data, frame_count, time_info, status):
# Release the GIL for a bit
time.sleep(2)
return (None, pyaudio.paComplete)
in_stream = self.p.open(
format=self.p.get_format_from_width(width),
channels=channels,
rate=rate,
input=True,
start=False,
frames_per_buffer=frames_per_chunk,
input_device_index=self.loopback_input_idx,
stream_callback=in_callback)
out_stream = self.p.open(
format=self.p.get_format_from_width(width),
channels=channels,
rate=rate,
output=True,
frames_per_buffer=frames_per_chunk,
output_device_index=self.loopback_output_idx)
# In a separate (C) thread, portaudio/driver will grab the device lock,
# then the GIL to call in_callback.
in_stream.start_stream()
# Wait a bit to let that callback thread start.
time.sleep(1)
# in_callback will eventually drop the GIL when executing
# time.sleep (while retaining the device lock), allowing the
# following code to run. Getting the stream write available MUST not
# require the device lock, but if it does, it must release the
# GIL before attempting to acquire the device lock. Otherwise,
# the following code will wait for the device lock (while
# holding the GIL), while the in_callback thread will be
# waiting for the GIL once time.sleep completes (while holding
# the device lock), leading to deadlock.
self.assertGreater(out_stream.get_write_available(), -1)
time.sleep(0.1)
in_stream.stop_stream()
def test_get_stream_read_available_gil(self):
"""Ensure no deadlock between Pa_GetStreamReadAvailable and GIL."""
rate = 44100 # frames per second
width = 2 # bytes per sample
channels = 2
frames_per_chunk = 1024
def out_callback(in_data, frame_count, time_info, status):
# Release the GIL for a bit
time.sleep(2)
return (None, pyaudio.paComplete)
in_stream = self.p.open(
format=self.p.get_format_from_width(width),
channels=channels,
rate=rate,
input=True,
frames_per_buffer=frames_per_chunk,
input_device_index=self.loopback_input_idx)
out_stream = self.p.open(
format=self.p.get_format_from_width(width),
channels=channels,
rate=rate,
output=True,
start=False,
frames_per_buffer=frames_per_chunk,
output_device_index=self.loopback_output_idx,
stream_callback=out_callback)
# In a separate (C) thread, portaudio/driver will grab the device lock,
# then the GIL to call in_callback.
out_stream.start_stream()
# Wait a bit to let that callback thread start.
time.sleep(1)
# in_callback will eventually drop the GIL when executing
# time.sleep (while retaining the device lock), allowing the
# following code to run. Getting the stream read available MUST not
# require the device lock, but if it does, it must release the
# GIL before attempting to acquire the device lock. Otherwise,
# the following code will wait for the device lock (while
# holding the GIL), while the in_callback thread will be
# waiting for the GIL once time.sleep completes (while holding
# the device lock), leading to deadlock.
self.assertGreater(in_stream.get_read_available(), -1)
time.sleep(0.1)
in_stream.stop_stream()
def test_terminate_gil(self):
"""Ensure no deadlock between Pa_Terminate and GIL."""
rate = 44100 # frames per second
width = 2 # bytes per sample
channels = 2
frames_per_chunk = 1024
def out_callback(in_data, frame_count, time_info, status):
# Release the GIL for a bit
time.sleep(2)
return (None, pyaudio.paComplete)
out_stream = self.p.open(
format=self.p.get_format_from_width(width),
channels=channels,
rate=rate,
output=True,
start=False,
frames_per_buffer=frames_per_chunk,
output_device_index=self.loopback_output_idx,
stream_callback=out_callback)
# In a separate (C) thread, portaudio/driver will grab the device lock,
# then the GIL to call in_callback.
out_stream.start_stream()
# Wait a bit to let that callback thread start.
time.sleep(1)
# in_callback will eventually drop the GIL when executing
# time.sleep (while retaining the device lock), allowing the
# following code to run. Terminating PyAudio MUST not
# require the device lock, but if it does, it must release the
# GIL before attempting to acquire the device lock. Otherwise,
# the following code will wait for the device lock (while
# holding the GIL), while the in_callback thread will be
# waiting for the GIL once time.sleep completes (while holding
# the device lock), leading to deadlock.
self.p.terminate()
@staticmethod
def create_reference_signal(freqs, sampling_rate, width, duration):
"""Return reference signal with several sinuoids with frequencies
specified by freqs."""
total_frames = int(sampling_rate * duration)
max_amp = float(2**(width * 8 - 1) - 1)
avg_amp = max_amp / len(freqs)
return [
int(sum(avg_amp * math.sin(2*math.pi*freq*(k/float(sampling_rate)))
for freq in freqs))
for k in range(total_frames)]
@staticmethod
def signal_to_chunks(frame_data, frames_per_chunk, channels):
"""Given an array of values comprising the signal, return an iterable
of binary chunks, with each chunk containing frames_per_chunk
frames. Each frame represents a single value from the signal,
duplicated for each channel specified by channels.
"""
frames = [struct.pack('h', x) * channels for x in frame_data]
# Chop up frames into chunks
return [b''.join(chunk_frames) for chunk_frames in
tuple(frames[i:i+frames_per_chunk]
for i in range(0, len(frames), frames_per_chunk))]
@staticmethod
def pcm16_to_numpy(bytestring):
"""From PCM 16-bit bytes, return an equivalent numpy array of values."""
return struct.unpack('%dh' % (len(bytestring) / 2), bytestring)
@staticmethod
def write_wav(filename, data, width, channels, rate):
"""Write PCM data to wave file."""
wf = wave.open(filename, 'wb')
wf.setnchannels(channels)
wf.setsampwidth(width)
wf.setframerate(rate)
wf.writeframes(data)
wf.close()
def assert_pcm16_spectrum_nearly_equal(self, sampling_rate, cap, ref,
num_freq_peaks_expected):
"""Compares the discrete fourier transform of a captured signal
against the reference signal and ensures that the frequency peaks
match."""
# When passing a reference signal through the loopback device,
# the captured signal may include additional noise, as well as
# time lag, so testing that the captured signal is "similar
# enough" to the reference using bit-wise equality won't work
# well. Instead, the approach here a) assumes the reference
# signal is a sum of sinusoids and b) computes the discrete
# fourier transform of the reference and captured signals, and
# ensures that the frequencies of the top
# num_freq_peaks_expected frequency peaks are close.
cap_fft = numpy.absolute(numpy.fft.rfft(cap))
ref_fft = numpy.absolute(numpy.fft.rfft(ref))
# Find the indices of the peaks:
cap_peak_indices = sorted(numpy.argpartition(
cap_fft, -num_freq_peaks_expected)[-num_freq_peaks_expected:])
ref_peak_indices = sorted(numpy.argpartition(
ref_fft, -num_freq_peaks_expected)[-num_freq_peaks_expected:])
# Ensure that the corresponding frequencies of the peaks are close:
for cap_freq_index, ref_freq_index in zip(cap_peak_indices,
ref_peak_indices):
cap_freq = cap_freq_index / float(len(cap)) * (sampling_rate / 2)
ref_freq = ref_freq_index / float(len(ref)) * (sampling_rate / 2)
diff = abs(cap_freq - ref_freq)
self.assertLess(diff, 1.0)
# As an additional test, verify that the spectrum (not just
# the peaks) of the reference and captured signal are similar
# by computing the cross-correlation of the spectra. Assuming they
# are nearly identical, the cross-correlation should contain a large
# peak when the spectra overlap and mostly 0s elsewhere. Verify that
# using a histogram of the cross-correlation:
freq_corr_hist, _ = numpy.histogram(
numpy.correlate(cap_fft, ref_fft, mode='full'),
bins=10)
self.assertLess(sum(freq_corr_hist[2:])/sum(freq_corr_hist), 1e-2)