From c1f4cefe71e2c2151d959bd677eba3e10a26b888 Mon Sep 17 00:00:00 2001 From: ggventurini Date: Sat, 18 Jan 2014 12:50:56 +0100 Subject: [PATCH 1/2] PYPI packaging. Rename. Tag 0.1rc1. --- README.md | 28 +- {pydelsigma => deltasigma}/_DocumentNTF.py | 2 +- .../_PlotExampleSpectrum.py | 2 +- {pydelsigma => deltasigma}/_SIunits.py | 0 {pydelsigma => deltasigma}/__init__.py | 28 +- {pydelsigma => deltasigma}/_axisLabels.py | 0 {pydelsigma => deltasigma}/_bilogplot.py | 0 {pydelsigma => deltasigma}/_bplogsmooth.py | 0 {pydelsigma => deltasigma}/_bquantize.py | 0 {pydelsigma => deltasigma}/_bunquantize.py | 0 {pydelsigma => deltasigma}/_calculateSNR.py | 0 {pydelsigma => deltasigma}/_calculateTF.py | 2 +- {pydelsigma => deltasigma}/_cancelPZ.py | 0 {pydelsigma => deltasigma}/_changeFig.py | 0 {pydelsigma => deltasigma}/_circ_smooth.py | 2 +- {pydelsigma => deltasigma}/_clans.py | 2 +- {pydelsigma => deltasigma}/_config.py | 0 {pydelsigma => deltasigma}/_constants.py | 0 {pydelsigma => deltasigma}/_db.py | 0 {pydelsigma => deltasigma}/_dbm.py | 0 {pydelsigma => deltasigma}/_dbp.py | 0 {pydelsigma => deltasigma}/_dbv.py | 0 {pydelsigma => deltasigma}/_delay.py | 0 {pydelsigma => deltasigma}/_ds_f1f2.py | 0 {pydelsigma => deltasigma}/_ds_freq.py | 0 {pydelsigma => deltasigma}/_ds_hann.py | 2 +- {pydelsigma => deltasigma}/_ds_optzeros.py | 0 {pydelsigma => deltasigma}/_ds_quantize.py | 0 {pydelsigma => deltasigma}/_ds_synNTFobj1.py | 0 {pydelsigma => deltasigma}/_dsclansNTF.py | 0 {pydelsigma => deltasigma}/_evalF0.py | 0 {pydelsigma => deltasigma}/_evalF1.py | 0 {pydelsigma => deltasigma}/_evalMixedTF.py | 0 {pydelsigma => deltasigma}/_evalRPoly.py | 0 {pydelsigma => deltasigma}/_evalTF.py | 0 {pydelsigma => deltasigma}/_evalTFP.py | 8 +- {pydelsigma => deltasigma}/_figureMagic.py | 2 +- {pydelsigma => deltasigma}/_frespF1.py | 0 {pydelsigma => deltasigma}/_impL1.py | 0 {pydelsigma => deltasigma}/_infnorm.py | 0 {pydelsigma => deltasigma}/_l1norm.py | 0 {pydelsigma => deltasigma}/_logsmooth.py | 2 +- {pydelsigma => deltasigma}/_lollipop.py | 2 +- {pydelsigma => deltasigma}/_mapABCD.py | 0 {pydelsigma => deltasigma}/_mapCtoD.py | 2 +- {pydelsigma => deltasigma}/_mapQtoR.py | 2 +- {pydelsigma => deltasigma}/_mapRtoQ.py | 0 {pydelsigma => deltasigma}/_mod1.py | 0 {pydelsigma => deltasigma}/_mod2.py | 0 {pydelsigma => deltasigma}/_nabsH.py | 0 {pydelsigma => deltasigma}/_padb.py | 0 {pydelsigma => deltasigma}/_padl.py | 0 {pydelsigma => deltasigma}/_padr.py | 0 {pydelsigma => deltasigma}/_padt.py | 0 {pydelsigma => deltasigma}/_partitionABCD.py | 0 {pydelsigma => deltasigma}/_peakSNR.py | 0 {pydelsigma => deltasigma}/_plotPZ.py | 2 +- {pydelsigma => deltasigma}/_plotSpectrum.py | 2 +- {pydelsigma => deltasigma}/_predictSNR.py | 0 {pydelsigma => deltasigma}/_pulse.py | 0 {pydelsigma => deltasigma}/_realizeNTF.py | 2 +- {pydelsigma => deltasigma}/_realizeNTF_ct.py | 2 +- {pydelsigma => deltasigma}/_rms.py | 0 {pydelsigma => deltasigma}/_rmsGain.py | 0 {pydelsigma => deltasigma}/_scaleABCD.py | 0 {pydelsigma => deltasigma}/_simulateDSM.py | 4 +- {pydelsigma => deltasigma}/_simulateSNR.py | 4 +- {pydelsigma => deltasigma}/_sinc_decimate.py | 0 {pydelsigma => deltasigma}/_stuffABCD.py | 0 .../_synthesizeChebyshevNTF.py | 4 +- {pydelsigma => deltasigma}/_synthesizeNTF.py | 4 +- {pydelsigma => deltasigma}/_synthesizeNTF0.py | 0 {pydelsigma => deltasigma}/_synthesizeNTF1.py | 0 {pydelsigma => deltasigma}/_thermometer.py | 0 {pydelsigma => deltasigma}/_undbm.py | 0 {pydelsigma => deltasigma}/_undbp.py | 0 {pydelsigma => deltasigma}/_undbv.py | 0 {pydelsigma => deltasigma}/_utils.py | 0 {pydelsigma => deltasigma}/_zinc.py | 0 .../test_data/test_bquantize.mat | Bin .../test_data/test_bquantize.txt | 0 .../test_data/test_circ_smooth.mat | Bin .../test_data/test_circ_smooth.txt | 0 .../test_data/test_ds_optzeros.mat | Bin .../test_data/test_ds_optzeros.txt | 0 .../test_data/test_pulse.mat | Bin .../test_data/test_pulse.txt | 0 .../test_data/test_simulateDSM.mat | Bin .../test_data/test_simulateDSM.txt | 0 .../test_data/test_snr_amp.mat | Bin doc/index.rst | 2 +- ez_setup.py | 361 ++++++++++++++++++ pypi_description.rst | 77 ++++ setup.py | 65 ++-- 94 files changed, 553 insertions(+), 62 deletions(-) rename {pydelsigma => deltasigma}/_DocumentNTF.py (99%) rename {pydelsigma => deltasigma}/_PlotExampleSpectrum.py (98%) rename {pydelsigma => deltasigma}/_SIunits.py (100%) rename {pydelsigma => deltasigma}/__init__.py (96%) rename {pydelsigma => deltasigma}/_axisLabels.py (100%) rename {pydelsigma => deltasigma}/_bilogplot.py (100%) rename {pydelsigma => deltasigma}/_bplogsmooth.py (100%) rename {pydelsigma => deltasigma}/_bquantize.py (100%) rename {pydelsigma => deltasigma}/_bunquantize.py (100%) rename {pydelsigma => deltasigma}/_calculateSNR.py (100%) rename {pydelsigma => deltasigma}/_calculateTF.py (99%) rename {pydelsigma => deltasigma}/_cancelPZ.py (100%) rename {pydelsigma => deltasigma}/_changeFig.py (100%) rename {pydelsigma => deltasigma}/_circ_smooth.py (99%) rename {pydelsigma => deltasigma}/_clans.py (99%) rename {pydelsigma => deltasigma}/_config.py (100%) rename {pydelsigma => deltasigma}/_constants.py (100%) rename {pydelsigma => deltasigma}/_db.py (100%) rename {pydelsigma => deltasigma}/_dbm.py (100%) rename {pydelsigma => deltasigma}/_dbp.py (100%) rename {pydelsigma => deltasigma}/_dbv.py (100%) rename {pydelsigma => deltasigma}/_delay.py (100%) rename {pydelsigma => deltasigma}/_ds_f1f2.py (100%) rename {pydelsigma => deltasigma}/_ds_freq.py (100%) rename {pydelsigma => deltasigma}/_ds_hann.py (98%) rename {pydelsigma => deltasigma}/_ds_optzeros.py (100%) rename {pydelsigma => deltasigma}/_ds_quantize.py (100%) rename {pydelsigma => deltasigma}/_ds_synNTFobj1.py (100%) rename {pydelsigma => deltasigma}/_dsclansNTF.py (100%) rename {pydelsigma => deltasigma}/_evalF0.py (100%) rename {pydelsigma => deltasigma}/_evalF1.py (100%) rename {pydelsigma => deltasigma}/_evalMixedTF.py (100%) rename {pydelsigma => deltasigma}/_evalRPoly.py (100%) rename {pydelsigma => deltasigma}/_evalTF.py (100%) rename {pydelsigma => deltasigma}/_evalTFP.py (97%) rename {pydelsigma => deltasigma}/_figureMagic.py (98%) rename {pydelsigma => deltasigma}/_frespF1.py (100%) rename {pydelsigma => deltasigma}/_impL1.py (100%) rename {pydelsigma => deltasigma}/_infnorm.py (100%) rename {pydelsigma => deltasigma}/_l1norm.py (100%) rename {pydelsigma => deltasigma}/_logsmooth.py (99%) rename {pydelsigma => deltasigma}/_lollipop.py (98%) rename {pydelsigma => deltasigma}/_mapABCD.py (100%) rename {pydelsigma => deltasigma}/_mapCtoD.py (99%) rename {pydelsigma => deltasigma}/_mapQtoR.py (99%) rename {pydelsigma => deltasigma}/_mapRtoQ.py (100%) rename {pydelsigma => deltasigma}/_mod1.py (100%) rename {pydelsigma => deltasigma}/_mod2.py (100%) rename {pydelsigma => deltasigma}/_nabsH.py (100%) rename {pydelsigma => deltasigma}/_padb.py (100%) rename {pydelsigma => deltasigma}/_padl.py (100%) rename {pydelsigma => deltasigma}/_padr.py (100%) rename {pydelsigma => deltasigma}/_padt.py (100%) rename {pydelsigma => deltasigma}/_partitionABCD.py (100%) rename {pydelsigma => deltasigma}/_peakSNR.py (100%) rename {pydelsigma => deltasigma}/_plotPZ.py (98%) rename {pydelsigma => deltasigma}/_plotSpectrum.py (99%) rename {pydelsigma => deltasigma}/_predictSNR.py (100%) rename {pydelsigma => deltasigma}/_pulse.py (100%) rename {pydelsigma => deltasigma}/_realizeNTF.py (99%) rename {pydelsigma => deltasigma}/_realizeNTF_ct.py (99%) rename {pydelsigma => deltasigma}/_rms.py (100%) rename {pydelsigma => deltasigma}/_rmsGain.py (100%) rename {pydelsigma => deltasigma}/_scaleABCD.py (100%) rename {pydelsigma => deltasigma}/_simulateDSM.py (99%) rename {pydelsigma => deltasigma}/_simulateSNR.py (99%) rename {pydelsigma => deltasigma}/_sinc_decimate.py (100%) rename {pydelsigma => deltasigma}/_stuffABCD.py (100%) rename {pydelsigma => deltasigma}/_synthesizeChebyshevNTF.py (99%) rename {pydelsigma => deltasigma}/_synthesizeNTF.py (98%) rename {pydelsigma => deltasigma}/_synthesizeNTF0.py (100%) rename {pydelsigma => deltasigma}/_synthesizeNTF1.py (100%) rename {pydelsigma => deltasigma}/_thermometer.py (100%) rename {pydelsigma => deltasigma}/_undbm.py (100%) rename {pydelsigma => deltasigma}/_undbp.py (100%) rename {pydelsigma => deltasigma}/_undbv.py (100%) rename {pydelsigma => deltasigma}/_utils.py (100%) rename {pydelsigma => deltasigma}/_zinc.py (100%) rename {pydelsigma => deltasigma}/test_data/test_bquantize.mat (100%) rename {pydelsigma => deltasigma}/test_data/test_bquantize.txt (100%) rename {pydelsigma => deltasigma}/test_data/test_circ_smooth.mat (100%) rename {pydelsigma => deltasigma}/test_data/test_circ_smooth.txt (100%) rename {pydelsigma => deltasigma}/test_data/test_ds_optzeros.mat (100%) rename {pydelsigma => deltasigma}/test_data/test_ds_optzeros.txt (100%) rename {pydelsigma => deltasigma}/test_data/test_pulse.mat (100%) rename {pydelsigma => deltasigma}/test_data/test_pulse.txt (100%) rename {pydelsigma => deltasigma}/test_data/test_simulateDSM.mat (100%) rename {pydelsigma => deltasigma}/test_data/test_simulateDSM.txt (100%) rename {pydelsigma => deltasigma}/test_data/test_snr_amp.mat (100%) create mode 100644 ez_setup.py create mode 100644 pypi_description.rst diff --git a/README.md b/README.md index f0f4182..cdd39aa 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ This project is a work in progress. Not all functionality has been ported. Take [![Build Status](https://travis-ci.org/ggventurini/python-deltasigma.png?branch=master)](https://travis-ci.org/ggventurini/python-deltasigma) [![Coverage Status](https://coveralls.io/repos/ggventurini/python-deltasigma/badge.png?branch=master)](https://coveralls.io/r/ggventurini/python-deltasigma?branch=master) -To have an idea of the currently implemented functionality, take a look at these **preliminary results**: +To have an idea of the currently implemented functionality, take a look at these [IPython](http://ipython.org/) notebooks: * **[dsdemo1](http://nbviewer.ipython.org/gist/ggventurini/8040189)**, notebook port of the interactive `dsdemo1.m`. * **[dsdemo2](http://nbviewer.ipython.org/gist/ggventurini/8044644)**, notebook port of the interactive `dsdemo2.m`. @@ -74,7 +74,29 @@ More information can be found on the I wrote in a different context some directions to [compile numpy and scipy yourself](https://github.com/ahkab/ahkab/wiki/Install:-numpy-and-scipy), which also apply here. Be warned, it can easily get complicated. -#### Extras +### Install python-deltasigma + +You can install the latest stable version directly from the [Python +Package Index (PYPI)](http://pypi.python.org), running: + + pip install deltasigma + +The above command will also attempt to compile and install the +dependencies -for this to work you should already have the required +libraries in place. + +Otherwise, you can download the code from [the Github +repository](http://github.com/ggventurini/python-deltasigma). + +Then run: + + python setup.py install + +The flag `--local` may be an interesting option to install the package +for the current user only, and it doesn't require root privileges. + + +### Extras Building the documentation requires the **[sphinx](http://sphinx-doc.org/)** package. It is an optional step, as the [the latest documentation is available online](http://python-deltasigma.readthedocs.org/en/latest/), without need for you to build it. @@ -82,7 +104,7 @@ If you plan to run the provided unit tests, then you should install **[setuptools](https://pypi.python.org/pypi/setuptools)**, used to access the reference function outputs. Testing *can* be automated with **[nose](https://pypi.python.org/pypi/nose/)**, issuing -`$ nosetests -v pydelsigma/*.py`. +`$ nosetests -v deltasigma/*.py`. ## Documentation diff --git a/pydelsigma/_DocumentNTF.py b/deltasigma/_DocumentNTF.py similarity index 99% rename from pydelsigma/_DocumentNTF.py rename to deltasigma/_DocumentNTF.py index f5cc6b9..2927004 100644 --- a/pydelsigma/_DocumentNTF.py +++ b/deltasigma/_DocumentNTF.py @@ -38,7 +38,7 @@ def DocumentNTF(arg1, osr=64, f0=0, quadrature=False): .. plot:: - from pydelsigma import * + from deltasigma import * import pylab as plt order = 4 osr = 64 diff --git a/pydelsigma/_PlotExampleSpectrum.py b/deltasigma/_PlotExampleSpectrum.py similarity index 98% rename from pydelsigma/_PlotExampleSpectrum.py rename to deltasigma/_PlotExampleSpectrum.py index 42ca3aa..af56b74 100644 --- a/pydelsigma/_PlotExampleSpectrum.py +++ b/deltasigma/_PlotExampleSpectrum.py @@ -47,7 +47,7 @@ def PlotExampleSpectrum(ntf, M=1, osr=64, f0=0, quadrature=False): .. plot:: import pylab as plt - from pydelsigma import synthesizeNTF, PlotExampleSpectrum + from deltasigma import synthesizeNTF, PlotExampleSpectrum order = 3 osr = 32 f0 = 0. diff --git a/pydelsigma/_SIunits.py b/deltasigma/_SIunits.py similarity index 100% rename from pydelsigma/_SIunits.py rename to deltasigma/_SIunits.py diff --git a/pydelsigma/__init__.py b/deltasigma/__init__.py similarity index 96% rename from pydelsigma/__init__.py rename to deltasigma/__init__.py index 78209f6..ee48067 100644 --- a/pydelsigma/__init__.py +++ b/deltasigma/__init__.py @@ -124,6 +124,28 @@ yourself `__, which also apply here. Be warned, it can easily get complicated. +Install python-deltasigma +~~~~~~~~~~~~~~~~~~~~~~~~~ + +You can install the latest stable version directly from the `Python Package +Index (PYPI) `__, running:: + + pip install deltasigma + +The above command will also attempt to compile and install the dependencies - +for this to work you should already have the required libraries in place. + +Otherwise, you can head over to `the Github repository +`__ and download the code +from there. + +Then run:: + + python setup.py install + +The flag ``--local`` may be an interesting option to install the package for +the current user only, and it doesn't require root privileges. + Extras ~~~~~~ @@ -138,7 +160,7 @@ access the reference function outputs. Testing *can* be automated with `nose `__, issuing:: - $ nosetests -v pydelsigma/*.py + $ nosetests -v deltasigma/*.py Documentation ------------- @@ -567,10 +589,10 @@ __copyright__ = "Copyright 2013, Giuseppe Venturini" __credits__ = ["Giuseppe Venturini"] __license__ = "BSD 3-Clause License" -__version__ = '0.0001alpha' +__version__ = '0.1rc1' __maintainer__ = "Giuseppe Venturini" __email__ = "ggventurini+github@gmail.com" -__status__ = "Pre-Pre-Alpha" +__status__ = "Stable" # Package testing can be done remotely, without display. This would make # matplotlib fail (and consequently, the test itself). diff --git a/pydelsigma/_axisLabels.py b/deltasigma/_axisLabels.py similarity index 100% rename from pydelsigma/_axisLabels.py rename to deltasigma/_axisLabels.py diff --git a/pydelsigma/_bilogplot.py b/deltasigma/_bilogplot.py similarity index 100% rename from pydelsigma/_bilogplot.py rename to deltasigma/_bilogplot.py diff --git a/pydelsigma/_bplogsmooth.py b/deltasigma/_bplogsmooth.py similarity index 100% rename from pydelsigma/_bplogsmooth.py rename to deltasigma/_bplogsmooth.py diff --git a/pydelsigma/_bquantize.py b/deltasigma/_bquantize.py similarity index 100% rename from pydelsigma/_bquantize.py rename to deltasigma/_bquantize.py diff --git a/pydelsigma/_bunquantize.py b/deltasigma/_bunquantize.py similarity index 100% rename from pydelsigma/_bunquantize.py rename to deltasigma/_bunquantize.py diff --git a/pydelsigma/_calculateSNR.py b/deltasigma/_calculateSNR.py similarity index 100% rename from pydelsigma/_calculateSNR.py rename to deltasigma/_calculateSNR.py diff --git a/pydelsigma/_calculateTF.py b/deltasigma/_calculateTF.py similarity index 99% rename from pydelsigma/_calculateTF.py rename to deltasigma/_calculateTF.py index 47812d0..3e229ed 100644 --- a/pydelsigma/_calculateTF.py +++ b/deltasigma/_calculateTF.py @@ -46,7 +46,7 @@ def calculateTF(ABCD, k=1.): .. code-block:: python - from pydelsigma import * + from deltasigma import * H = synthesizeNTF(5, 32, 1) a, g, b, c = realizeNTF(H) ABCD = stuffABCD(a,g,b,c) diff --git a/pydelsigma/_cancelPZ.py b/deltasigma/_cancelPZ.py similarity index 100% rename from pydelsigma/_cancelPZ.py rename to deltasigma/_cancelPZ.py diff --git a/pydelsigma/_changeFig.py b/deltasigma/_changeFig.py similarity index 100% rename from pydelsigma/_changeFig.py rename to deltasigma/_changeFig.py diff --git a/pydelsigma/_circ_smooth.py b/deltasigma/_circ_smooth.py similarity index 99% rename from pydelsigma/_circ_smooth.py rename to deltasigma/_circ_smooth.py index 1a97916..dcad641 100755 --- a/pydelsigma/_circ_smooth.py +++ b/deltasigma/_circ_smooth.py @@ -52,7 +52,7 @@ def circ_smooth(x, n=16): .. plot:: import numpy as np - from pydelsigma import * + from deltasigma import * from numpy.fft import fft f0 = 0 osr = 32 diff --git a/pydelsigma/_clans.py b/deltasigma/_clans.py similarity index 99% rename from pydelsigma/_clans.py rename to deltasigma/_clans.py index a2d5554..943ba2c 100644 --- a/pydelsigma/_clans.py +++ b/deltasigma/_clans.py @@ -89,7 +89,7 @@ def clans(order=4, OSR=64, Q=5, rmax=0.95, opt=0): .. plot:: - from pydelsigma import DocumentNTF, clans + from deltasigma import DocumentNTF, clans # Fifth-order lowpass modulator; (time-domain) noise gain of 5, # zeros optimized for OSR = 32. H = clans(5, 32, 5, .95, 1) diff --git a/pydelsigma/_config.py b/deltasigma/_config.py similarity index 100% rename from pydelsigma/_config.py rename to deltasigma/_config.py diff --git a/pydelsigma/_constants.py b/deltasigma/_constants.py similarity index 100% rename from pydelsigma/_constants.py rename to deltasigma/_constants.py diff --git a/pydelsigma/_db.py b/deltasigma/_db.py similarity index 100% rename from pydelsigma/_db.py rename to deltasigma/_db.py diff --git a/pydelsigma/_dbm.py b/deltasigma/_dbm.py similarity index 100% rename from pydelsigma/_dbm.py rename to deltasigma/_dbm.py diff --git a/pydelsigma/_dbp.py b/deltasigma/_dbp.py similarity index 100% rename from pydelsigma/_dbp.py rename to deltasigma/_dbp.py diff --git a/pydelsigma/_dbv.py b/deltasigma/_dbv.py similarity index 100% rename from pydelsigma/_dbv.py rename to deltasigma/_dbv.py diff --git a/pydelsigma/_delay.py b/deltasigma/_delay.py similarity index 100% rename from pydelsigma/_delay.py rename to deltasigma/_delay.py diff --git a/pydelsigma/_ds_f1f2.py b/deltasigma/_ds_f1f2.py similarity index 100% rename from pydelsigma/_ds_f1f2.py rename to deltasigma/_ds_f1f2.py diff --git a/pydelsigma/_ds_freq.py b/deltasigma/_ds_freq.py similarity index 100% rename from pydelsigma/_ds_freq.py rename to deltasigma/_ds_freq.py diff --git a/pydelsigma/_ds_hann.py b/deltasigma/_ds_hann.py similarity index 98% rename from pydelsigma/_ds_hann.py rename to deltasigma/_ds_hann.py index 776b6cb..49c3519 100755 --- a/pydelsigma/_ds_hann.py +++ b/deltasigma/_ds_hann.py @@ -47,7 +47,7 @@ def ds_hann(n): .. plot:: import pylab as plt - from pydelsigma import ds_hann + from deltasigma import ds_hann x = ds_hann(100) plt.figure(figsize=(12, 5)) plt.plot(x, 'o-') diff --git a/pydelsigma/_ds_optzeros.py b/deltasigma/_ds_optzeros.py similarity index 100% rename from pydelsigma/_ds_optzeros.py rename to deltasigma/_ds_optzeros.py diff --git a/pydelsigma/_ds_quantize.py b/deltasigma/_ds_quantize.py similarity index 100% rename from pydelsigma/_ds_quantize.py rename to deltasigma/_ds_quantize.py diff --git a/pydelsigma/_ds_synNTFobj1.py b/deltasigma/_ds_synNTFobj1.py similarity index 100% rename from pydelsigma/_ds_synNTFobj1.py rename to deltasigma/_ds_synNTFobj1.py diff --git a/pydelsigma/_dsclansNTF.py b/deltasigma/_dsclansNTF.py similarity index 100% rename from pydelsigma/_dsclansNTF.py rename to deltasigma/_dsclansNTF.py diff --git a/pydelsigma/_evalF0.py b/deltasigma/_evalF0.py similarity index 100% rename from pydelsigma/_evalF0.py rename to deltasigma/_evalF0.py diff --git a/pydelsigma/_evalF1.py b/deltasigma/_evalF1.py similarity index 100% rename from pydelsigma/_evalF1.py rename to deltasigma/_evalF1.py diff --git a/pydelsigma/_evalMixedTF.py b/deltasigma/_evalMixedTF.py similarity index 100% rename from pydelsigma/_evalMixedTF.py rename to deltasigma/_evalMixedTF.py diff --git a/pydelsigma/_evalRPoly.py b/deltasigma/_evalRPoly.py similarity index 100% rename from pydelsigma/_evalRPoly.py rename to deltasigma/_evalRPoly.py diff --git a/pydelsigma/_evalTF.py b/deltasigma/_evalTF.py similarity index 100% rename from pydelsigma/_evalTF.py rename to deltasigma/_evalTF.py diff --git a/pydelsigma/_evalTFP.py b/deltasigma/_evalTFP.py similarity index 97% rename from pydelsigma/_evalTFP.py rename to deltasigma/_evalTFP.py index dd18887..947f111 100644 --- a/pydelsigma/_evalTFP.py +++ b/deltasigma/_evalTFP.py @@ -54,8 +54,8 @@ def evalTFP(Hs, Hz, f): import numpy as np import pylab as plt from scipy.signal import lti - from pydelsigma import * - from pydelsigma._utils import _get_zpk + from deltasigma import * + from deltasigma._utils import _get_zpk Ac = np.array([[0, 0], [1, 0]]) Bc = np.array([[1, -1], [0, -1.5]]) Cc = np.array([[0, 1]]) @@ -83,8 +83,8 @@ def evalTFP(Hs, Hz, f): import numpy as np import pylab as plt from scipy.signal import lti - from pydelsigma import * - from pydelsigma._utils import _get_zpk + from deltasigma import * + from deltasigma._utils import _get_zpk Ac = np.array([[0, 0], [1, 0]]) Bc = np.array([[1, -1], [0, -1.5]]) Cc = np.array([[0, 1]]) diff --git a/pydelsigma/_figureMagic.py b/deltasigma/_figureMagic.py similarity index 98% rename from pydelsigma/_figureMagic.py rename to deltasigma/_figureMagic.py index 32deacf..86d2d09 100644 --- a/pydelsigma/_figureMagic.py +++ b/deltasigma/_figureMagic.py @@ -60,7 +60,7 @@ def figureMagic(xRange=None, dx=None, xLab=None, yRange=None, dy=None, yLab=None import numpy as np import pylab as plt - from pydelsigma import figureMagic + from deltasigma import figureMagic t = np.linspace(0, 1) a = np.sin(2*np.pi*t + np.pi/4) plt.subplot(121) diff --git a/pydelsigma/_frespF1.py b/deltasigma/_frespF1.py similarity index 100% rename from pydelsigma/_frespF1.py rename to deltasigma/_frespF1.py diff --git a/pydelsigma/_impL1.py b/deltasigma/_impL1.py similarity index 100% rename from pydelsigma/_impL1.py rename to deltasigma/_impL1.py diff --git a/pydelsigma/_infnorm.py b/deltasigma/_infnorm.py similarity index 100% rename from pydelsigma/_infnorm.py rename to deltasigma/_infnorm.py diff --git a/pydelsigma/_l1norm.py b/deltasigma/_l1norm.py similarity index 100% rename from pydelsigma/_l1norm.py rename to deltasigma/_l1norm.py diff --git a/pydelsigma/_logsmooth.py b/deltasigma/_logsmooth.py similarity index 99% rename from pydelsigma/_logsmooth.py rename to deltasigma/_logsmooth.py index 9b22ca4..3717953 100644 --- a/pydelsigma/_logsmooth.py +++ b/deltasigma/_logsmooth.py @@ -73,7 +73,7 @@ def logsmooth(X, inBin, nbin=8, n=3): import matplotlib.pyplot as plt import numpy as np - from pydelsigma import dbv, ds_hann, figureMagic, logsmooth + from deltasigma import dbv, ds_hann, figureMagic, logsmooth T = 2 #s Fs = 231e3 #Hz N = int(np.round(T*Fs, 0)) # FFT points diff --git a/pydelsigma/_lollipop.py b/deltasigma/_lollipop.py similarity index 98% rename from pydelsigma/_lollipop.py rename to deltasigma/_lollipop.py index e9a14c4..6c6c059 100644 --- a/pydelsigma/_lollipop.py +++ b/deltasigma/_lollipop.py @@ -55,7 +55,7 @@ def lollipop(x, y, color='b', lw=2, ybot=0): import matplotlib.pyplot as plt import numpy as np - from pydelsigma import lollipop + from deltasigma import lollipop t = np.arange(1, 20)*1e-3 f = 20. a = np.sin(2*np.pi*f*t) diff --git a/pydelsigma/_mapABCD.py b/deltasigma/_mapABCD.py similarity index 100% rename from pydelsigma/_mapABCD.py rename to deltasigma/_mapABCD.py diff --git a/pydelsigma/_mapCtoD.py b/deltasigma/_mapCtoD.py similarity index 99% rename from pydelsigma/_mapCtoD.py rename to deltasigma/_mapCtoD.py index 9c4175e..fb3e687 100644 --- a/pydelsigma/_mapCtoD.py +++ b/deltasigma/_mapCtoD.py @@ -87,7 +87,7 @@ def mapCtoD(sys_c, t=(0, 1), f0=0.): from __future__ import print_function import numpy as np from scipy.signal import lti - from pydelsigma import * + from deltasigma import * LFc = lti([[0, 0], [1, 0]], [[1, -1], [0, -1.5]], [[0, 1]], [[0, 0]]) tdac = [0, 1] LF, Gp = mapCtoD(LFc, tdac) diff --git a/pydelsigma/_mapQtoR.py b/deltasigma/_mapQtoR.py similarity index 99% rename from pydelsigma/_mapQtoR.py rename to deltasigma/_mapQtoR.py index 644ac70..9204f6a 100644 --- a/pydelsigma/_mapQtoR.py +++ b/deltasigma/_mapQtoR.py @@ -39,7 +39,7 @@ def mapQtoR(ABCD): The non-quadrature topology can be simulated with :func:`simulateDSM`.:: import numpy as np - from pydelsigma import * + from deltasigma import * nlev = 9 f0 = 1./16. osr = 32 diff --git a/pydelsigma/_mapRtoQ.py b/deltasigma/_mapRtoQ.py similarity index 100% rename from pydelsigma/_mapRtoQ.py rename to deltasigma/_mapRtoQ.py diff --git a/pydelsigma/_mod1.py b/deltasigma/_mod1.py similarity index 100% rename from pydelsigma/_mod1.py rename to deltasigma/_mod1.py diff --git a/pydelsigma/_mod2.py b/deltasigma/_mod2.py similarity index 100% rename from pydelsigma/_mod2.py rename to deltasigma/_mod2.py diff --git a/pydelsigma/_nabsH.py b/deltasigma/_nabsH.py similarity index 100% rename from pydelsigma/_nabsH.py rename to deltasigma/_nabsH.py diff --git a/pydelsigma/_padb.py b/deltasigma/_padb.py similarity index 100% rename from pydelsigma/_padb.py rename to deltasigma/_padb.py diff --git a/pydelsigma/_padl.py b/deltasigma/_padl.py similarity index 100% rename from pydelsigma/_padl.py rename to deltasigma/_padl.py diff --git a/pydelsigma/_padr.py b/deltasigma/_padr.py similarity index 100% rename from pydelsigma/_padr.py rename to deltasigma/_padr.py diff --git a/pydelsigma/_padt.py b/deltasigma/_padt.py similarity index 100% rename from pydelsigma/_padt.py rename to deltasigma/_padt.py diff --git a/pydelsigma/_partitionABCD.py b/deltasigma/_partitionABCD.py similarity index 100% rename from pydelsigma/_partitionABCD.py rename to deltasigma/_partitionABCD.py diff --git a/pydelsigma/_peakSNR.py b/deltasigma/_peakSNR.py similarity index 100% rename from pydelsigma/_peakSNR.py rename to deltasigma/_peakSNR.py diff --git a/pydelsigma/_plotPZ.py b/deltasigma/_plotPZ.py similarity index 98% rename from pydelsigma/_plotPZ.py rename to deltasigma/_plotPZ.py index 21f2181..f959ce8 100644 --- a/pydelsigma/_plotPZ.py +++ b/deltasigma/_plotPZ.py @@ -44,7 +44,7 @@ def plotPZ(H, color='b', markersize=5, showlist=False): .. plot:: import pylab as plt - from pydelsigma import synthesizeNTF, plotPZ + from deltasigma import synthesizeNTF, plotPZ order = 5 osr = 32 f0 = 0. diff --git a/pydelsigma/_plotSpectrum.py b/deltasigma/_plotSpectrum.py similarity index 99% rename from pydelsigma/_plotSpectrum.py rename to deltasigma/_plotSpectrum.py index 703f8df..2e0713c 100755 --- a/pydelsigma/_plotSpectrum.py +++ b/deltasigma/_plotSpectrum.py @@ -48,7 +48,7 @@ def plotSpectrum(X, fin, fmt='-', **xargs): .. plot:: import numpy as np - from pydelsigma import * + from deltasigma import * from numpy.fft import fft f0 = 0 osr = 32 diff --git a/pydelsigma/_predictSNR.py b/deltasigma/_predictSNR.py similarity index 100% rename from pydelsigma/_predictSNR.py rename to deltasigma/_predictSNR.py diff --git a/pydelsigma/_pulse.py b/deltasigma/_pulse.py similarity index 100% rename from pydelsigma/_pulse.py rename to deltasigma/_pulse.py diff --git a/pydelsigma/_realizeNTF.py b/deltasigma/_realizeNTF.py similarity index 99% rename from pydelsigma/_realizeNTF.py rename to deltasigma/_realizeNTF.py index 9ef6d72..5aa0ac7 100644 --- a/pydelsigma/_realizeNTF.py +++ b/deltasigma/_realizeNTF.py @@ -75,7 +75,7 @@ def realizeNTF(ntf, form='CRFB', stf=None): Determine the coefficients for a 5th-order modulator with the cascade-of-resonators structure, feedback (CRFB) form.:: - from pydelsigma import synthesizeNTF, realizeNTF + from deltasigma import synthesizeNTF, realizeNTF H = synthesizeNTF(5, 32, 1) a, g, b, c = realizeNTF(H,'CRFB') diff --git a/pydelsigma/_realizeNTF_ct.py b/deltasigma/_realizeNTF_ct.py similarity index 99% rename from pydelsigma/_realizeNTF_ct.py rename to deltasigma/_realizeNTF_ct.py index 372c4bf..f46711c 100644 --- a/pydelsigma/_realizeNTF_ct.py +++ b/deltasigma/_realizeNTF_ct.py @@ -90,7 +90,7 @@ def realizeNTF_ct(ntf, form='FB', tdac=(0, 1), ordering=None, bp=None, Realize the NTF :math:`(1 - z^{-1})^2` with a CT system (cf with the example at :func:`mapCtoD`).:: - from pydelsigma import * + from deltasigma import * ntf = ([1, 1], [0, 0], 1) ABCDc, tdac2 = realizeNTF_ct(ntf, 'FB') diff --git a/pydelsigma/_rms.py b/deltasigma/_rms.py similarity index 100% rename from pydelsigma/_rms.py rename to deltasigma/_rms.py diff --git a/pydelsigma/_rmsGain.py b/deltasigma/_rmsGain.py similarity index 100% rename from pydelsigma/_rmsGain.py rename to deltasigma/_rmsGain.py diff --git a/pydelsigma/_scaleABCD.py b/deltasigma/_scaleABCD.py similarity index 100% rename from pydelsigma/_scaleABCD.py rename to deltasigma/_scaleABCD.py diff --git a/pydelsigma/_simulateDSM.py b/deltasigma/_simulateDSM.py similarity index 99% rename from pydelsigma/_simulateDSM.py rename to deltasigma/_simulateDSM.py index f7033a4..724a6a5 100644 --- a/pydelsigma/_simulateDSM.py +++ b/deltasigma/_simulateDSM.py @@ -46,7 +46,7 @@ def simulateDSM(u, arg2, nlev=2, x0=0): plot its output in the time and frequency domains.:: import numpy as np - from pydelsigma import * + from deltasigma import * OSR = 32 H = synthesizeNTF(5, OSR, 1) N = 8192 @@ -62,7 +62,7 @@ def simulateDSM(u, arg2, nlev=2, x0=0): import numpy as np import pylab as plt from numpy.fft import fft - from pydelsigma import * + from deltasigma import * OSR = 32 H = synthesizeNTF(5, OSR, 1) N = 8192 diff --git a/pydelsigma/_simulateSNR.py b/deltasigma/_simulateSNR.py similarity index 99% rename from pydelsigma/_simulateSNR.py rename to deltasigma/_simulateSNR.py index 089932f..5edc439 100644 --- a/pydelsigma/_simulateSNR.py +++ b/deltasigma/_simulateSNR.py @@ -120,7 +120,7 @@ def simulateSNR(arg1, osr, amp=None, f0=0, nlev=2, f=None, k=13, that determined by simulation (:func:`simulateSNR`).:: import pylab as plt - from pydelsigma import * + from deltasigma import * OSR = 32 H = synthesizeNTF(5, OSR, 1) snr_pred, amp, _, _, _ = predictSNR(H,OSR) @@ -137,7 +137,7 @@ def simulateSNR(arg1, osr, amp=None, f0=0, nlev=2, f=None, k=13, .. plot:: import pylab as plt - from pydelsigma import * + from deltasigma import * OSR = 32 H = synthesizeNTF(5, OSR, 1) snr_pred, amp, _, _, _ = predictSNR(H,OSR) diff --git a/pydelsigma/_sinc_decimate.py b/deltasigma/_sinc_decimate.py similarity index 100% rename from pydelsigma/_sinc_decimate.py rename to deltasigma/_sinc_decimate.py diff --git a/pydelsigma/_stuffABCD.py b/deltasigma/_stuffABCD.py similarity index 100% rename from pydelsigma/_stuffABCD.py rename to deltasigma/_stuffABCD.py diff --git a/pydelsigma/_synthesizeChebyshevNTF.py b/deltasigma/_synthesizeChebyshevNTF.py similarity index 99% rename from pydelsigma/_synthesizeChebyshevNTF.py rename to deltasigma/_synthesizeChebyshevNTF.py index 55ec29c..ee860db 100644 --- a/pydelsigma/_synthesizeChebyshevNTF.py +++ b/deltasigma/_synthesizeChebyshevNTF.py @@ -81,7 +81,7 @@ def synthesizeChebyshevNTF(order=3, OSR=64, opt=0, H_inf=1.5, f0=0.): import pylab as plt import numpy as np - from pydelsigma import * + from deltasigma import * OSR = 4 order = 8 H_inf = 3 @@ -146,7 +146,7 @@ def synthesizeChebyshevNTF(order=3, OSR=64, opt=0, H_inf=1.5, f0=0.): import pylab as plt import numpy as np - from pydelsigma import * + from deltasigma import * OSR = 32 order = 5 H_inf = 1.2 diff --git a/pydelsigma/_synthesizeNTF.py b/deltasigma/_synthesizeNTF.py similarity index 98% rename from pydelsigma/_synthesizeNTF.py rename to deltasigma/_synthesizeNTF.py index 47acf59..82d9afc 100644 --- a/pydelsigma/_synthesizeNTF.py +++ b/deltasigma/_synthesizeNTF.py @@ -100,7 +100,7 @@ def synthesizeNTF(order=3, osr=64, opt=0, H_inf=1.5, f0=0.0): Fift-order lowpass modulator; zeros optimized for an oversampling ratio of 32.:: - from pydelsigma import * + from deltasigma import * H = synthesizeNTF(5, 32, 1) pretty_lti(H) @@ -112,7 +112,7 @@ def synthesizeNTF(order=3, osr=64, opt=0, H_inf=1.5, f0=0.0): .. plot:: - from pydelsigma import * + from deltasigma import * H = synthesizeNTF(5, 32, 1) DocumentNTF(H, 32) diff --git a/pydelsigma/_synthesizeNTF0.py b/deltasigma/_synthesizeNTF0.py similarity index 100% rename from pydelsigma/_synthesizeNTF0.py rename to deltasigma/_synthesizeNTF0.py diff --git a/pydelsigma/_synthesizeNTF1.py b/deltasigma/_synthesizeNTF1.py similarity index 100% rename from pydelsigma/_synthesizeNTF1.py rename to deltasigma/_synthesizeNTF1.py diff --git a/pydelsigma/_thermometer.py b/deltasigma/_thermometer.py similarity index 100% rename from pydelsigma/_thermometer.py rename to deltasigma/_thermometer.py diff --git a/pydelsigma/_undbm.py b/deltasigma/_undbm.py similarity index 100% rename from pydelsigma/_undbm.py rename to deltasigma/_undbm.py diff --git a/pydelsigma/_undbp.py b/deltasigma/_undbp.py similarity index 100% rename from pydelsigma/_undbp.py rename to deltasigma/_undbp.py diff --git a/pydelsigma/_undbv.py b/deltasigma/_undbv.py similarity index 100% rename from pydelsigma/_undbv.py rename to deltasigma/_undbv.py diff --git a/pydelsigma/_utils.py b/deltasigma/_utils.py similarity index 100% rename from pydelsigma/_utils.py rename to deltasigma/_utils.py diff --git a/pydelsigma/_zinc.py b/deltasigma/_zinc.py similarity index 100% rename from pydelsigma/_zinc.py rename to deltasigma/_zinc.py diff --git a/pydelsigma/test_data/test_bquantize.mat b/deltasigma/test_data/test_bquantize.mat similarity index 100% rename from pydelsigma/test_data/test_bquantize.mat rename to deltasigma/test_data/test_bquantize.mat diff --git a/pydelsigma/test_data/test_bquantize.txt b/deltasigma/test_data/test_bquantize.txt similarity index 100% rename from pydelsigma/test_data/test_bquantize.txt rename to deltasigma/test_data/test_bquantize.txt diff --git a/pydelsigma/test_data/test_circ_smooth.mat b/deltasigma/test_data/test_circ_smooth.mat similarity index 100% rename from pydelsigma/test_data/test_circ_smooth.mat rename to deltasigma/test_data/test_circ_smooth.mat diff --git a/pydelsigma/test_data/test_circ_smooth.txt b/deltasigma/test_data/test_circ_smooth.txt similarity index 100% rename from pydelsigma/test_data/test_circ_smooth.txt rename to deltasigma/test_data/test_circ_smooth.txt diff --git a/pydelsigma/test_data/test_ds_optzeros.mat b/deltasigma/test_data/test_ds_optzeros.mat similarity index 100% rename from pydelsigma/test_data/test_ds_optzeros.mat rename to deltasigma/test_data/test_ds_optzeros.mat diff --git a/pydelsigma/test_data/test_ds_optzeros.txt b/deltasigma/test_data/test_ds_optzeros.txt similarity index 100% rename from pydelsigma/test_data/test_ds_optzeros.txt rename to deltasigma/test_data/test_ds_optzeros.txt diff --git a/pydelsigma/test_data/test_pulse.mat b/deltasigma/test_data/test_pulse.mat similarity index 100% rename from pydelsigma/test_data/test_pulse.mat rename to deltasigma/test_data/test_pulse.mat diff --git a/pydelsigma/test_data/test_pulse.txt b/deltasigma/test_data/test_pulse.txt similarity index 100% rename from pydelsigma/test_data/test_pulse.txt rename to deltasigma/test_data/test_pulse.txt diff --git a/pydelsigma/test_data/test_simulateDSM.mat b/deltasigma/test_data/test_simulateDSM.mat similarity index 100% rename from pydelsigma/test_data/test_simulateDSM.mat rename to deltasigma/test_data/test_simulateDSM.mat diff --git a/pydelsigma/test_data/test_simulateDSM.txt b/deltasigma/test_data/test_simulateDSM.txt similarity index 100% rename from pydelsigma/test_data/test_simulateDSM.txt rename to deltasigma/test_data/test_simulateDSM.txt diff --git a/pydelsigma/test_data/test_snr_amp.mat b/deltasigma/test_data/test_snr_amp.mat similarity index 100% rename from pydelsigma/test_data/test_snr_amp.mat rename to deltasigma/test_data/test_snr_amp.mat diff --git a/doc/index.rst b/doc/index.rst index dfc5f05..bb2c862 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -10,7 +10,7 @@ .. toctree:: :maxdepth: 2 -.. automodule:: pydelsigma.__init__ +.. automodule:: deltasigma.__init__ :members: DocumentNTF, PlotExampleSpectrum, SIunits, axisLabels, bilogplot, bplogsmooth, bquantize, bunquantize, calculateSNR, calculateTF, cancelPZ, changeFig, circ_smooth, circshift, clans, eps, db, dbm, dbp, dbv, delay, ds_f1f2, ds_freq, ds_hann, ds_optzeros, ds_quantize, ds_synNTFobj1, dsclansNTF, evalMixedTF, evalRPoly, evalTF, evalTFP, figureMagic, frespF1, impL1, infnorm, l1norm, logsmooth, lollipop, mapABCD, mapCtoD, mapQtoR, mapRtoQ, mod1, mod2, nabsH, padb, padl, padr, padt, partitionABCD, peakSNR, plotPZ, plotSpectrum, predictSNR, pulse, realizeNTF, realizeNTF_ct, rms, rmsGain, scaleABCD, simulateDSM, simulateSNR, sinc_decimate, stuffABCD, synthesizeChebyshevNTF, synthesizeNTF, undbm, undbp, undbv, cplxpair, mfloor, pretty_lti, rat, gcd, lcm, zinc diff --git a/ez_setup.py b/ez_setup.py new file mode 100644 index 0000000..ba03f0a --- /dev/null +++ b/ez_setup.py @@ -0,0 +1,361 @@ +#!/usr/bin/env python +"""Bootstrap setuptools installation + +To use setuptools in your package's setup.py, include this +file in the same directory and add this to the top of your setup.py:: + + from ez_setup import use_setuptools + use_setuptools() + +To require a specific version of setuptools, set a download +mirror, or use an alternate download directory, simply supply +the appropriate options to ``use_setuptools()``. + +This file can also be run as a script to install or upgrade setuptools. +""" +import os +import shutil +import sys +import tempfile +import tarfile +import optparse +import subprocess +import platform +import textwrap + +from distutils import log + +try: + from site import USER_SITE +except ImportError: + USER_SITE = None + +DEFAULT_VERSION = "2.1" +DEFAULT_URL = "https://pypi.python.org/packages/source/s/setuptools/" + +def _python_cmd(*args): + args = (sys.executable,) + args + return subprocess.call(args) == 0 + +def _install(tarball, install_args=()): + # extracting the tarball + tmpdir = tempfile.mkdtemp() + log.warn('Extracting in %s', tmpdir) + old_wd = os.getcwd() + try: + os.chdir(tmpdir) + tar = tarfile.open(tarball) + _extractall(tar) + tar.close() + + # going in the directory + subdir = os.path.join(tmpdir, os.listdir(tmpdir)[0]) + os.chdir(subdir) + log.warn('Now working in %s', subdir) + + # installing + log.warn('Installing Setuptools') + if not _python_cmd('setup.py', 'install', *install_args): + log.warn('Something went wrong during the installation.') + log.warn('See the error message above.') + # exitcode will be 2 + return 2 + finally: + os.chdir(old_wd) + shutil.rmtree(tmpdir) + + +def _build_egg(egg, tarball, to_dir): + # extracting the tarball + tmpdir = tempfile.mkdtemp() + log.warn('Extracting in %s', tmpdir) + old_wd = os.getcwd() + try: + os.chdir(tmpdir) + tar = tarfile.open(tarball) + _extractall(tar) + tar.close() + + # going in the directory + subdir = os.path.join(tmpdir, os.listdir(tmpdir)[0]) + os.chdir(subdir) + log.warn('Now working in %s', subdir) + + # building an egg + log.warn('Building a Setuptools egg in %s', to_dir) + _python_cmd('setup.py', '-q', 'bdist_egg', '--dist-dir', to_dir) + + finally: + os.chdir(old_wd) + shutil.rmtree(tmpdir) + # returning the result + log.warn(egg) + if not os.path.exists(egg): + raise IOError('Could not build the egg.') + + +def _do_download(version, download_base, to_dir, download_delay): + egg = os.path.join(to_dir, 'setuptools-%s-py%d.%d.egg' + % (version, sys.version_info[0], sys.version_info[1])) + if not os.path.exists(egg): + tarball = download_setuptools(version, download_base, + to_dir, download_delay) + _build_egg(egg, tarball, to_dir) + sys.path.insert(0, egg) + + # Remove previously-imported pkg_resources if present (see + # https://bitbucket.org/pypa/setuptools/pull-request/7/ for details). + if 'pkg_resources' in sys.modules: + del sys.modules['pkg_resources'] + + import setuptools + setuptools.bootstrap_install_from = egg + + +def use_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL, + to_dir=os.curdir, download_delay=15): + to_dir = os.path.abspath(to_dir) + rep_modules = 'pkg_resources', 'setuptools' + imported = set(sys.modules).intersection(rep_modules) + try: + import pkg_resources + except ImportError: + return _do_download(version, download_base, to_dir, download_delay) + try: + pkg_resources.require("setuptools>=" + version) + return + except pkg_resources.DistributionNotFound: + return _do_download(version, download_base, to_dir, download_delay) + except pkg_resources.VersionConflict as VC_err: + if imported: + msg = textwrap.dedent(""" + The required version of setuptools (>={version}) is not available, + and can't be installed while this script is running. Please + install a more recent version first, using + 'easy_install -U setuptools'. + + (Currently using {VC_err.args[0]!r}) + """).format(VC_err=VC_err, version=version) + sys.stderr.write(msg) + sys.exit(2) + + # otherwise, reload ok + del pkg_resources, sys.modules['pkg_resources'] + return _do_download(version, download_base, to_dir, download_delay) + +def _clean_check(cmd, target): + """ + Run the command to download target. If the command fails, clean up before + re-raising the error. + """ + try: + subprocess.check_call(cmd) + except subprocess.CalledProcessError: + if os.access(target, os.F_OK): + os.unlink(target) + raise + +def download_file_powershell(url, target): + """ + Download the file at url to target using Powershell (which will validate + trust). Raise an exception if the command cannot complete. + """ + target = os.path.abspath(target) + cmd = [ + 'powershell', + '-Command', + "(new-object System.Net.WebClient).DownloadFile(%(url)r, %(target)r)" % vars(), + ] + _clean_check(cmd, target) + +def has_powershell(): + if platform.system() != 'Windows': + return False + cmd = ['powershell', '-Command', 'echo test'] + devnull = open(os.path.devnull, 'wb') + try: + try: + subprocess.check_call(cmd, stdout=devnull, stderr=devnull) + except: + return False + finally: + devnull.close() + return True + +download_file_powershell.viable = has_powershell + +def download_file_curl(url, target): + cmd = ['curl', url, '--silent', '--output', target] + _clean_check(cmd, target) + +def has_curl(): + cmd = ['curl', '--version'] + devnull = open(os.path.devnull, 'wb') + try: + try: + subprocess.check_call(cmd, stdout=devnull, stderr=devnull) + except: + return False + finally: + devnull.close() + return True + +download_file_curl.viable = has_curl + +def download_file_wget(url, target): + cmd = ['wget', url, '--quiet', '--output-document', target] + _clean_check(cmd, target) + +def has_wget(): + cmd = ['wget', '--version'] + devnull = open(os.path.devnull, 'wb') + try: + try: + subprocess.check_call(cmd, stdout=devnull, stderr=devnull) + except: + return False + finally: + devnull.close() + return True + +download_file_wget.viable = has_wget + +def download_file_insecure(url, target): + """ + Use Python to download the file, even though it cannot authenticate the + connection. + """ + try: + from urllib.request import urlopen + except ImportError: + from urllib2 import urlopen + src = dst = None + try: + src = urlopen(url) + # Read/write all in one block, so we don't create a corrupt file + # if the download is interrupted. + data = src.read() + dst = open(target, "wb") + dst.write(data) + finally: + if src: + src.close() + if dst: + dst.close() + +download_file_insecure.viable = lambda: True + +def get_best_downloader(): + downloaders = [ + download_file_powershell, + download_file_curl, + download_file_wget, + download_file_insecure, + ] + + for dl in downloaders: + if dl.viable(): + return dl + +def download_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL, + to_dir=os.curdir, delay=15, + downloader_factory=get_best_downloader): + """Download setuptools from a specified location and return its filename + + `version` should be a valid setuptools version number that is available + as an egg for download under the `download_base` URL (which should end + with a '/'). `to_dir` is the directory where the egg will be downloaded. + `delay` is the number of seconds to pause before an actual download + attempt. + + ``downloader_factory`` should be a function taking no arguments and + returning a function for downloading a URL to a target. + """ + # making sure we use the absolute path + to_dir = os.path.abspath(to_dir) + tgz_name = "setuptools-%s.tar.gz" % version + url = download_base + tgz_name + saveto = os.path.join(to_dir, tgz_name) + if not os.path.exists(saveto): # Avoid repeated downloads + log.warn("Downloading %s", url) + downloader = downloader_factory() + downloader(url, saveto) + return os.path.realpath(saveto) + + +def _extractall(self, path=".", members=None): + """Extract all members from the archive to the current working + directory and set owner, modification time and permissions on + directories afterwards. `path' specifies a different directory + to extract to. `members' is optional and must be a subset of the + list returned by getmembers(). + """ + import copy + import operator + from tarfile import ExtractError + directories = [] + + if members is None: + members = self + + for tarinfo in members: + if tarinfo.isdir(): + # Extract directories with a safe mode. + directories.append(tarinfo) + tarinfo = copy.copy(tarinfo) + tarinfo.mode = 448 # decimal for oct 0700 + self.extract(tarinfo, path) + + # Reverse sort directories. + directories.sort(key=operator.attrgetter('name'), reverse=True) + + # Set correct owner, mtime and filemode on directories. + for tarinfo in directories: + dirpath = os.path.join(path, tarinfo.name) + try: + self.chown(tarinfo, dirpath) + self.utime(tarinfo, dirpath) + self.chmod(tarinfo, dirpath) + except ExtractError as e: + if self.errorlevel > 1: + raise + else: + self._dbg(1, "tarfile: %s" % e) + + +def _build_install_args(options): + """ + Build the arguments to 'python setup.py install' on the setuptools package + """ + return ['--user'] if options.user_install else [] + +def _parse_args(): + """ + Parse the command line for options + """ + parser = optparse.OptionParser() + parser.add_option( + '--user', dest='user_install', action='store_true', default=False, + help='install in user site package (requires Python 2.6 or later)') + parser.add_option( + '--download-base', dest='download_base', metavar="URL", + default=DEFAULT_URL, + help='alternative URL from where to download the setuptools package') + parser.add_option( + '--insecure', dest='downloader_factory', action='store_const', + const=lambda: download_file_insecure, default=get_best_downloader, + help='Use internal, non-validating downloader' + ) + options, args = parser.parse_args() + # positional arguments are ignored + return options + +def main(version=DEFAULT_VERSION): + """Install or upgrade setuptools and EasyInstall""" + options = _parse_args() + tarball = download_setuptools(download_base=options.download_base, + downloader_factory=options.downloader_factory) + return _install(tarball, _build_install_args(options)) + +if __name__ == '__main__': + sys.exit(main()) diff --git a/pypi_description.rst b/pypi_description.rst new file mode 100644 index 0000000..e0d626f --- /dev/null +++ b/pypi_description.rst @@ -0,0 +1,77 @@ +It aims to provide **a 1:1 Python port** of Richard Schreier's +***excellent*** `MATLAB Delta Sigma +Toolbox `__, +the *de facto* standard tool for high-level delta sigma simulation, upon +which it is very heavily based. + +Getting started +~~~~~~~~~~~~~~~ + +To have an idea of the currently implemented functionality, take a look +at these IPython notebooks: + +- `dsdemo1 `__, + notebook port of the interactive ``dsdemo1.m``. +- `dsdemo2 `__, + notebook port of the interactive ``dsdemo2.m``. +- `dsdemo4 `__, + notebook port of ``dsdemo4.m``. `Audio + file `__. +- `dsexample1 `__, python + version of ``dsexample1.m``. +- `dsexample2 `__, python + version of ``dsexample2.m``. +- `dsexample3 `__, python + version of ``dsexample3.m``. + +If you have some examples you would like to share, `send me a +mail `__, and I will add them to the above +list. + +Further functionality is expected to be ported according to `the +ROADMAP `__. + +Documentation +------------- + +1. You can find the included `package documentation + online `__. + +2. The original MATLAB Toolbox provides in-depth documentation, which is + very useful to understand what the toolbox is capable of. See + `DSToolbox.pdf `__ + and + `OnePageStory.pdf `__ + (*PDF warning*). + +3. The book: + +Richard Schreier, Gabor C. Temes, *Understanding Delta-Sigma Data +Converters*, ISBN: 978-0-471-46585-0, November 2004, Wiley-IEEE Press + +is probably *the most authoritative resource on the topic*. Chapter 8-9 +show how to use the MATLAB toolkit and the observations apply also to +this Python port. Links `on +amazon `__, +`on the Wiley-IEEE +press `__. + +*I am not affiliated with neither the sellers nor the authors.* + +Licensing and copyright notice +------------------------------ + +All original MATLAB code is Copyright (c) 2009, Richard Schreier. See +the LICENSE file for the licensing terms. + +The Python code here provided is a derivative work from the above +toolkit and subject to the same license terms. + +This package contains some source code from ``pydsm``, also based on the +same MATLAB toolbox. The ``pydsm`` package is copyright (c) 2012, Sergio +Callegari. + +When not otherwise specified, the Python code is Copyright 2013, +Giuseppe Venturini and the python-deltasigma contributors. + +MATLAB is a registered trademark of The MathWorks, Inc. diff --git a/setup.py b/setup.py index 16e808c..431dd54 100644 --- a/setup.py +++ b/setup.py @@ -1,33 +1,42 @@ #!/usr/bin/env python -from distutils.core import setup -from pydelsigma import __version__ -setup(name='pydelsigma', - version=__version__, - description='A Python translation of Richard Schreier\'s delta sigma toolbox', - author='Giuseppe Venturini and others', - author_email='ggventurini+GITHUB@gmail.com', - url='http://github.com/ggventurini/python-deltasigma/', - packages=['pydelsigma'], - package_data={ - 'pydelsigma': ['test_data/*.mat', 'test_data/*.txt'] - } - ) +import os +from setuptools import setup, find_packages +from deltasigma import __version__ -print """ -+---------------------------------------------------+ -The following dependencies are needed for pydelsigma -to work on your system: -- numpy: http://numpy.scipy.org/ -- scipy: http://www.scipy.org/ -- matplotlib: http://matplotlib.sourceforge.net/ +def read(fname): + return open(os.path.join(os.path.dirname(__file__), fname)).read() -Recommended: -- setuptools: https://pypi.python.org/pypi/setuptools -- nose: https://pypi.python.org/pypi/nose/ -- shinx: http://sphinx-doc.org/ -- patience and stubbornness. +setup( + name='deltasigma', + version=__version__, + packages=find_packages(), + package_data={ + 'deltasigma': ['test_data/*.mat', 'test_data/*.txt'] + }, + install_requires=['numpy', 'scipy>=0.11.0', 'matplotlib'], + zip_safe=False, + include_package_data=True, + author="Giuseppe Venturini and others", + author_email="giuseppe.g.venturini@ieee.org", + description="a Python package to synthesize, simulate, scale and map to implementable topologies delta sigma modulators.", + long_description=''.join([read('pypi_description.rst')]), + license="BSD", + keywords="delta sigma modulator simulator", + url="http://github.com/ggventurini/python-deltasigma", + classifiers=[ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Education", + "Intended Audience :: Science/Research", + "License :: OSI Approved :: BSD License", + "Operating System :: POSIX", + "Operating System :: POSIX :: Linux", + "Operating System :: Microsoft :: Windows", + "Operating System :: MacOS", + "Natural Language :: English", + "Programming Language :: Python :: 2", + "Programming Language :: Python :: 2.7", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.3"] +) -Available through PyPi. See Install.md for more. -+---------------------------------------------------+ -""" From a8966fd3a92bfb970bc3d2c13d2da9418b7e4caf Mon Sep 17 00:00:00 2001 From: ggventurini Date: Sat, 18 Jan 2014 14:18:55 +0100 Subject: [PATCH 2/2] Fix Travis-CI. Fix Coveralls.io. Add CHANGES.rst. Version bump to 0.1rc2 --- .coveragerc | 4 ++-- .travis.yml | 2 +- CHANGES.rst | 12 ++++++++++++ deltasigma/__init__.py | 2 +- setup.py | 2 +- 5 files changed, 17 insertions(+), 5 deletions(-) create mode 100644 CHANGES.rst diff --git a/.coveragerc b/.coveragerc index a0dfefe..82b5246 100644 --- a/.coveragerc +++ b/.coveragerc @@ -1,7 +1,7 @@ [run] branch = True -source = pydelsigma -include = pydelsigma/* +source = deltasigma +include = deltasigma/* omit = */python?.?/* */lib-python/?.?/*.py diff --git a/.travis.yml b/.travis.yml index 8514491..f4cc27c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,6 +14,6 @@ install: - 'if [ $TRAVIS_PYTHON_VERSION == "3.3" ]; then pip install numpy scipy matplotlib --upgrade --use-mirrors; fi' - pip install nose coveralls --use-mirrors # command to run tests, e.g. python setup.py test -script: nosetests --with-coverage --cover-package=pydelsigma pydelsigma/*.py +script: nosetests --with-coverage --cover-package=deltasigma deltasigma/*.py after_success: - coveralls diff --git a/CHANGES.rst b/CHANGES.rst new file mode 100644 index 0000000..4b10c63 --- /dev/null +++ b/CHANGES.rst @@ -0,0 +1,12 @@ +CHANGES +~~~~~~~ + +0.1rc1 +------ + +Initial release + +0.1rc2 +------ + +Fix travis and coveralls.io support. diff --git a/deltasigma/__init__.py b/deltasigma/__init__.py index ee48067..fa2a049 100644 --- a/deltasigma/__init__.py +++ b/deltasigma/__init__.py @@ -589,7 +589,7 @@ __copyright__ = "Copyright 2013, Giuseppe Venturini" __credits__ = ["Giuseppe Venturini"] __license__ = "BSD 3-Clause License" -__version__ = '0.1rc1' +__version__ = '0.1rc2' __maintainer__ = "Giuseppe Venturini" __email__ = "ggventurini+github@gmail.com" __status__ = "Stable" diff --git a/setup.py b/setup.py index 431dd54..9babee6 100644 --- a/setup.py +++ b/setup.py @@ -20,7 +20,7 @@ def read(fname): author="Giuseppe Venturini and others", author_email="giuseppe.g.venturini@ieee.org", description="a Python package to synthesize, simulate, scale and map to implementable topologies delta sigma modulators.", - long_description=''.join([read('pypi_description.rst')]), + long_description=''.join([read('pypi_description.rst'), '\n\n', read('CHANGES.rst')]), license="BSD", keywords="delta sigma modulator simulator", url="http://github.com/ggventurini/python-deltasigma",