Giter VIP home page Giter VIP logo

package-builder's Introduction

PSL tool Python 3.6+

Using Package-Builder's pbrelease tool

This document tells you how to use the command-line interface (CLI) to Package-Builder, which is called the pbrelease tool, to build conda packages for your Policy Simulation Library (PSL) model and upload them to the Anaconda Cloud's PSLmodels channel for public distribution. If you have questions about using pbrelease, or experience problems, or want to request an enhancement, create a new issue here that poses your question, or provides details on what you think is wrong with pbrelease, or describes the enhancement you're requesting.

What is pbrelease?

The code in this Package-Builder GitHub repository, which is part of the PSLmodels GitHub organization, generates a conda package called pkgbld that contains the pbrelease command-line tool. For models in the PSLmodels GitHub organization that meet certain criteria (see below), pbrelease can be used to build conda packages (for Windows, Linux, and Mac) for a specified model release version and then to upload those built packages to the Anaconda Cloud's PSLmodels channel for public distribution.

How to install pbrelease?

At the operating-system command prompt on a computer that has the Anaconda distribution of Python 3.6, 3.7, or 3.8 installed, execute this command if you have never installed the package that contains the pbrelease tool:

$ conda install -c PSLmodels pkgbld --yes

If you have previously installed that package, replace install with update to upgrade to the most recent version of the package.

Next confirm that the installation/update went smoothly by executing this command and getting something like this screen output:

$ pbrelease --version
Package-Builder 0.22.0

Then see the information that pbrelease expects by asking for help and getting something like this screen output:

$ pbrelease --help
usage: pbrelease  REPOSITORY_NAME  PACKAGE_NAME  MODEL_VERSION
                  [--help]  [--local]  [--dryrun]  [--version]

Creates conda packages named PACKAGE_NAME for the PSL model in REPOSITORY_NAME
that has a GitHub release named MODEL_VERSION. The packages are built locally
in a temporary workspace and then uploaded to the Anaconda Cloud PSLmodels
channel for public distribution. The built/uploaded packages are for Python
3.6, 3.7, and 3.8.

positional arguments:
  REPOSITORY_NAME  Name of repository in the GitHub organization called
                   PSLmodels. Example: Tax-Calculator
  PACKAGE_NAME     Name of packages to build and upload. Example: taxcalc
  MODEL_VERSION    Model release string that has X.Y.Z semantic-versioning
                   pattern. Example: 1.0.1

optional arguments:
  -h, --help       show this help message and exit
  --local          optional flag that causes package to be built from current
                   source code and installed on local computer without
                   packages being uploaded to Anaconda Cloud PSLmodels
                   channel.
  --dryrun         optional flag that writes execution plan to stdout and
                   quits without executing plan
  --version        optional flag that writes Package-Builder release version
                   to stdout and quits

Once you can get this kind of pbrelease screen output, you're ready to make packages for your model release.

How to use pbrelease?

In order to use the pbrelease tool, you need a file containing the Anaconda Cloud upload token for the PSLmodels channel. Get that file by asking for it in a new Package-Builder issue. You will be sent via private email a zip file containing the token file. Unzip that file in your home directory. After doing that, the .pslmodels_anaconda_token file should be in your home directory. Now you're ready to use the pbrelease tool.

After testing your model and commiting to the master branch all of your changes, create a model release on GitHub. Then to build and upload packages for that model release, execute this command:

$ pbrelease  repo_name  pkg_name  version

where your replace repo_name with the name of your model's repository and you replace pkg_name with the sub-directory name containing your model's highest level __init__.py file and you replace version with the release for which you want to make model packages.

Here's an example that builds and uploads packages for Behavioral-Responses release 0.5.0:

$ pbrelease Behavioral-Responses behresp 0.5.0
: Package-Builder will build model packages for:
:   repository_name = Behavioral-Responses
:   package_name = behresp
:   model_version = 0.5.0
:   python_versions = ['3.6', '3.7']
: Package-Builder will upload model packages to:
:   Anaconda channel = pslmodels
:   using token in file = /Users/mrh/.pslmodels_anaconda_token
: Package-Builder is starting at Thu Mar 14 07:25:21 2019
: Package-Builder is cloning repository code for 0.5.0
...
... <an enormous amount of screen output>
...
: Package-Builder is cleaning-up
: Package-Builder is finishing at Thu Mar 14 07:27:27 2019

To use pbrelease to make a local package from the current (even uncommitted) code on your current branch, make the top-level directory of the repo's source-code tree the current working directory. Then use the --local option as shown here:

$ cd Tax-Calculator
$ pbrelease Tax-Calculator taxcalc 0.0.0 --local

This will produce a local package on your computer for testing or validation work. The above example specifies version 0.0.0, but you can specify any version you want. You can uninstall this local package at any time using this command:

$ conda uninstall taxcalc --yes

If your model relies on packages that are not found in the default Anaconda channels or in the PSLmodels channel, then you need to execute the following command before using the pbrelease tool:

$ conda config --add channels CHANNEL

where you replace CHANNEL with the name of the extra channel you want pbrelease to search for packages that your model relies on. So, for example, if your model relies on a package in the conda-forge channel, replace CHANNEL with conda-forge in the command above. You need to add an extra channel only once. You can replace --add channels CHANNEL with --remove channels CHANNEL or replace it with --show channels to manage your conda channel configuration.

What are the package-building criteria?

The pbrelease tool makes certain assumptions about the PSL model's source code. These assumptions must be met for pbrelease to work correctly. Here are the model code criteria:

(1) Model code must be compatible with Anaconda's Python 3.6 and higher

(2) Model code must be organized as follows:

<repo_name>               <--- TOP-LEVEL DIRECTORY (e.g., Tax-Calculator)
    setup.py
    ...
    conda.recipe          <--- SUB-DIRECTORY
        meta.yaml
        build.sh
        bld.bat
        ...
    <pkg_name>            <--- SUB-DIRECTORY (e.g., taxcalc)
        __init__.py
        ...

(3) The setup.py file must contain a line like this: version = '0.0.0'

(4) The meta.yaml file must contain a line like this: version: 0.0.0

(5) The __init__.py file must contain a line like this: __version__ = '0.0.0'

The best place to look at code that meets all these criteria is the PSLmodels Behavioral-Responses repository.

Version 0.0.0 indicates the earliest version; the pbrelease tool will automatically replace (in a temporary copy of your model code) the 0.0.0 with the X.Y.Z version specified when you execute pbrelease.

package-builder's People

Contributors

hdoupe avatar jbcrail avatar martinholmer avatar matthjensen avatar peterdsteinberg avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

package-builder's Issues

Duplicate uploads in single run of build_release.sh script

I just used the build_release.sh script successfully to create and upload to anaconda.org/ospc fifteen taxcalc packages for Tax-Calculator release 0.9.1. So, the script does work for me in building and uploading taxcalc packages. Thank you, @PeterDSteinberg, for creating this capability.

As I get more experience with build_release.sh, I have some thoughts for improvement. This issue describes an efficiency issue that will make the script run more smoothly and without any warnings. I will raise another issue about the basic philosophy of the build_release.sh script in another issue.

The efficiency issue I want to report here is probably the same issue noted in #42, but my experience suggests a different cause of the warnings (they are not "errors", which is the terminology used in issue #42). Basically, the logical structure of the build_release.sh script is now such that when building and uploading packages for the five operating systems and the three versions of Python we are supporting (2.7, 3.5, and 3.6), the five packages for 2.7 get uploaded three times, the five packages for 3.5 get uploaded two times, and the five packages for 3.6 get uploaded once. The unnecessary duplicate uploads trigger a WARNING that doesn't generate confidence in new users of the script.

Also, it seems as if all five OS versions of a package are generated even if the script is skipping the uploads, which is another inefficiency.

Surely the script can be revised to do build the four other OS packages only if uploading and uploading each of the fifteen packages only once.

The build_release.sh script generates quite a bit of output, which is good, but can obscure what is going on. When I built and uploaded the fifteen packages for taxcalc 0.9.1, I filtered the script output to make the duplicate uploads stand out. Here is what I got this morning:

iMac2:policybrain-builder mrh$ . ./build_release.sh 2>&1 | awk '$1~/Upload/||$1~/WARNING/||$1~/OK/'
Uploading file ospc/taxcalc/0.9.1/osx-64/taxcalc-0.9.1-py27_0.tar.bz2 ... 
Upload(s) Complete
Uploading file ospc/taxcalc/0.9.1/linux-32/taxcalc-0.9.1-py27_0.tar.bz2 ... 
Upload(s) Complete
Uploading file ospc/taxcalc/0.9.1/linux-64/taxcalc-0.9.1-py27_0.tar.bz2 ... 
Upload(s) Complete
Uploading file ospc/taxcalc/0.9.1/win-32/taxcalc-0.9.1-py27_0.tar.bz2 ... 
Upload(s) Complete
Uploading file ospc/taxcalc/0.9.1/win-64/taxcalc-0.9.1-py27_0.tar.bz2 ... 
Upload(s) Complete
Uploading file ospc/taxcalc/0.9.1/osx-64/taxcalc-0.9.1-py35_0.tar.bz2 ... 
Upload(s) Complete
Uploading file ospc/taxcalc/0.9.1/linux-32/taxcalc-0.9.1-py27_0.tar.bz2 ... 
[WARNING] Distribution linux-32/taxcalc-0.9.1-py27_0.tar.bz2 already exists ... removing
Upload(s) Complete
Uploading file ospc/taxcalc/0.9.1/linux-32/taxcalc-0.9.1-py35_0.tar.bz2 ... 
Upload(s) Complete
Uploading file ospc/taxcalc/0.9.1/linux-64/taxcalc-0.9.1-py27_0.tar.bz2 ... 
[WARNING] Distribution linux-64/taxcalc-0.9.1-py27_0.tar.bz2 already exists ... removing
Upload(s) Complete
Uploading file ospc/taxcalc/0.9.1/linux-64/taxcalc-0.9.1-py35_0.tar.bz2 ... 
Upload(s) Complete
Uploading file ospc/taxcalc/0.9.1/win-32/taxcalc-0.9.1-py27_0.tar.bz2 ... 
[WARNING] Distribution win-32/taxcalc-0.9.1-py27_0.tar.bz2 already exists ... removing
Upload(s) Complete
Uploading file ospc/taxcalc/0.9.1/win-32/taxcalc-0.9.1-py35_0.tar.bz2 ... 
Upload(s) Complete
Uploading file ospc/taxcalc/0.9.1/win-64/taxcalc-0.9.1-py27_0.tar.bz2 ... 
[WARNING] Distribution win-64/taxcalc-0.9.1-py27_0.tar.bz2 already exists ... removing
Upload(s) Complete
Uploading file ospc/taxcalc/0.9.1/win-64/taxcalc-0.9.1-py35_0.tar.bz2 ... 
Upload(s) Complete
Uploading file ospc/taxcalc/0.9.1/osx-64/taxcalc-0.9.1-py36_0.tar.bz2 ... 
Upload(s) Complete
Uploading file ospc/taxcalc/0.9.1/linux-32/taxcalc-0.9.1-py27_0.tar.bz2 ... 
[WARNING] Distribution linux-32/taxcalc-0.9.1-py27_0.tar.bz2 already exists ... removing
Upload(s) Complete
Uploading file ospc/taxcalc/0.9.1/linux-32/taxcalc-0.9.1-py35_0.tar.bz2 ... 
[WARNING] Distribution linux-32/taxcalc-0.9.1-py35_0.tar.bz2 already exists ... removing
Upload(s) Complete
Uploading file ospc/taxcalc/0.9.1/linux-32/taxcalc-0.9.1-py36_0.tar.bz2 ... 
Upload(s) Complete
Uploading file ospc/taxcalc/0.9.1/linux-64/taxcalc-0.9.1-py27_0.tar.bz2 ... 
[WARNING] Distribution linux-64/taxcalc-0.9.1-py27_0.tar.bz2 already exists ... removing
Upload(s) Complete
Uploading file ospc/taxcalc/0.9.1/linux-64/taxcalc-0.9.1-py35_0.tar.bz2 ... 
[WARNING] Distribution linux-64/taxcalc-0.9.1-py35_0.tar.bz2 already exists ... removing
Upload(s) Complete
Uploading file ospc/taxcalc/0.9.1/linux-64/taxcalc-0.9.1-py36_0.tar.bz2 ... 
Upload(s) Complete
Uploading file ospc/taxcalc/0.9.1/win-32/taxcalc-0.9.1-py27_0.tar.bz2 ... 
[WARNING] Distribution win-32/taxcalc-0.9.1-py27_0.tar.bz2 already exists ... removing
Upload(s) Complete
Uploading file ospc/taxcalc/0.9.1/win-32/taxcalc-0.9.1-py35_0.tar.bz2 ... 
[WARNING] Distribution win-32/taxcalc-0.9.1-py35_0.tar.bz2 already exists ... removing
Upload(s) Complete
Uploading file ospc/taxcalc/0.9.1/win-32/taxcalc-0.9.1-py36_0.tar.bz2 ... 
Upload(s) Complete
Uploading file ospc/taxcalc/0.9.1/win-64/taxcalc-0.9.1-py27_0.tar.bz2 ... 
[WARNING] Distribution win-64/taxcalc-0.9.1-py27_0.tar.bz2 already exists ... removing
Upload(s) Complete
Uploading file ospc/taxcalc/0.9.1/win-64/taxcalc-0.9.1-py35_0.tar.bz2 ... 
[WARNING] Distribution win-64/taxcalc-0.9.1-py35_0.tar.bz2 already exists ... removing
Upload(s) Complete
Uploading file ospc/taxcalc/0.9.1/win-64/taxcalc-0.9.1-py36_0.tar.bz2 ... 
Upload(s) Complete
OK
iMac2:policybrain-builder mrh$ 

@MattHJensen @PeterDSteinberg @jbcrail

conda-build: error: unrecognized arguments: --no-anaconda-upload conda.recipe

Given my difficulty getting the bash script to work (see #1), I just tried to do a basic release following the README. Still no luck.

bn0kg72-l:policybrain-builder Matt.Jensen$ pb release --label dev --python 2.7 --python 3.6 --clean --token "<secret>"  taxcalc=0.13.0
[taxcalc] removing
removing /tmp/policybrain-builder/pull/taxcalc
[taxcalc] cloning
cloning https://github.com/open-source-economics/Tax-Calculator to /tmp/policybrain-builder/pull/taxcalc
Cloning into '/tmp/policybrain-builder/pull/taxcalc'...
remote: Counting objects: 22143, done.
remote: Compressing objects: 100% (74/74), done.
remote: Total 22143 (delta 63), reused 73 (delta 34), pack-reused 22035
Receiving objects: 100% (22143/22143), 425.07 MiB | 6.69 MiB/s, done.
Resolving deltas: 100% (16364/16364), done.
[taxcalc] fetching
fetching origin/tags for /tmp/policybrain-builder/pull/taxcalc
[taxcalc] checking out '0.13.0'
checking out tag '0.13.0'
Note: checking out '0.13.0'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD is now at 431af2e9... Merge pull request #1632 from MattHJensen/releases_0.13.0
[taxcalc] archiving
archiving /tmp/policybrain-builder/pull/taxcalc
x taxcalc-0.13.0/
x taxcalc-0.13.0/.coveragerc
x taxcalc-0.13.0/.gitattributes
x taxcalc-0.13.0/.gitignore
x taxcalc-0.13.0/.travis.yml
x taxcalc-0.13.0/CODING.md
x taxcalc-0.13.0/DATAPREP.md
x taxcalc-0.13.0/LICENSE.md
x taxcalc-0.13.0/MANIFEST.in
x taxcalc-0.13.0/ODD_RECORDS.md
x taxcalc-0.13.0/README.md
x taxcalc-0.13.0/RELEASES.md
x taxcalc-0.13.0/TESTING.md
x taxcalc-0.13.0/appveyor.yml
x taxcalc-0.13.0/conda.recipe/
x taxcalc-0.13.0/conda.recipe/bld.bat
x taxcalc-0.13.0/conda.recipe/build.sh
x taxcalc-0.13.0/conda.recipe/install_local_taxcalc_package.sh
x taxcalc-0.13.0/conda.recipe/meta.yaml
x taxcalc-0.13.0/conda.recipe/run_test.py
x taxcalc-0.13.0/continuous_integration/
x taxcalc-0.13.0/continuous_integration/build.cmd
x taxcalc-0.13.0/continuous_integration/run_tests.cmd
x taxcalc-0.13.0/continuous_integration/run_with_env.cmd
x taxcalc-0.13.0/continuous_integration/setup_conda_environment.cmd
x taxcalc-0.13.0/docs/
x taxcalc-0.13.0/docs/_config.yml
x taxcalc-0.13.0/docs/atr.png
x taxcalc-0.13.0/docs/contributing.md
x taxcalc-0.13.0/docs/index.html
x taxcalc-0.13.0/docs/mtr.png
x taxcalc-0.13.0/environment.yml
x taxcalc-0.13.0/file-upload-tests/
x taxcalc-0.13.0/file-upload-tests/README.md
x taxcalc-0.13.0/file-upload-tests/a0.json
x taxcalc-0.13.0/file-upload-tests/a1.json
x taxcalc-0.13.0/file-upload-tests/a2.json
x taxcalc-0.13.0/file-upload-tests/a3.json
x taxcalc-0.13.0/file-upload-tests/cli-results.sh
x taxcalc-0.13.0/file-upload-tests/r1.json
x taxcalc-0.13.0/read-the-docs/
x taxcalc-0.13.0/read-the-docs/Makefile
x taxcalc-0.13.0/read-the-docs/make.bat
x taxcalc-0.13.0/read-the-docs/notebooks/
x taxcalc-0.13.0/read-the-docs/notebooks/10_Minutes_to_Tax-Calculator.ipynb
x taxcalc-0.13.0/read-the-docs/proposed_features/
x taxcalc-0.13.0/read-the-docs/proposed_features/DistributingCorpIncTax.rst
x taxcalc-0.13.0/read-the-docs/requirements-docs.txt
x taxcalc-0.13.0/read-the-docs/source/
x taxcalc-0.13.0/read-the-docs/source/_static/
x taxcalc-0.13.0/read-the-docs/source/_static/.gitignore
x taxcalc-0.13.0/read-the-docs/source/conf.py
x taxcalc-0.13.0/read-the-docs/source/contributor_guide.rst
x taxcalc-0.13.0/read-the-docs/source/contributors.rst
x taxcalc-0.13.0/read-the-docs/source/data.rst
x taxcalc-0.13.0/read-the-docs/source/disclaimer.rst
x taxcalc-0.13.0/read-the-docs/source/index.rst
x taxcalc-0.13.0/read-the-docs/source/license.rst
x taxcalc-0.13.0/read-the-docs/source/parameter_naming.rst
x taxcalc-0.13.0/read-the-docs/source/public_api.rst
x taxcalc-0.13.0/readthedocs.yml
x taxcalc-0.13.0/setup.cfg
x taxcalc-0.13.0/setup.py
x taxcalc-0.13.0/taxcalc/
x taxcalc-0.13.0/taxcalc/__init__.py
x taxcalc-0.13.0/taxcalc/_version.py
x taxcalc-0.13.0/taxcalc/behavior.json
x taxcalc-0.13.0/taxcalc/behavior.py
x taxcalc-0.13.0/taxcalc/calculate.py
x taxcalc-0.13.0/taxcalc/cli/
x taxcalc-0.13.0/taxcalc/cli/__init__.py
x taxcalc-0.13.0/taxcalc/cli/tc.py
x taxcalc-0.13.0/taxcalc/conftest.py
x taxcalc-0.13.0/taxcalc/consumption.json
x taxcalc-0.13.0/taxcalc/consumption.py
x taxcalc-0.13.0/taxcalc/cps.csv.gz
x taxcalc-0.13.0/taxcalc/cps_weights.csv.gz
x taxcalc-0.13.0/taxcalc/current_law_policy.json
x taxcalc-0.13.0/taxcalc/decorators.py
x taxcalc-0.13.0/taxcalc/docs/
x taxcalc-0.13.0/taxcalc/docs/index.htmx
x taxcalc-0.13.0/taxcalc/docs/make.py
x taxcalc-0.13.0/taxcalc/filings/
x taxcalc-0.13.0/taxcalc/filings/__init__.py
x taxcalc-0.13.0/taxcalc/filings/forms/
x taxcalc-0.13.0/taxcalc/filings/forms/__init__.py
x taxcalc-0.13.0/taxcalc/filings/forms/errors.py
x taxcalc-0.13.0/taxcalc/filings/forms/tax_form.py
x taxcalc-0.13.0/taxcalc/filings/forms/us1040.py
x taxcalc-0.13.0/taxcalc/filings/forms/us1040sa.py
x taxcalc-0.13.0/taxcalc/filings/forms/us1040sb.py
x taxcalc-0.13.0/taxcalc/filings/forms/us1040sc.py
x taxcalc-0.13.0/taxcalc/filings/forms/us1040sd.py
x taxcalc-0.13.0/taxcalc/filings/forms/us1040se.py
x taxcalc-0.13.0/taxcalc/filings/forms/us1040seic.py
x taxcalc-0.13.0/taxcalc/filings/forms/us1040sr.py
x taxcalc-0.13.0/taxcalc/filings/forms/us1040sse.py
x taxcalc-0.13.0/taxcalc/filings/forms/us2441.py
x taxcalc-0.13.0/taxcalc/filings/forms/us3800.py
x taxcalc-0.13.0/taxcalc/filings/forms/us4137.py
x taxcalc-0.13.0/taxcalc/filings/forms/us4255.py
x taxcalc-0.13.0/taxcalc/filings/forms/us4952.py
x taxcalc-0.13.0/taxcalc/filings/forms/us5695.py
x taxcalc-0.13.0/taxcalc/filings/forms/us6251.py
x taxcalc-0.13.0/taxcalc/filings/forms/us8801.py
x taxcalc-0.13.0/taxcalc/filings/forms/us8863.py
x taxcalc-0.13.0/taxcalc/filings/forms/utils.py
x taxcalc-0.13.0/taxcalc/functions.py
x taxcalc-0.13.0/taxcalc/growdiff.json
x taxcalc-0.13.0/taxcalc/growdiff.py
x taxcalc-0.13.0/taxcalc/growfactors.csv
x taxcalc-0.13.0/taxcalc/growfactors.py
x taxcalc-0.13.0/taxcalc/macro_elasticity.py
x taxcalc-0.13.0/taxcalc/parameters.py
x taxcalc-0.13.0/taxcalc/policy.py
x taxcalc-0.13.0/taxcalc/puf_ratios.csv
x taxcalc-0.13.0/taxcalc/puf_weights.csv
x taxcalc-0.13.0/taxcalc/records.py
x taxcalc-0.13.0/taxcalc/records_variables.json
x taxcalc-0.13.0/taxcalc/reforms/
x taxcalc-0.13.0/taxcalc/reforms/BrownKhanna.json
x taxcalc-0.13.0/taxcalc/reforms/Clinton2016.json
x taxcalc-0.13.0/taxcalc/reforms/README.md
x taxcalc-0.13.0/taxcalc/reforms/REFORMS.md
x taxcalc-0.13.0/taxcalc/reforms/Renacci.json
x taxcalc-0.13.0/taxcalc/reforms/RyanBrady.json
x taxcalc-0.13.0/taxcalc/reforms/TCJA_Nov3.json
x taxcalc-0.13.0/taxcalc/reforms/Trump2016.json
x taxcalc-0.13.0/taxcalc/reforms/Trump2017.json
x taxcalc-0.13.0/taxcalc/reforms/earnings_shifting.awk
x taxcalc-0.13.0/taxcalc/reforms/earnings_shifting.py
x taxcalc-0.13.0/taxcalc/reforms/earnings_shifting.res
x taxcalc-0.13.0/taxcalc/reforms/earnings_shifting.sh
x taxcalc-0.13.0/taxcalc/reforms/earnings_shifting.sum
x taxcalc-0.13.0/taxcalc/reforms/ptaxes0.json
x taxcalc-0.13.0/taxcalc/reforms/ptaxes1.json
x taxcalc-0.13.0/taxcalc/reforms/ptaxes2.json
x taxcalc-0.13.0/taxcalc/reforms/ptaxes3.json
x taxcalc-0.13.0/taxcalc/responses/
x taxcalc-0.13.0/taxcalc/responses/ASSUMPTIONS.md
x taxcalc-0.13.0/taxcalc/responses/README.md
x taxcalc-0.13.0/taxcalc/responses/economic_responses_template.json
x taxcalc-0.13.0/taxcalc/taxcalcio.py
x taxcalc-0.13.0/taxcalc/tbi/
x taxcalc-0.13.0/taxcalc/tbi/__init__.py
x taxcalc-0.13.0/taxcalc/tbi/tbi.py
x taxcalc-0.13.0/taxcalc/tbi/tbi_utils.py
x taxcalc-0.13.0/taxcalc/tests/
x taxcalc-0.13.0/taxcalc/tests/conftest.py
x taxcalc-0.13.0/taxcalc/tests/cpscsv_agg_expect.txt
x taxcalc-0.13.0/taxcalc/tests/filings/
x taxcalc-0.13.0/taxcalc/tests/filings/forms/
x taxcalc-0.13.0/taxcalc/tests/filings/forms/test_tax_form.py
x taxcalc-0.13.0/taxcalc/tests/filings/forms/test_tax_forms.py
x taxcalc-0.13.0/taxcalc/tests/puf_var_correl_coeffs_2016.csv
x taxcalc-0.13.0/taxcalc/tests/puf_var_wght_means_by_year.csv
x taxcalc-0.13.0/taxcalc/tests/pufcsv_agg_expect.txt
x taxcalc-0.13.0/taxcalc/tests/pufcsv_mtr_expect.txt
x taxcalc-0.13.0/taxcalc/tests/reforms.json
x taxcalc-0.13.0/taxcalc/tests/test_4package.py
x taxcalc-0.13.0/taxcalc/tests/test_behavior.py
x taxcalc-0.13.0/taxcalc/tests/test_calculate.py
x taxcalc-0.13.0/taxcalc/tests/test_consumption.py
x taxcalc-0.13.0/taxcalc/tests/test_cpscsv.py
x taxcalc-0.13.0/taxcalc/tests/test_decorators.py
x taxcalc-0.13.0/taxcalc/tests/test_functions.py
x taxcalc-0.13.0/taxcalc/tests/test_growdiff.py
x taxcalc-0.13.0/taxcalc/tests/test_growfactors.py
x taxcalc-0.13.0/taxcalc/tests/test_macro_elasticity.py
x taxcalc-0.13.0/taxcalc/tests/test_notebooks.py
x taxcalc-0.13.0/taxcalc/tests/test_parameters.py
x taxcalc-0.13.0/taxcalc/tests/test_policy.py
x taxcalc-0.13.0/taxcalc/tests/test_puf_var_stats.py
x taxcalc-0.13.0/taxcalc/tests/test_pufcsv.py
x taxcalc-0.13.0/taxcalc/tests/test_records.py
x taxcalc-0.13.0/taxcalc/tests/test_reforms.py
x taxcalc-0.13.0/taxcalc/tests/test_responses.py
x taxcalc-0.13.0/taxcalc/tests/test_taxcalcio.py
x taxcalc-0.13.0/taxcalc/tests/test_tbi.py
x taxcalc-0.13.0/taxcalc/tests/test_utils.py
x taxcalc-0.13.0/taxcalc/utils.py
x taxcalc-0.13.0/taxcalc/utilsprvt.py
x taxcalc-0.13.0/taxcalc/validation/
x taxcalc-0.13.0/taxcalc/validation/CSV_INPUT_VARS.md
x taxcalc-0.13.0/taxcalc/validation/CSV_OUTPUT_VARS.md
x taxcalc-0.13.0/taxcalc/validation/README.md
x taxcalc-0.13.0/taxcalc/validation/csv_extract.py
x taxcalc-0.13.0/taxcalc/validation/csv_input.py
x taxcalc-0.13.0/taxcalc/validation/csv_taxdiffs.py
x taxcalc-0.13.0/taxcalc/validation/taxsim/
x taxcalc-0.13.0/taxcalc/validation/taxsim/README.md
x taxcalc-0.13.0/taxcalc/validation/taxsim/a15.taxdiffs
x taxcalc-0.13.0/taxcalc/validation/taxsim/d15.taxdiffs
x taxcalc-0.13.0/taxcalc/validation/taxsim/output-taxsim.zip
x taxcalc-0.13.0/taxcalc/validation/taxsim/simpletaxio.py
x taxcalc-0.13.0/taxcalc/validation/taxsim/simtax.py
x taxcalc-0.13.0/taxcalc/validation/taxsim/taxdiff.awk
x taxcalc-0.13.0/taxcalc/validation/taxsim/taxdiffs.tcl
x taxcalc-0.13.0/taxcalc/validation/taxsim/taxsim_in.tcl
x taxcalc-0.13.0/taxcalc/validation/taxsim/test.sh
x taxcalc-0.13.0/taxcalc/validation/taxsim/test_simpletaxio.py
x taxcalc-0.13.0/taxcalc/validation/taxsim/tests.sh
x taxcalc-0.13.0/taxcalc/validation/tests.sh
x taxcalc-0.13.0/versioneer.py
[taxcalc] building 3.6
usage: conda-build [-h] [-c] [--no-binstar-upload] [--output] [-s] [-t]
                   [--no-test] [-b] [-p] [-V] [-q] [--python PYTHON_VER]
                   [--perl PERL_VER] [--numpy NUMPY_VER]
                   RECIPE_PATH [RECIPE_PATH ...]
conda-build: error: unrecognized arguments: --no-anaconda-upload conda.recipe
ERROR: Command 'conda build -c ospc --no-anaconda-upload --python 3.6 conda.recipe' returned non-zero exit status 2

Question about pb option --python

Following the merge of pull request #52, I experimented with the new CLI pb capability.
Thank you, @jbcrail, for this major improvement.

But I couldn't get the --python option to work. Maybe I don't understand how to release packages only for Python 2.7 (for testing). Here is what I tried and the error message I got with each try:

iMac2:policybrain-builder mrh$ pb --help
Usage: pb [OPTIONS] COMMAND [ARGS]...

  Manage Open Source Policy Center (OSPC) packages.

Options:
  --version   Show the version and exit.
  -h, --help  Show this message and exit.

Commands:
  build    Build packages.
  release  Release packages.
  upload   Upload packages.
iMac2:policybrain-builder mrh$ pb release --python 2.7 taxcalc=0.1.5
Error: --python option requires 3 arguments
iMac2:policybrain-builder mrh$ pb release --python "2.7" taxcalc=0.1.5
Error: --python option requires 3 arguments
iMac2:policybrain-builder mrh$ pb release --python="2.7" taxcalc=0.1.5
Error: --python option requires 3 arguments
iMac2:policybrain-builder mrh$ pb release --python=2.7 taxcalc=0.1.5
Error: --python option requires 3 arguments
iMac2:policybrain-builder mrh$ 

Also, notice that if I adhere to the --help information about how to order command-line arguments, I have a different kind of problem.

iMac2:policybrain-builder mrh$ pb --python=2.7 release taxcalc=0.1.5
Error: no such option: --python

Maybe the --help line that says Usage: pb [OPTIONS] COMMAND [ARGS]... should be revised?

But my main question, @jbcrail, is how to limit the Python versions to just one (e.g., 2.7).
I didn't have any luck with the OSPC_PYTHONS environment variable either.
What am I doing wrong?

Tax-Calculator usage example: making taxcalc packages

Here is an example of a bash shell script that uses the policybrain-builder CLI, pb, release 0.1.0 to build and upload conda taxcalc packages for Python 2.7 and Python 3.6 for a specified Tax-Calculator release.

Before executing this bash script be sure that the conda-build package is installed.
If it is not installed, then execute this command: conda install conda-build

Also, note that in the find statement in the bash script you need to change anaconda2 to anaconda3 if you are running Python 3.6+ instead of Python 2.7.

Here is content of the bash shell script, which is called taxcalc-packages.sh:

$ pb --version
pb, version 0.1.0

$ cat taxcalc-packages.sh 
#!/bin/bash
# Script to build and upload taxcalc packages for specified release using
# policybrain-builder CLI, pb, with a single parameter, TAG.
# USAGE: pb TAG

echo "STARTING : `date`"

TOKEN=<secret-token>
OPTIONS="--token $TOKEN --clean --label main"
pb release $OPTIONS taxcalc=$1 2>&1 | awk '$1~/\[taxcalc\]/'

conda build purge
find ~/anaconda2/conda-bld -name "*tar.bz2" -exec rm -f {} \;

echo "FINISHED : `date`"
exit 0

Here's a recent use example:

$ ./taxcalc-packages.sh 0.16.0
STARTING : Tue Feb 13 18:13:33 EST 2018
[taxcalc] removing
[taxcalc] cloning
[taxcalc] fetching
[taxcalc] checking out '0.16.0'
[taxcalc] archiving
[taxcalc] building 3.6
[taxcalc] converting to linux-64
[taxcalc] converting to win-32
[taxcalc] converting to win-64
[taxcalc] building 2.7
[taxcalc] converting to linux-64
[taxcalc] converting to win-32
[taxcalc] converting to win-64
[taxcalc] uploading osx-64 packages
[taxcalc] uploading linux-64 packages
[taxcalc] uploading win-32 packages
[taxcalc] uploading win-64 packages
FINISHED : Tue Feb 13 18:31:13 EST 2018

Note that this script builds eight packages: four platforms (osx-64, linux-64, win-32, win-64) for each Python version (2.7, 3.6).

And finally, here is what things look like on anaconda.org after the bash script finished execution:

screen shot 2018-02-14 at 2 42 38 pm

Fix anaconda upload with --force

There are some errors uploading a package that already has been uploaded in the existing script run that don't seem to cause problems. Look into anaconda upload

How to build and upload conda taxcalc packages for a specified release?

Tax-Calculator developers already have the ability to build and locally install a conda taxcalc package, use it, test it, and then uninstall it from the local computer.

How can Tax-Calculator developers build the full range (OS x Python) of taxcalc packages for a specified release and upload them to the ospc master channel without doing anything with OG-USA or B-Tax or any other model? RIght now, the build_release.sh script seems to not work and is excessively complicated for this simple taxcalc build/upload task.

It would be more convenient for this taxcalc build/upload script to be part of the Tax-Calculator repository because it has nothing to do with the other OSPC models.

@MattHJensen @PeterDSteinberg @jbcrail

Trouble packaging OG-USA 0.5.10

I've been trying to upload a new OG-USA package to anaconda with the following script:

#!/bin/bash
# Script to build and upload ogusa packages for
# specified ogusa release and specified taxcalc release
# using policybrain-builder CLI, pb

echo "STARTING : `date`"

OGUSAVER=0.5.10
TCVER=0.20.1
TOKEN='TOKEN HERE'

OPTIONS="--token $TOKEN --clean --label main --only-last"
pb release $OPTIONS taxcalc=$TCVER ogusa=$OGUSAVER #2>&1 | awk '$1~/\[ogusa\]/||$0~/taxcalc/' | grep -v get_micro_data

conda build purge
find ~/anaconda3/conda-bld -name "*tar.bz2" -exec rm -f {} \;

echo "FINISHED : `date`"
exit 0

and got the following output:

HDoupe-MacBook-Pro:policybrain-builder henrydoupe$ ./release.sh 
STARTING : Mon May 21 22:15:20 EDT 2018
[ogusa] removing
removing /tmp/policybrain-builder/pull/ogusa
[ogusa] cloning
cloning https://github.com/open-source-economics/OG-USA to /tmp/policybrain-builder/pull/ogusa
Cloning into '/tmp/policybrain-builder/pull/ogusa'...
remote: Counting objects: 15632, done.
remote: Compressing objects: 100% (14/14), done.
remote: Total 15632 (delta 7), reused 14 (delta 6), pack-reused 15612
Receiving objects: 100% (15632/15632), 711.94 MiB | 4.08 MiB/s, done.
Resolving deltas: 100% (8595/8595), done.
[ogusa] fetching
fetching origin/tags for /tmp/policybrain-builder/pull/ogusa
[ogusa] checking out '0.5.10'
checking out tag '0.5.10'
Note: checking out '0.5.10'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD is now at 4c56f47... Merge pull request #385 from jdebacker/txfunc_plots
[ogusa] archiving
archiving /tmp/policybrain-builder/pull/ogusa
x ogusa-0.5.10/
x ogusa-0.5.10/.gitattributes
x ogusa-0.5.10/.gitignore
x ogusa-0.5.10/.jenkins_wrapper.sh
x ogusa-0.5.10/.regression.txt
x ogusa-0.5.10/.travis.yml
x ogusa-0.5.10/Jenkinsfile
x ogusa-0.5.10/LICENSE.md
x ogusa-0.5.10/MANIFEST.in
x ogusa-0.5.10/README.md
x ogusa-0.5.10/TxFuncEst_baseline.pkl
x ogusa-0.5.10/TxFuncEst_policy.pkl
x ogusa-0.5.10/conda.recipe/
x ogusa-0.5.10/conda.recipe/bld.bat
x ogusa-0.5.10/conda.recipe/build.sh
x ogusa-0.5.10/conda.recipe/meta.yaml
x ogusa-0.5.10/documentation/
x ogusa-0.5.10/documentation/OGUSAdoc.pdf
x ogusa-0.5.10/dynamic/
x ogusa-0.5.10/dynamic/default_full_parameters.json
x ogusa-0.5.10/environment.yml
x ogusa-0.5.10/ogusa/
x ogusa-0.5.10/ogusa/SS.py
x ogusa-0.5.10/ogusa/SS_graphs.py
x ogusa-0.5.10/ogusa/TPI.py
x ogusa-0.5.10/ogusa/TPI_graphs.py
x ogusa-0.5.10/ogusa/__init__.py
x ogusa-0.5.10/ogusa/_version.py
x ogusa-0.5.10/ogusa/aggregates.py
x ogusa-0.5.10/ogusa/calibrate.py
x ogusa-0.5.10/ogusa/data/
x ogusa-0.5.10/ogusa/data/ability/
x ogusa-0.5.10/ogusa/data/ability/FR_wage_profile_tables.xlsx
x ogusa-0.5.10/ogusa/data/demographic/
x ogusa-0.5.10/ogusa/data/demographic/demographic_data.csv
x ogusa-0.5.10/ogusa/data/demographic/mort_rates2011.csv
x ogusa-0.5.10/ogusa/data/demographic/mortality_rates.csv
x ogusa-0.5.10/ogusa/data/demographic/pop_data.csv
x ogusa-0.5.10/ogusa/data/labor/
x ogusa-0.5.10/ogusa/data/labor/cps_hours_by_age_hourspct.txt
x ogusa-0.5.10/ogusa/data/wealth/
x ogusa-0.5.10/ogusa/data/wealth/scf2007to2013_wealth_age_all_percentiles.csv
x ogusa-0.5.10/ogusa/demographics.py
x ogusa-0.5.10/ogusa/elliptical_u_est.py
x ogusa-0.5.10/ogusa/firm.py
x ogusa-0.5.10/ogusa/fiscal.py
x ogusa-0.5.10/ogusa/get_micro_data.py
x ogusa-0.5.10/ogusa/household.py
x ogusa-0.5.10/ogusa/income.py
x ogusa-0.5.10/ogusa/labor.py
x ogusa-0.5.10/ogusa/macro_output.py
x ogusa-0.5.10/ogusa/parameters.py
x ogusa-0.5.10/ogusa/parameters_metadata.json
x ogusa-0.5.10/ogusa/scripts/
x ogusa-0.5.10/ogusa/scripts/__init__.py
x ogusa-0.5.10/ogusa/scripts/execute.py
x ogusa-0.5.10/ogusa/scripts/postprocess.py
x ogusa-0.5.10/ogusa/tax.py
x ogusa-0.5.10/ogusa/tests/
x ogusa-0.5.10/ogusa/tests/cps_test_replace_outliers.pkl
x ogusa-0.5.10/ogusa/tests/test_SS.py
x ogusa-0.5.10/ogusa/tests/test_TPI.py
x ogusa-0.5.10/ogusa/tests/test_aggregates.py
x ogusa-0.5.10/ogusa/tests/test_basic.py
x ogusa-0.5.10/ogusa/tests/test_data.py
x ogusa-0.5.10/ogusa/tests/test_firm.py
x ogusa-0.5.10/ogusa/tests/test_household.py
x ogusa-0.5.10/ogusa/tests/test_io_data/
x ogusa-0.5.10/ogusa/tests/test_io_data/SS_fsolve_inputs.pkl
x ogusa-0.5.10/ogusa/tests/test_io_data/SS_fsolve_outputs.pkl
x ogusa-0.5.10/ogusa/tests/test_io_data/SS_fsolve_reform_baselinespend_inputs.pkl
x ogusa-0.5.10/ogusa/tests/test_io_data/SS_fsolve_reform_baselinespend_outputs.pkl
x ogusa-0.5.10/ogusa/tests/test_io_data/SS_fsolve_reform_inputs.pkl
x ogusa-0.5.10/ogusa/tests/test_io_data/SS_fsolve_reform_outputs.pkl
x ogusa-0.5.10/ogusa/tests/test_io_data/SS_solver_inputs.pkl
x ogusa-0.5.10/ogusa/tests/test_io_data/SS_solver_outputs.pkl
x ogusa-0.5.10/ogusa/tests/test_io_data/create_params_inputs.pkl
x ogusa-0.5.10/ogusa/tests/test_io_data/create_params_outputs.pkl
x ogusa-0.5.10/ogusa/tests/test_io_data/euler_eqn_solver_inputs.pkl
x ogusa-0.5.10/ogusa/tests/test_io_data/euler_eqn_solver_outputs.pkl
x ogusa-0.5.10/ogusa/tests/test_io_data/firstdoughnutring_inputs.pkl
x ogusa-0.5.10/ogusa/tests/test_io_data/firstdoughnutring_outputs.pkl
x ogusa-0.5.10/ogusa/tests/test_io_data/inner_loop_inputs.pkl
x ogusa-0.5.10/ogusa/tests/test_io_data/inner_loop_outputs.pkl
x ogusa-0.5.10/ogusa/tests/test_io_data/run_SS_closed_balanced_inputs.pkl
x ogusa-0.5.10/ogusa/tests/test_io_data/run_SS_closed_balanced_outputs.pkl
x ogusa-0.5.10/ogusa/tests/test_io_data/run_SS_open_unbal_inputs.pkl
x ogusa-0.5.10/ogusa/tests/test_io_data/run_SS_open_unbal_outputs.pkl
x ogusa-0.5.10/ogusa/tests/test_io_data/run_TPI_inputs.pkl
x ogusa-0.5.10/ogusa/tests/test_io_data/run_TPI_outputs.pkl
x ogusa-0.5.10/ogusa/tests/test_io_data/tpi_inner_loop_inputs.pkl
x ogusa-0.5.10/ogusa/tests/test_io_data/tpi_inner_loop_outputs.pkl
x ogusa-0.5.10/ogusa/tests/test_io_data/twist_doughnut_inputs.pkl
x ogusa-0.5.10/ogusa/tests/test_io_data/twist_doughnut_outputs.pkl
x ogusa-0.5.10/ogusa/tests/test_io_data/txfunc_est_inputs.pkl
x ogusa-0.5.10/ogusa/tests/test_io_data/txfunc_est_outputs.pkl
x ogusa-0.5.10/ogusa/tests/test_parameters.py
x ogusa-0.5.10/ogusa/tests/test_run_ogusa.py
x ogusa-0.5.10/ogusa/tests/test_startyears.py
x ogusa-0.5.10/ogusa/tests/test_tax.py
x ogusa-0.5.10/ogusa/tests/test_txfunc.py
x ogusa-0.5.10/ogusa/tests/test_user_inputs.py
x ogusa-0.5.10/ogusa/txfunc.py
x ogusa-0.5.10/ogusa/utils.py
x ogusa-0.5.10/ogusa/wealth.py
x ogusa-0.5.10/ogusa/wealthinit.py
x ogusa-0.5.10/regression/
x ogusa-0.5.10/regression/regression_plots/
x ogusa-0.5.10/regression/regression_plots/pct_change_reform_0.png
x ogusa-0.5.10/regression/regression_plots/pct_change_reform_8.png
x ogusa-0.5.10/regression/regression_plots/pct_change_reform_9.png
x ogusa-0.5.10/regression/regression_plots/pct_change_reforms_1_and_2.png
x ogusa-0.5.10/regression/regression_plots/pct_change_reforms_3_4_5.png
x ogusa-0.5.10/regression/regression_plots/pct_change_reforms_3_and_4.png
x ogusa-0.5.10/regression/regression_plots/pct_change_reforms_6_and_7.png
x ogusa-0.5.10/regression/regression_results.zip
x ogusa-0.5.10/regression/run_reg_reforms.py
x ogusa-0.5.10/regression/test_regression.py
x ogusa-0.5.10/regression_jenkins/
x ogusa-0.5.10/regression_jenkins/new_reforms.json
x ogusa-0.5.10/regression_jenkins/polling_jobs.py
x ogusa-0.5.10/regression_jenkins/reforms.json
x ogusa-0.5.10/regression_jenkins/run_reforms.py
x ogusa-0.5.10/regression_jenkins/run_reforms_bash.sh
x ogusa-0.5.10/regression_jenkins/standards/
x ogusa-0.5.10/regression_jenkins/standards/tc0.6.6_og0.5.5/
x ogusa-0.5.10/regression_jenkins/standards/tc0.6.6_og0.5.5/results_data_reform0.csv
x ogusa-0.5.10/regression_jenkins/standards/tc0.6.6_og0.5.5/results_data_reform1.csv
x ogusa-0.5.10/regression_jenkins/standards/tc0.6.6_og0.5.5/results_data_reform2.csv
x ogusa-0.5.10/regression_jenkins/standards/tc0.6.6_og0.5.5/results_data_reform3.csv
x ogusa-0.5.10/regression_jenkins/standards/tc0.6.6_og0.5.5/results_data_reform4.csv
x ogusa-0.5.10/regression_jenkins/standards/tc0.6.6_og0.5.5/results_data_reform5.csv
x ogusa-0.5.10/regression_jenkins/standards/tc0.6.6_og0.5.5/results_data_reform6.csv
x ogusa-0.5.10/regression_jenkins/standards/tc0.6.6_og0.5.5/results_data_reform7.csv
x ogusa-0.5.10/regression_jenkins/standards/tc0.6.6_og0.5.5/results_data_reform8.csv
x ogusa-0.5.10/regression_jenkins/standards/tc0.6.6_og0.5.5/results_data_reform9.csv
x ogusa-0.5.10/regression_jenkins/standards/tc0.6.6_og0.5.5/results_pprint_reform0.txt
x ogusa-0.5.10/regression_jenkins/standards/tc0.6.6_og0.5.5/results_pprint_reform1.txt
x ogusa-0.5.10/regression_jenkins/standards/tc0.6.6_og0.5.5/results_pprint_reform2.txt
x ogusa-0.5.10/regression_jenkins/standards/tc0.6.6_og0.5.5/results_pprint_reform3.txt
x ogusa-0.5.10/regression_jenkins/standards/tc0.6.6_og0.5.5/results_pprint_reform4.txt
x ogusa-0.5.10/regression_jenkins/standards/tc0.6.6_og0.5.5/results_pprint_reform5.txt
x ogusa-0.5.10/regression_jenkins/standards/tc0.6.6_og0.5.5/results_pprint_reform6.txt
x ogusa-0.5.10/regression_jenkins/standards/tc0.6.6_og0.5.5/results_pprint_reform7.txt
x ogusa-0.5.10/regression_jenkins/standards/tc0.6.6_og0.5.5/results_pprint_reform8.txt
x ogusa-0.5.10/regression_jenkins/standards/tc0.6.6_og0.5.5/results_pprint_reform9.txt
x ogusa-0.5.10/run_examples/
x ogusa-0.5.10/run_examples/2017_law.json
x ogusa-0.5.10/run_examples/run_many_ogusa_parallel.py
x ogusa-0.5.10/run_examples/run_ogusa_example.py
x ogusa-0.5.10/run_examples/run_ogusa_serial.py
x ogusa-0.5.10/setup.cfg
x ogusa-0.5.10/setup.py
x ogusa-0.5.10/ss_outputs.pkl
x ogusa-0.5.10/test_data/
x ogusa-0.5.10/test_data/cps.csv.gz
x ogusa-0.5.10/test_data/cps_weights.csv.gz
x ogusa-0.5.10/upload.sh
x ogusa-0.5.10/version_and_release.sh
x ogusa-0.5.10/versioneer.py
[ogusa] building 3.6
Adding in variants from internal_defaults
INFO:conda_build.variants:Adding in variants from internal_defaults
Adding in variants from config.variant
INFO:conda_build.variants:Adding in variants from config.variant
Attempting to finalize metadata for ogusa
INFO:conda_build.metadata:Attempting to finalize metadata for ogusa
Solving environment: ...working... done
Solving environment: ...working... done
BUILD START: ['ogusa-0.5.10-py36_0.tar.bz2']
Solving environment: ...working... done
Solving environment: ...working... done

## Package Plan ##

  environment location: /Users/henrydoupe/anaconda3/conda-bld/ogusa_1526955504226/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_


The following NEW packages will be INSTALLED:

    attrs:           18.1.0-py36_0               
    blas:            1.0-mkl                     
    bokeh:           0.12.16-py36_0              
    ca-certificates: 2018.03.07-0                
    certifi:         2018.4.16-py36_0            
    cycler:          0.10.0-py36hfc81398_0       
    freetype:        2.8-h12048fb_1              
    intel-openmp:    2018.0.0-8                  
    jinja2:          2.10-py36hd36f9c5_0         
    kiwisolver:      1.0.1-py36h792292d_0        
    libcxx:          4.0.1-h579ed51_0            
    libcxxabi:       4.0.1-hebd6815_0            
    libedit:         3.1.20170329-hb402a30_2     
    libffi:          3.2.1-h475c297_4            
    libgfortran:     3.0.1-h93005f0_2            
    libpng:          1.6.34-he12f830_0           
    llvmlite:        0.23.1-py36hc454e04_0       
    markupsafe:      1.0-py36h3a1e703_1          
    matplotlib:      2.2.2-py36ha7267d0_0        
    mkl:             2018.0.2-1                  
    mkl_fft:         1.0.1-py36h917ab60_0        
    mkl_random:      1.0.1-py36h78cc56f_0        
    more-itertools:  4.1.0-py36_0                
    ncurses:         6.1-h0a44026_0              
    numba:           0.38.0-py36h1702cab_0       
    numpy:           1.14.3-py36h9bb19eb_1       
    numpy-base:      1.14.3-py36h479e554_1       
    openssl:         1.0.2o-h26aff7b_0           
    packaging:       17.1-py36_0                 
    pandas:          0.23.0-py36h1702cab_0       
    pip:             10.0.1-py36_0               
    pluggy:          0.6.0-py36hb1d0581_0        
    py:              1.5.3-py36_0                
    pyparsing:       2.2.0-py36hb281f35_0        
    pytest:          3.5.1-py36_0                
    python:          3.6.5-hc167b69_1            
    python-dateutil: 2.7.3-py36_0                
    pytz:            2018.4-py36_0               
    pyyaml:          3.12-py36h2ba1e63_1         
    readline:        7.0-hc1231fa_4              
    scipy:           1.1.0-py36hcaad992_0        
    setuptools:      39.1.0-py36_0               
    six:             1.11.0-py36h0e22d5e_1       
    sqlite:          3.23.1-hf1716c9_0           
    taxcalc:         0.20.1-py36_0           ospc
    tk:              8.6.7-h35a86e2_3            
    toolz:           0.9.0-py36_0                
    tornado:         5.0.2-py36_0                
    wheel:           0.31.1-py36_0               
    xz:              5.2.4-h1de35cc_4            
    yaml:            0.1.7-hc338f04_2            
    zlib:            1.2.11-hf3cbc9b_2           

Preparing transaction: ...working... done
Verifying transaction: ...working... done
Executing transaction: ...working... done
source tree in: /Users/henrydoupe/anaconda3/conda-bld/ogusa_1526955504226/work
/private/tmp/policybrain-builder/build ~/anaconda3/conda-bld/ogusa_1526955504226/work
/Users/henrydoupe/anaconda3/conda-bld/ogusa_1526955504226/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_/bin/python: can't open file 'setup.py': [Errno 2] No such file or directory
Traceback (most recent call last):
  File "/Users/henrydoupe/anaconda3/bin/conda-build", line 11, in <module>
    sys.exit(main())
  File "/Users/henrydoupe/anaconda3/lib/python3.6/site-packages/conda_build/cli/main_build.py", line 420, in main
    execute(sys.argv[1:])
  File "/Users/henrydoupe/anaconda3/lib/python3.6/site-packages/conda_build/cli/main_build.py", line 411, in execute
    verify=args.verify)
  File "/Users/henrydoupe/anaconda3/lib/python3.6/site-packages/conda_build/api.py", line 200, in build
    notest=notest, need_source_download=need_source_download, variants=variants)
  File "/Users/henrydoupe/anaconda3/lib/python3.6/site-packages/conda_build/build.py", line 2168, in build_tree
    notest=notest,
  File "/Users/henrydoupe/anaconda3/lib/python3.6/site-packages/conda_build/build.py", line 1408, in build
    utils.check_call_env(cmd, env=env, cwd=src_dir, stats=build_stats)
  File "/Users/henrydoupe/anaconda3/lib/python3.6/site-packages/conda_build/utils.py", line 300, in check_call_env
    return _func_defaulting_env_to_os_environ('call', *popenargs, **kwargs)
  File "/Users/henrydoupe/anaconda3/lib/python3.6/site-packages/conda_build/utils.py", line 280, in _func_defaulting_env_to_os_environ
    raise subprocess.CalledProcessError(proc.returncode, _args)
subprocess.CalledProcessError: Command '['/bin/bash', '-e', '/Users/henrydoupe/anaconda3/conda-bld/ogusa_1526955504226/work/conda_build.sh']' returned non-zero exit status 2.
ERROR: Command 'conda build --old-build-string -c ospc --no-anaconda-upload --python 3.6 conda.recipe' returned non-zero exit status 1.
FINISHED : Mon May 21 22:19:49 EDT 2018
HDoupe-MacBook-Pro:policybrain-builder henrydoupe$ 

I have no idea what this error means. I've had some issues with my conda environment and have re-installed it 3 times in the past few weeks. Is anyone else able to replicate this issue?

Building OG-USA package error

I'm trying to use Package-Builder to build a new package for OG-USA. I've updated the conda recipe files, the ogusa/__init__.py file, and the setup.py file per the instructions for Package-Builder. I've probably missed something because my build is failing. Any advice on what I need to change to get the package to build would be appreciated!

I'm doing:

(base) A02655JDEBACKER:dynamic jason.debacker$ pbrelease OG-USA ogusa 0.5.13

I see:

: Package-Builder will build model packages for:
:   repository_name = OG-USA
:   package_name = ogusa
:   model_version = 0.5.13
:   python_versions = ['3.7', '3.6']
: Package-Builder will upload model packages to:
:   Anaconda channel = pslmodels
:   using token in file = /Users/jason.debacker/.pslmodels_anaconda_token
: Package-Builder is starting at Sat Aug  3 23:38:23 2019
: Package-Builder is cloning repository code for 0.5.13
Cloning into 'OG-USA'...
remote: Enumerating objects: 148, done.
remote: Counting objects: 100% (148/148), done.
remote: Compressing objects: 100% (137/137), done.
remote: Total 148 (delta 11), reused 75 (delta 8), pack-reused 0
Receiving objects: 100% (148/148), 121.41 MiB | 2.23 MiB/s, done.
Resolving deltas: 100% (11/11), done.
Note: checking out 'f801ff36a98cacc43e59b06b5fce2d96cd8c8e90'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

: Package-Builder is setting version
: Package-Builder is building package for Python 3.7
No numpy version specified in conda_build_config.yaml.  Falling back to default numpy value of 1.11
WARNING:conda_build.metadata:No numpy version specified in conda_build_config.yaml.  Falling back to default numpy value of 1.11
INFO:conda_build.variants:Adding in variants from internal_defaults
INFO:conda_build.variants:Adding in variants from config.variant
INFO:conda_build.metadata:Attempting to finalize metadata for ogusa
WARNING: symlink_conda() is deprecated.
zip_safe flag not set; analyzing archive contents...
ogusa.__pycache__._version.cpython-37: module references __file__
ogusa.__pycache__.demographics.cpython-37: module references __file__
ogusa.__pycache__.output_plots.cpython-37: module references __file__
ogusa.__pycache__.parameter_plots.cpython-37: module references __file__
ogusa.__pycache__.parameters.cpython-37: module references __file__
ogusa.__pycache__.parametersbase.cpython-37: module references __file__
ogusa.__pycache__.txfunc.cpython-37: module references __file__
Traceback (most recent call last):
  File "setup.py", line 45, in <module>
    setup(**config)
  File "/anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/lib/python3.7/site-packages/setuptools/__init__.py", line 145, in setup
    return distutils.core.setup(**attrs)
  File "/anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/lib/python3.7/distutils/core.py", line 148, in setup
    dist.run_commands()
  File "/anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/lib/python3.7/distutils/dist.py", line 966, in run_commands
    self.run_command(cmd)
  File "/anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/lib/python3.7/distutils/dist.py", line 985, in run_command
    cmd_obj.run()
  File "/anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/lib/python3.7/site-packages/setuptools/command/install.py", line 67, in run
    self.do_egg_install()
  File "/anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/lib/python3.7/site-packages/setuptools/command/install.py", line 117, in do_egg_install
    cmd.run()
  File "/anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/lib/python3.7/site-packages/setuptools/command/easy_install.py", line 418, in run
    self.easy_install(spec, not self.no_deps)
  File "/anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/lib/python3.7/site-packages/setuptools/command/easy_install.py", line 660, in easy_install
    return self.install_item(None, spec, tmpdir, deps, True)
  File "/anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/lib/python3.7/site-packages/setuptools/command/easy_install.py", line 707, in install_item
    self.process_distribution(spec, dist, deps)
  File "/anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/lib/python3.7/site-packages/setuptools/command/easy_install.py", line 752, in process_distribution
    [requirement], self.local_index, self.easy_install
  File "/anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/lib/python3.7/site-packages/pkg_resources/__init__.py", line 782, in resolve
    replace_conflicting=replace_conflicting
  File "/anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/lib/python3.7/site-packages/pkg_resources/__init__.py", line 1065, in best_match
    return self.obtain(req, installer)
  File "/anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/lib/python3.7/site-packages/pkg_resources/__init__.py", line 1077, in obtain
    return installer(requirement)
  File "/anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/lib/python3.7/site-packages/setuptools/command/easy_install.py", line 667, in easy_install
    not self.always_copy, self.local_index
  File "/anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/lib/python3.7/site-packages/setuptools/package_index.py", line 658, in fetch_distribution
    self.find_packages(requirement)
  File "/anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/lib/python3.7/site-packages/setuptools/package_index.py", line 491, in find_packages
    self.scan_url(self.index_url + requirement.unsafe_name + '/')
  File "/anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/lib/python3.7/site-packages/setuptools/package_index.py", line 831, in scan_url
    self.process_url(url, True)
  File "/anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/lib/python3.7/site-packages/setuptools/package_index.py", line 326, in process_url
    "Be sure to add all dependencies in the meta.yaml  url=%s" % url)
RuntimeError: Setuptools downloading is disabled in conda build. Be sure to add all dependencies in the meta.yaml  url=https://pypi.org/simple/mkl/
Traceback (most recent call last):
  File "/anaconda3/bin/conda-build", line 11, in <module>
    sys.exit(main())
  File "/anaconda3/lib/python3.7/site-packages/conda_build/cli/main_build.py", line 438, in main
    execute(sys.argv[1:])
  File "/anaconda3/lib/python3.7/site-packages/conda_build/cli/main_build.py", line 429, in execute
    verify=args.verify)
  File "/anaconda3/lib/python3.7/site-packages/conda_build/api.py", line 201, in build
    notest=notest, need_source_download=need_source_download, variants=variants)
  File "/anaconda3/lib/python3.7/site-packages/conda_build/build.py", line 2204, in build_tree
    notest=notest,
  File "/anaconda3/lib/python3.7/site-packages/conda_build/build.py", line 1445, in build
    utils.check_call_env(cmd, env=env, cwd=src_dir, stats=build_stats)
  File "/anaconda3/lib/python3.7/site-packages/conda_build/utils.py", line 313, in check_call_env
    return _func_defaulting_env_to_os_environ('call', *popenargs, **kwargs)
  File "/anaconda3/lib/python3.7/site-packages/conda_build/utils.py", line 293, in _func_defaulting_env_to_os_environ
    raise subprocess.CalledProcessError(proc.returncode, _args)
subprocess.CalledProcessError: Command '['/bin/bash', '-e', '/anaconda3/conda-bld/ogusa_1564889961935/work/conda_build.sh']' returned non-zero exit status 1.
Traceback (most recent call last):
  File "/anaconda3/lib/python3.7/site-packages/pkgbld-0.22.0-py3.7.egg/pkgbld/utils.py", line 20, in os_call
  File "/anaconda3/lib/python3.7/subprocess.py", line 487, in run
    output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command 'conda build --python 3.7 --old-build-string --channel pslmodels --override-channels --no-anaconda-upload --output-folder pkgbld_output conda.recipe' returned non-zero exit status 1.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/anaconda3/bin/pbrelease", line 11, in <module>
    sys.exit(main())
  File "/anaconda3/lib/python3.7/site-packages/pkgbld-0.22.0-py3.7.egg/pkgbld/cli.py", line 103, in main
  File "/anaconda3/lib/python3.7/site-packages/pkgbld-0.22.0-py3.7.egg/pkgbld/release.py", line 189, in release
  File "/anaconda3/lib/python3.7/site-packages/pkgbld-0.22.0-py3.7.egg/pkgbld/utils.py", line 25, in os_call
OSError: non-zero return code 1 generated by command:
conda build --python 3.7 --old-build-string --channel pslmodels --override-channels --no-anaconda-upload --output-folder pkgbld_output conda.recipe
>output: b"Adding in variants from internal_defaults\nAdding in variants from config.variant\nAttempting to finalize metadata for ogusa\nCollecting package metadata (repodata.json): ...working... done\nSolving environment: ...working... done\nCollecting package metadata (repodata.json): ...working... done\nSolving environment: ...working... done\nBUILD START: ['ogusa-0.5.13-py37_0.tar.bz2']\nCollecting package metadata (repodata.json): ...working... done\nSolving environment: ...working... done\nCollecting package metadata (repodata.json): ...working... done\nSolving environment: ...working... done\n\n## Package Plan ##\n\n  environment location: /anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho\n\n\nThe following NEW packages will be INSTALLED:\n\n    asn1crypto:       0.24.0-py37_1003      conda-forge\n    bokeh:            1.3.1-py37_0          conda-forge\n    bzip2:            1.0.8-h01d97ff_0      conda-forge\n    ca-certificates:  2019.6.16-hecc5488_0  conda-forge\n    certifi:          2019.6.16-py37_1      conda-forge\n    cffi:             1.12.3-py37hccf1714_0 conda-forge\n    chardet:          3.0.4-py37_1003       conda-forge\n    click:            7.0-py_0              conda-forge\n    cloudpickle:      1.2.1-py_0            conda-forge\n    cryptography:     2.7-py37h212c5bf_0    conda-forge\n    cycler:           0.10.0-py_1           conda-forge\n    cytoolz:          0.10.0-py37h01d97ff_0 conda-forge\n    dask:             2.2.0-py_0            conda-forge\n    dask-core:        2.2.0-py_0            conda-forge\n    distributed:      2.2.0-py_1            conda-forge\n    freetype:         2.10.0-h24853df_0     conda-forge\n    fsspec:           0.4.0-py_0            conda-forge\n    heapdict:         1.0.0-py37_1000       conda-forge\n    idna:             2.8-py37_1000         conda-forge\n    intel-openmp:     2019.4-233                       \n    jinja2:           2.10.1-py_0           conda-forge\n    jpeg:             9c-h1de35cc_1001      conda-forge\n    kiwisolver:       1.1.0-py37h770b8ee_0  conda-forge\n    libblas:          3.8.0-11_openblas     conda-forge\n    libcblas:         3.8.0-11_openblas     conda-forge\n    libcxx:           8.0.0-4               conda-forge\n    libcxxabi:        8.0.0-4               conda-forge\n    libffi:           3.2.1-h6de7cb9_1006   conda-forge\n    libgfortran:      4.0.0-0               conda-forge\n    liblapack:        3.8.0-11_openblas     conda-forge\n    libopenblas:      0.3.6-h4bb4525_6      conda-forge\n    libpng:           1.6.37-h2573ce8_0     conda-forge\n    libtiff:          4.0.10-hd08fb8f_1003  conda-forge\n    llvmlite:         0.29.0-py37h3fea490_1 conda-forge\n    locket:           0.2.0-py_2            conda-forge\n    lz4-c:            1.8.3-h6de7cb9_1001   conda-forge\n    markupsafe:       1.1.1-py37h1de35cc_0  conda-forge\n    matplotlib:       3.1.1-py37_1          conda-forge\n    matplotlib-base:  3.1.1-py37h3a684a6_1  conda-forge\n    mkl:              2019.4-233                       \n    msgpack-python:   0.6.1-py37h04f5b5a_0  conda-forge\n    ncurses:          6.1-h0a44026_1002     conda-forge\n    numba:            0.45.1-py37h86efe34_0 conda-forge\n    numpy:            1.17.0-py37h6b0580a_0 conda-forge\n    olefile:          0.46-py_0             conda-forge\n    openssl:          1.1.1c-h01d97ff_0     conda-forge\n    packaging:        19.0-py_0             conda-forge\n    pandas:           0.25.0-py37h86efe34_0 conda-forge\n    partd:            1.0.0-py_0            conda-forge\n    pillow:           6.0.0-py37h7095ceb_0  conda-forge\n    pip:              19.2.1-py37_0         conda-forge\n    psutil:           5.6.3-py37h01d97ff_0  conda-forge\n    pycparser:        2.19-py37_1           conda-forge\n    pyopenssl:        19.0.0-py37_0         conda-forge\n    pyparsing:        2.4.2-py_0            conda-forge\n    pysocks:          1.7.0-py37_0          conda-forge\n    python:           3.7.3-h93065d6_1      conda-forge\n    python-dateutil:  2.8.0-py_0            conda-forge\n    pytz:             2019.2-py_0           conda-forge\n    pyyaml:           5.1.2-py37h01d97ff_0  conda-forge\n    readline:         8.0-hcfe32e1_0        conda-forge\n    requests:         2.22.0-py37_1         conda-forge\n    scipy:            1.3.0-py37h7e0e109_1  conda-forge\n    setuptools:       41.0.1-py37_0         conda-forge\n    six:              1.12.0-py37_1000      conda-forge\n    sortedcontainers: 2.1.0-py_0            conda-forge\n    sqlite:           3.29.0-hb7d70f7_0     conda-forge\n    taxcalc:          2.4.2-py37_0          pslmodels  \n    tblib:            1.4.0-py_0            conda-forge\n    tk:               8.6.9-h2573ce8_1002   conda-forge\n    toolz:            0.10.0-py_0           conda-forge\n    tornado:          6.0.3-py37h01d97ff_0  conda-forge\n    urllib3:          1.25.3-py37_0         conda-forge\n    wheel:            0.33.4-py37_0         conda-forge\n    xz:               5.2.4-h1de35cc_1001   conda-forge\n    yaml:             0.1.7-h1de35cc_1001   conda-forge\n    zict:             1.0.0-py_0            conda-forge\n    zlib:             1.2.11-h01d97ff_1005  conda-forge\n    zstd:             1.4.0-ha9f0a20_0      conda-forge\n\nPreparing transaction: ...working... done\nVerifying transaction: ...working... done\nExecuting transaction: ...working... done\nINFO: activate-gfortran_osx-64.sh made the following environmental changes:\n+DEBUG_FFLAGS=-march=nocona -mtune=core2 -ftree-vectorize -fPIC -fstack-protector -O2 -pipe -I/anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/include -fdebug-prefix-map=/anaconda3/conda-bld/ogusa_1564889961935/work=/usr/local/src/conda/ogusa-0.5.13 -fdebug-prefix-map=/anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho=/usr/local/src/conda-prefix -march=nocona -mtune=core2 -ftree-vectorize -fPIC -fstack-protector -O2 -pipe -Og -g -Wall -Wextra -fcheck=all -fbacktrace -fimplicit-none -fvar-tracking-assignments\n+DEBUG_FORTRANFLAGS=-march=nocona -mtune=core2 -ftree-vectorize -fPIC -fstack-protector -O2 -pipe -I/anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/include -fdebug-prefix-map=/anaconda3/conda-bld/ogusa_1564889961935/work=/usr/local/src/conda/ogusa-0.5.13 -fdebug-prefix-map=/anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho=/usr/local/src/conda-prefix -march=nocona -mtune=core2 -ftree-vectorize -fPIC -fstack-protector -O2 -pipe -Og -g -Wall -Wextra -fcheck=all -fbacktrace -fimplicit-none -fvar-tracking-assignments\n+F77=/anaconda3/bin/x86_64-apple-darwin13.4.0-gfortran\n+F90=/anaconda3/bin/x86_64-apple-darwin13.4.0-gfortran\n+F95=/anaconda3/bin/x86_64-apple-darwin13.4.0-gfortran\n+FC=/anaconda3/bin/x86_64-apple-darwin13.4.0-gfortran\n+FFLAGS=-march=nocona -mtune=core2 -ftree-vectorize -fPIC -fstack-protector -O2 -pipe -I/anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/include -fdebug-prefix-map=/anaconda3/conda-bld/ogusa_1564889961935/work=/usr/local/src/conda/ogusa-0.5.13 -fdebug-prefix-map=/anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho=/usr/local/src/conda-prefix\n+FORTRANFLAGS=-march=nocona -mtune=core2 -ftree-vectorize -fPIC -fstack-protector -O2 -pipe -I/anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/include -fdebug-prefix-map=/anaconda3/conda-bld/ogusa_1564889961935/work=/usr/local/src/conda/ogusa-0.5.13 -fdebug-prefix-map=/anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho=/usr/local/src/conda-prefix\n+GFORTRAN=/anaconda3/bin/x86_64-apple-darwin13.4.0-gfortran\n+HOST=x86_64-apple-darwin13.4.0\nINFO: activate_clang_osx-64.sh made the following environmental changes:\n+AR=/anaconda3/bin/x86_64-apple-darwin13.4.0-ar\n+AS=/anaconda3/bin/x86_64-apple-darwin13.4.0-as\n+CC=x86_64-apple-darwin13.4.0-clang\n+CFLAGS=-march=core2 -mtune=haswell -mssse3 -ftree-vectorize -fPIC -fPIE -fstack-protector-strong -O2 -pipe -I/anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/include -fdebug-prefix-map=${SRC_DIR}=/usr/local/src/conda/${PKG_NAME}-${PKG_VERSION} -fdebug-prefix-map=${PREFIX}=/usr/local/src/conda-prefix\n+CHECKSYMS=/anaconda3/bin/x86_64-apple-darwin13.4.0-checksyms\n+CLANG=/anaconda3/bin/x86_64-apple-darwin13.4.0-clang\n+CODESIGN_ALLOCATE=/anaconda3/bin/x86_64-apple-darwin13.4.0-codesign_allocate\n+CONDA_BUILD_SYSROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk\n+CPPFLAGS=-D_FORTIFY_SOURCE=2 -mmacosx-version-min=10.9\n+DEBUG_CFLAGS=-march=core2 -mtune=haswell -mssse3 -ftree-vectorize -fPIC -fPIE -fstack-protector-strong -O2 -pipe -Og -g -Wall -Wextra -I/anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/include -fdebug-prefix-map=${SRC_DIR}=/usr/local/src/conda/${PKG_NAME}-${PKG_VERSION} -fdebug-prefix-map=${PREFIX}=/usr/local/src/conda-prefix\n+INDR=/anaconda3/bin/x86_64-apple-darwin13.4.0-indr\n+INSTALL_NAME_TOOL=/anaconda3/bin/x86_64-apple-darwin13.4.0-install_name_tool\n+LD=/anaconda3/bin/x86_64-apple-darwin13.4.0-ld\n+LDFLAGS=-Wl,-pie -Wl,-headerpad_max_install_names -Wl,-dead_strip_dylibs -Wl,-rpath,/anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/lib -L/anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/lib\n+LDFLAGS_LD=-pie -headerpad_max_install_names -dead_strip_dylibs -rpath /anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/lib -L/anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/lib\n+LIBTOOL=/anaconda3/bin/x86_64-apple-darwin13.4.0-libtool\n+LIPO=/anaconda3/bin/x86_64-apple-darwin13.4.0-lipo\n+NM=/anaconda3/bin/x86_64-apple-darwin13.4.0-nm\n+NMEDIT=/anaconda3/bin/x86_64-apple-darwin13.4.0-nmedit\n+OTOOL=/anaconda3/bin/x86_64-apple-darwin13.4.0-otool\n+PAGESTUFF=/anaconda3/bin/x86_64-apple-darwin13.4.0-pagestuff\n+RANLIB=/anaconda3/bin/x86_64-apple-darwin13.4.0-ranlib\n+REDO_PREBINDING=/anaconda3/bin/x86_64-apple-darwin13.4.0-redo_prebinding\n+SEGEDIT=/anaconda3/bin/x86_64-apple-darwin13.4.0-segedit\n+SEG_ADDR_TABLE=/anaconda3/bin/x86_64-apple-darwin13.4.0-seg_addr_table\n+SEG_HACK=/anaconda3/bin/x86_64-apple-darwin13.4.0-seg_hack\n+SIZE=/anaconda3/bin/x86_64-apple-darwin13.4.0-size\n+STRINGS=/anaconda3/bin/x86_64-apple-darwin13.4.0-strings\n+STRIP=/anaconda3/bin/x86_64-apple-darwin13.4.0-strip\n+_CONDA_PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_x86_64_apple_darwin13_4_0\nINFO: activate_clangxx_osx-64.sh made the following environmental changes:\n+CLANGXX=/anaconda3/bin/x86_64-apple-darwin13.4.0-clang++\n+CXX=x86_64-apple-darwin13.4.0-clang++\n+CXXFLAGS=-march=core2 -mtune=haswell -mssse3 -ftree-vectorize -fPIC -fPIE -fstack-protector-strong -O2 -pipe -stdlib=libc++ -fvisibility-inlines-hidden -std=c++14 -fmessage-length=0 -I/anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/include -fdebug-prefix-map=${SRC_DIR}=/usr/local/src/conda/${PKG_NAME}-${PKG_VERSION} -fdebug-prefix-map=${PREFIX}=/usr/local/src/conda-prefix\n+DEBUG_CXXFLAGS=-march=core2 -mtune=haswell -mssse3 -ftree-vectorize -fPIC -fPIE -fstack-protector-strong -O2 -pipe -stdlib=libc++ -fvisibility-inlines-hidden -std=c++14 -fmessage-length=0 -Og -g -Wall -Wextra -I/anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/include -fdebug-prefix-map=${SRC_DIR}=/usr/local/src/conda/${PKG_NAME}-${PKG_VERSION} -fdebug-prefix-map=${PREFIX}=/usr/local/src/conda-prefix\n~/temporary_pkgbld_working_dir/OG-USA /anaconda3/conda-bld/ogusa_1564889961935/work\nrunning install\nrunning bdist_egg\nrunning egg_info\ncreating ogusa.egg-info\nwriting ogusa.egg-info/PKG-INFO\nwriting dependency_links to ogusa.egg-info/dependency_links.txt\nwriting requirements to ogusa.egg-info/requires.txt\nwriting top-level names to ogusa.egg-info/top_level.txt\nwriting manifest file 'ogusa.egg-info/SOURCES.txt'\nreading manifest file 'ogusa.egg-info/SOURCES.txt'\nreading manifest template 'MANIFEST.in'\nwriting manifest file 'ogusa.egg-info/SOURCES.txt'\ninstalling library code to build/bdist.macosx-10.9-x86_64/egg\nrunning install_lib\nrunning build_py\ncreating build\ncreating build/lib\ncreating build/lib/ogusa\ncopying ogusa/income.py -> build/lib/ogusa\ncopying ogusa/tax.py -> build/lib/ogusa\ncopying ogusa/elliptical_u_est.py -> build/lib/ogusa\ncopying ogusa/_version.py -> build/lib/ogusa\ncopying ogusa/TPI_graphs.py -> build/lib/ogusa\ncopying ogusa/txfunc.py -> build/lib/ogusa\ncopying ogusa/demographics.py -> build/lib/ogusa\ncopying ogusa/parameter_tables.py -> build/lib/ogusa\ncopying ogusa/execute.py -> build/lib/ogusa\ncopying ogusa/constants.py -> build/lib/ogusa\ncopying ogusa/output_plots.py -> build/lib/ogusa\ncopying ogusa/postprocess.py -> build/lib/ogusa\ncopying ogusa/SS_graphs.py -> build/lib/ogusa\ncopying ogusa/__init__.py -> build/lib/ogusa\ncopying ogusa/TPI.py -> build/lib/ogusa\ncopying ogusa/parameter_plots.py -> build/lib/ogusa\ncopying ogusa/utils.py -> build/lib/ogusa\ncopying ogusa/get_micro_data.py -> build/lib/ogusa\ncopying ogusa/aggregates.py -> build/lib/ogusa\ncopying ogusa/parametersbase.py -> build/lib/ogusa\ncopying ogusa/household.py -> build/lib/ogusa\ncopying ogusa/fiscal.py -> build/lib/ogusa\ncopying ogusa/parameters.py -> build/lib/ogusa\ncopying ogusa/SS.py -> build/lib/ogusa\ncopying ogusa/firm.py -> build/lib/ogusa\ncopying ogusa/macro_output.py -> build/lib/ogusa\ncopying ogusa/OGUSAplots.mplstyle -> build/lib/ogusa\ncopying ogusa/default_parameters.json -> build/lib/ogusa\ncreating build/lib/ogusa/data\ncreating build/lib/ogusa/data/ability\ncopying ogusa/data/ability/FR_wage_profile_tables.xlsx -> build/lib/ogusa/data/ability\ncreating build/lib/ogusa/data/demographic\ncopying ogusa/data/demographic/demographic_data.csv -> build/lib/ogusa/data/demographic\ncopying ogusa/data/demographic/mort_rates2011.csv -> build/lib/ogusa/data/demographic\ncopying ogusa/data/demographic/mortality_rates.csv -> build/lib/ogusa/data/demographic\ncopying ogusa/data/demographic/pop_data.csv -> build/lib/ogusa/data/demographic\ncreating build/lib/ogusa/data/labor\ncopying ogusa/data/labor/cps_hours_by_age_hourspct.txt -> build/lib/ogusa/data/labor\ncopying ogusa/parameters_metadata.json -> build/lib/ogusa\ncreating build/lib/ogusa/data/wealth\ncopying ogusa/data/wealth/scf2007to2013_wealth_age_all_percentiles.csv -> build/lib/ogusa/data/wealth\ncreating build/bdist.macosx-10.9-x86_64\ncreating build/bdist.macosx-10.9-x86_64/egg\ncreating build/bdist.macosx-10.9-x86_64/egg/ogusa\ncopying build/lib/ogusa/income.py -> build/bdist.macosx-10.9-x86_64/egg/ogusa\ncopying build/lib/ogusa/tax.py -> build/bdist.macosx-10.9-x86_64/egg/ogusa\ncopying build/lib/ogusa/elliptical_u_est.py -> build/bdist.macosx-10.9-x86_64/egg/ogusa\ncopying build/lib/ogusa/default_parameters.json -> build/bdist.macosx-10.9-x86_64/egg/ogusa\ncopying build/lib/ogusa/_version.py -> build/bdist.macosx-10.9-x86_64/egg/ogusa\ncopying build/lib/ogusa/TPI_graphs.py -> build/bdist.macosx-10.9-x86_64/egg/ogusa\ncopying build/lib/ogusa/txfunc.py -> build/bdist.macosx-10.9-x86_64/egg/ogusa\ncopying build/lib/ogusa/demographics.py -> build/bdist.macosx-10.9-x86_64/egg/ogusa\ncopying build/lib/ogusa/parameter_tables.py -> build/bdist.macosx-10.9-x86_64/egg/ogusa\ncopying build/lib/ogusa/execute.py -> build/bdist.macosx-10.9-x86_64/egg/ogusa\ncopying build/lib/ogusa/constants.py -> build/bdist.macosx-10.9-x86_64/egg/ogusa\ncopying build/lib/ogusa/output_plots.py -> build/bdist.macosx-10.9-x86_64/egg/ogusa\ncopying build/lib/ogusa/postprocess.py -> build/bdist.macosx-10.9-x86_64/egg/ogusa\ncopying build/lib/ogusa/SS_graphs.py -> build/bdist.macosx-10.9-x86_64/egg/ogusa\ncopying build/lib/ogusa/parameters_metadata.json -> build/bdist.macosx-10.9-x86_64/egg/ogusa\ncopying build/lib/ogusa/OGUSAplots.mplstyle -> build/bdist.macosx-10.9-x86_64/egg/ogusa\ncopying build/lib/ogusa/__init__.py -> build/bdist.macosx-10.9-x86_64/egg/ogusa\ncopying build/lib/ogusa/TPI.py -> build/bdist.macosx-10.9-x86_64/egg/ogusa\ncopying build/lib/ogusa/parameter_plots.py -> build/bdist.macosx-10.9-x86_64/egg/ogusa\ncopying build/lib/ogusa/utils.py -> build/bdist.macosx-10.9-x86_64/egg/ogusa\ncopying build/lib/ogusa/get_micro_data.py -> build/bdist.macosx-10.9-x86_64/egg/ogusa\ncopying build/lib/ogusa/aggregates.py -> build/bdist.macosx-10.9-x86_64/egg/ogusa\ncopying build/lib/ogusa/parametersbase.py -> build/bdist.macosx-10.9-x86_64/egg/ogusa\ncopying build/lib/ogusa/household.py -> build/bdist.macosx-10.9-x86_64/egg/ogusa\ncopying build/lib/ogusa/fiscal.py -> build/bdist.macosx-10.9-x86_64/egg/ogusa\ncopying build/lib/ogusa/parameters.py -> build/bdist.macosx-10.9-x86_64/egg/ogusa\ncopying build/lib/ogusa/SS.py -> build/bdist.macosx-10.9-x86_64/egg/ogusa\ncopying build/lib/ogusa/firm.py -> build/bdist.macosx-10.9-x86_64/egg/ogusa\ncreating build/bdist.macosx-10.9-x86_64/egg/ogusa/data\ncreating build/bdist.macosx-10.9-x86_64/egg/ogusa/data/wealth\ncopying build/lib/ogusa/data/wealth/scf2007to2013_wealth_age_all_percentiles.csv -> build/bdist.macosx-10.9-x86_64/egg/ogusa/data/wealth\ncreating build/bdist.macosx-10.9-x86_64/egg/ogusa/data/demographic\ncopying build/lib/ogusa/data/demographic/mortality_rates.csv -> build/bdist.macosx-10.9-x86_64/egg/ogusa/data/demographic\ncopying build/lib/ogusa/data/demographic/pop_data.csv -> build/bdist.macosx-10.9-x86_64/egg/ogusa/data/demographic\ncopying build/lib/ogusa/data/demographic/demographic_data.csv -> build/bdist.macosx-10.9-x86_64/egg/ogusa/data/demographic\ncopying build/lib/ogusa/data/demographic/mort_rates2011.csv -> build/bdist.macosx-10.9-x86_64/egg/ogusa/data/demographic\ncreating build/bdist.macosx-10.9-x86_64/egg/ogusa/data/ability\ncopying build/lib/ogusa/data/ability/FR_wage_profile_tables.xlsx -> build/bdist.macosx-10.9-x86_64/egg/ogusa/data/ability\ncreating build/bdist.macosx-10.9-x86_64/egg/ogusa/data/labor\ncopying build/lib/ogusa/data/labor/cps_hours_by_age_hourspct.txt -> build/bdist.macosx-10.9-x86_64/egg/ogusa/data/labor\ncopying build/lib/ogusa/macro_output.py -> build/bdist.macosx-10.9-x86_64/egg/ogusa\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ogusa/income.py to income.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ogusa/tax.py to tax.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ogusa/elliptical_u_est.py to elliptical_u_est.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ogusa/_version.py to _version.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ogusa/TPI_graphs.py to TPI_graphs.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ogusa/txfunc.py to txfunc.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ogusa/demographics.py to demographics.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ogusa/parameter_tables.py to parameter_tables.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ogusa/execute.py to execute.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ogusa/constants.py to constants.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ogusa/output_plots.py to output_plots.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ogusa/postprocess.py to postprocess.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ogusa/SS_graphs.py to SS_graphs.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ogusa/__init__.py to __init__.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ogusa/TPI.py to TPI.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ogusa/parameter_plots.py to parameter_plots.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ogusa/utils.py to utils.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ogusa/get_micro_data.py to get_micro_data.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ogusa/aggregates.py to aggregates.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ogusa/parametersbase.py to parametersbase.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ogusa/household.py to household.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ogusa/fiscal.py to fiscal.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ogusa/parameters.py to parameters.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ogusa/SS.py to SS.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ogusa/firm.py to firm.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ogusa/macro_output.py to macro_output.cpython-37.pyc\ncreating build/bdist.macosx-10.9-x86_64/egg/EGG-INFO\ncopying ogusa.egg-info/PKG-INFO -> build/bdist.macosx-10.9-x86_64/egg/EGG-INFO\ncopying ogusa.egg-info/SOURCES.txt -> build/bdist.macosx-10.9-x86_64/egg/EGG-INFO\ncopying ogusa.egg-info/dependency_links.txt -> build/bdist.macosx-10.9-x86_64/egg/EGG-INFO\ncopying ogusa.egg-info/requires.txt -> build/bdist.macosx-10.9-x86_64/egg/EGG-INFO\ncopying ogusa.egg-info/top_level.txt -> build/bdist.macosx-10.9-x86_64/egg/EGG-INFO\ncreating dist\ncreating 'dist/ogusa-0.5.13-py3.7.egg' and adding 'build/bdist.macosx-10.9-x86_64/egg' to it\nremoving 'build/bdist.macosx-10.9-x86_64/egg' (and everything under it)\nProcessing ogusa-0.5.13-py3.7.egg\ncreating /anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/lib/python3.7/site-packages/ogusa-0.5.13-py3.7.egg\nExtracting ogusa-0.5.13-py3.7.egg to /anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/lib/python3.7/site-packages\nAdding ogusa 0.5.13 to easy-install.pth file\n\nInstalled /anaconda3/conda-bld/ogusa_1564889961935/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/lib/python3.7/site-packages/ogusa-0.5.13-py3.7.egg\nProcessing dependencies for ogusa==0.5.13\nSearching for mkl\nCopying /Users/jason.debacker/temporary_pkgbld_working_dir/OG-USA to /anaconda3/conda-bld/ogusa_1564889961935/work\nsource tree in: /anaconda3/conda-bld/ogusa_1564889961935/work\n"

cc @martinholmer @hdoupe @rickecon

Error proofing for local running of build_release.sh

  • Avoid accidental upload:
    • Review / change the usage of anaconda upload --force
    • Review / change the file name spec passed to anaconda upload
  • Allow builds from tags / branches from personal forks
  • Configure to which anaconda org user name it uploads? Currently set to ospc. This would require the CI user of this script to add tokens to their build config.
  • Consider decoupling to some extent the build process. Currently it always builds taxcalc=A.B.C first because it pins ogusa and btax to >=A.B.C by programmatically altering their conda recipes
  • Allow the build_release.sh user to change the package file name, e.g. building branch of X of taxcalc but naming the released packages by something other than X

Error in configuring pb

I'm having trouble getting past the Configuration step.

when I do conda install anaconda-client I get the following:

Fetching package metadata .....
CondaHTTPError: HTTP 401 UNAUTHORIZED for url <https://conda.anaconda.org/t/<token>/opensourcepolicycenter/osx-64/repodata.json>
Elapsed: 00:00.030698
CF-RAY: 39b42e952ad056f3-IAD

The token '<token>' given for the URL is invalid.

If this token was pulled from anaconda-client, you will need to use
anaconda-client to reauthenticate.

If you supplied this token to conda directly, you will need to adjust your
conda configuration to proceed.

Use `conda config --show` to view your configuration's current state.
Further configuration help can be found at <https://conda.io/docs/config.html>.

cona config --show returns:

A02655JDEBACKER:policybrain-builder jason.debacker$ conda config --show
add_anaconda_token: True
add_pip_as_python_dependency: True
allow_non_channel_urls: True
allow_softlinks: True
always_copy: False
always_softlink: False
always_yes: True
anaconda_upload: None
auto_update_conda: True
changeps1: True
channel_alias: https://conda.anaconda.org
channel_priority: True
channels:
  - anaconda-fusion
  - https://conda.anaconda.org/t/<token>/opensourcepolicycenter
  - https://conda.anaconda.org/t/<token BUT WITH FIRST CHARACTER CHANGED>/opensourcepolicycenter
  - defaults
client_ssl_cert: None
client_ssl_cert_key: None
clobber: False
create_default_packages: []
custom_channels:
  pkgs/free: https://repo.continuum.io/
  pkgs/r: https://repo.continuum.io/
  pkgs/pro: https://repo.continuum.io/
custom_multichannels:
  defaults: ["https://repo.continuum.io/pkgs/free", "https://repo.continuum.io/pkgs/r", "https://repo.continuum.io/pkgs/pro"]
  local: []
default_channels:
  - https://repo.continuum.io/pkgs/free
  - https://repo.continuum.io/pkgs/r
  - https://repo.continuum.io/pkgs/pro
disallow: []
envs_dirs:
  - /Users/jason.debacker/anaconda/envs
  - /Users/jason.debacker/.conda/envs
force: False
json: False
local_repodata_ttl: 1
migrated_channel_aliases: []
offline: False
path_conflict: clobber
pinned_packages: []
pkgs_dirs:
  - /Users/jason.debacker/anaconda/pkgs
  - /Users/jason.debacker/.conda/pkgs
proxy_servers: {}
quiet: False
remote_connect_timeout_secs: 9.15
remote_max_retries: 3
remote_read_timeout_secs: 60.0
rollback_enabled: True
shortcuts: True
show_channel_urls: None
ssl_verify: True
track_features: []
use_pip: True
verbosity: 0

But I don't know how to make sense of this. Could the issue be related to there being to urls under "channels" with one of them having an incorrect string for the token? If so, how would I change that

If I proceed to the pb build command, I get an error that suggests I need to set the configuration.

Please let me know if you have suggestions. Thanks!

cc @martinholmer

Documentation Enhancement: Token Information

Would it be possible to add more information on how to obtain/use the required .pslmodels_anaconda_token? I've been searching through old issues in the repo and I believe that I've been able to piece together enough information, but it would be nice to have a few lines in the README about it. I would make this enhancement myself but I believe it would be better to come from someone with more experience using this package.

policybrain-builder CLI no longer working

@jbcrail, I'm having trouble releasing taxcalc 0.10.0 packages.
Here's what is happening.

$ python setup.py install

$ conda list policybrain
# packages in environment at /Users/mrh/anaconda:
#
policybrain-builder       0.0.1                     <pip>

# cat taxcalc-package-cli.sh
#!/bin/bash
# Script to build and upload taxcalc package for specified release using
# policybrain-builder CLI, pb, with a single parameter, TAG (e.g., 0.9.0)

echo "STARTING : `date`"

TOKEN=<secret-token-that-is-good-well-into-2018>

pb release --token $TOKEN --label main taxcalc=$1

echo "FINISHED : `date`"
exit 0

$ ./taxcalc-package-cli.sh 0.10.0
STARTING : Mon Aug 28 16:38:55 EDT 2017
FINISHED : Mon Aug 28 16:38:59 EDT 2017

Why does pb seem to no longer work?
It worked fine for me a couple of weeks ago.
Am I doing something wrong?

Another requested script improvement: remembering user's always_yes setting

It has been nearly a week since I used the script in the policybrain-builder repo to build and upload to anaconda.org the fifteen taxcalc packages for Tax-Calculator release 0.9.1.

Since then I have noticed that the current script does not respect the script user's personal preferences concerning the always_yes conda variable. My experience with scripts like this is that they remember the user's settings, change those settings for the convenience of the script, and then return the settings back to the way the user had them.

The always_yes conda config setting is a pretty important safety-belt feature. It makes sense for the script (which is not interactive) to set that variable to True. But the script is being impolite to not set it back to False if the user of the script had it set that way.

BUG: pb no longer respects user's conda always_yes setting

Last summer pb was fixed to resolve issue #51, but my testing today (Oct 24, 2017) after the recent bug fixes, suggests that pb no longer has this desirable feature.

@jbcrail, the bug fixes you made today are great, but this apparent regression needs to be fixed. It's not just a convenience issue, there are safety concerns for users who rely on the yes/no prompt when using conda.

Question about naming of the conda packages

Following the merge of pull request #52, I experimented with the new CLI pb capability.
Thank you, @jbcrail, for this major improvement.

My experiment involved creating release 0.1.5 with the HEAD of the Tax-Calculator master branch and then running the following script:

TOKEN=a-deep-secret
pb release --token $TOKEN --label main taxcalc=0.1.5

After a little more than twenty minutes, all 15 of the conda packages were on anaconda.org.
So, everything worked smoothly.

However, the names of the 0.1.5 packages are very strange and confusing to anybody not immersed in the conda-packaging world. And the names are different than when the packages were made with the old bash shell script. Here is what I saw after running my experiment:

iMac2:tax-calculator mrh$ conda search -c ospc taxcalc | grep -e 0.9 -e 0.1.5
taxcalc                      0.1.5            py27ha32e829_0  ospc            
                             0.9.0                    py27_0  ospc            
                             0.9.0                    py35_0  ospc            
                             0.9.0                    py36_0  ospc            
                             0.9.1                    py27_0  ospc            
                             0.9.1                    py35_0  ospc            
                             0.9.1                    py36_0  ospc            
                             0.9.2                    py27_0  ospc            
                             0.9.2                    py35_0  ospc            
                             0.9.2                    py36_0  ospc            
iMac2:tax-calculator mrh$ 

What is this inscrutable string ha32e829 mean?
Can we get rid of it so that the new package names look like the old package names?
The reason for this is that we ask non-developers to download the taxcalc package (in order to use the Tax-Calculator CLI, tc) and we would like to make this process as "non-scary" as possible.

Can't install new conda packages

@jbcrail, Thanks for your quick response to my recent issues. Now the build and upload behavior is the same when using the pb release --python "..." option, and the built/uploaded packages have the simple file names (without the hash) like they did when they were created by the bash shell script. So, thanks for all the responsive help.

However, maybe I'm doing something wrong, but I having problems. Here is what I'm doing.

I create (for testing purposes) release 0.1.5 that contains the HEAD of Tax-Calculator master.
Then I execute the following script using 0.1.5 as the command-line argument:

TOKEN=a-deep-secret
pb release --token $TOKEN --label main taxcalc=$1
conda build purge

It runs to completion without any errors and I see all 15 taxcalc 0.1.5 packages when I login as ospc on anaconda.org. Everything is perfect so far.

But then when I try to conda search or conda install taxcalc 0.1.5, the packages are not visible and cannot be installed. Here is what I get:

iMac2:file-upload-tests mrh$ conda search -c ospc taxcalc | grep -e 0.9 -e 0.1.5
                             0.9.0                    py27_0  ospc            
                             0.9.0                    py35_0  ospc            
                             0.9.0                    py36_0  ospc            
                             0.9.1                    py27_0  ospc            
                             0.9.1                    py35_0  ospc            
                             0.9.1                    py36_0  ospc            
                             0.9.2                    py27_0  ospc            
                             0.9.2                    py35_0  ospc            
                             0.9.2                    py36_0  ospc            
iMac2:file-upload-tests mrh$ conda install -c ospc taxcalc=0.1.5
Fetching package metadata ...........

PackageNotFoundError: Packages missing in current channels:
            
  - taxcalc 0.1.5*

We have searched for the packages in the following channels:
            
  - https://conda.anaconda.org/ospc/osx-64
  - https://conda.anaconda.org/ospc/noarch
  - https://repo.continuum.io/pkgs/free/osx-64
  - https://repo.continuum.io/pkgs/free/noarch
  - https://repo.continuum.io/pkgs/r/osx-64
  - https://repo.continuum.io/pkgs/r/noarch
  - https://repo.continuum.io/pkgs/pro/osx-64
  - https://repo.continuum.io/pkgs/pro/noarch

iMac2:file-upload-tests mrh$ 

I don't understand why the conda commands on my local computer don't "see" the 0.1.5 package when it is clearly there on anaconda.org. Am I doing something wrong?

Allow configuration of taxcalc pinning for B-Tax and OG-USA builds

Currently B-Tax and OG-USA are always pinned to >=X.Y.Z version of taxcalc where X.Y.Z is the latest release of taxcalc. We should provide a way to:

  • Skip the Tax-Calculator build before OG-USA or B-Tax builds
  • Give an environment variable or Jenkins argument that is the taxcalc version to which B-Tax and OG-USA should be pinned with >=

Question: how to use pb CLI to release packages for btax 0.1.9 ?

@jbcrail, Can you show how to use pb to release btax 0.1.9 using a specified verion of taxcalc?
Is it something like this?

pb release --clean --token $TOKEN --label main --only-last taxcalc=0.10.0 btax=0.1.9

My worry is this might recreate the taxcalc 0.10.0 packages, which is not only unnecessarily time consuming but also potentially risky. Is that what the --only-last flag does? Does it mean that only the last named package (in this case, btax=0.1.9) is built and uploaded to anaconda.org?

Is the above example how to tell pb to use (but not build or upload) a specified taxcalc pacakge?

Also, now that developers besides me are starting to use policybrain-builder, the README documentation is very confusing. Shouldn't the README-cli.md file be renamed README.md? And shouldn't the old build_release.sh bash script be removed from the repo?

@MattHJensen @jdebacker

"dirty" is in version name if using `builder.py`

In PSLmodels/OG-Core#394, @martinholmer pointed out that "dirty" is in the OG-USA package version. This usually happens if you are working with a package locally and have made changes that have not been committed yet:

If either is called in a checked out source tree, they invoke โ€œgit describeโ€ (with โ€“tags โ€“always โ€“dirty) to come up with a fine-grained version string. If youโ€™re sitting on a tag, you get just โ€œ1.4โ€. If youโ€™re after a tag, youโ€™ll get something like โ€œ1.4-8-gf7283c2โ€, which means there are 8 commits after the 1.4 tag, and the abbreviated SHA1 revision ID is f7283c2. And if your tree has uncommitted changes, youโ€™ll get โ€œ1.4-8-gf7283c2-dirtyโ€.

source: https://blog.mozilla.org/warner/2012/01/31/version-string-management-in-python-introducing-python-versioneer/

For example:

HDoupe-MacBook-Pro:Documents henrydoupe$ mkdir dirtytest
HDoupe-MacBook-Pro:Documents henrydoupe$ cd dirtytest/
HDoupe-MacBook-Pro:dirtytest henrydoupe$ git clone https://github.com/open-source-economics/Tax-Calculator
Cloning into 'Tax-Calculator'...
remote: Enumerating objects: 92, done.
remote: Counting objects: 100% (92/92), done.
remote: Compressing objects: 100% (60/60), done.
remote: Total 29332 (delta 40), reused 58 (delta 32), pack-reused 29240
Receiving objects: 100% (29332/29332), 982.97 MiB | 6.18 MiB/s, done.
Resolving deltas: 100% (21824/21824), done.
HDoupe-MacBook-Pro:dirtytest henrydoupe$ cd Tax-Calculator/
HDoupe-MacBook-Pro:Tax-Calculator henrydoupe$ git checkout 0.20.1 -b v0.20.1
Switched to a new branch 'v0.20.1'
HDoupe-MacBook-Pro:Tax-Calculator henrydoupe$ echo "import taxcalc; print(taxcalc.__version__)" > taxcalc/extra.py
HDoupe-MacBook-Pro:Tax-Calculator henrydoupe$ pip install -e .
Obtaining file:///Users/henrydoupe/Documents/dirtytest/Tax-Calculator
Requirement already satisfied: numpy in /Users/henrydoupe/anaconda3/lib/python3.6/site-packages (from taxcalc==0.20.1) (1.15.1)
Requirement already satisfied: pandas in /Users/henrydoupe/anaconda3/lib/python3.6/site-packages (from taxcalc==0.20.1) (0.23.4)
Requirement already satisfied: python-dateutil>=2.5.0 in /Users/henrydoupe/.local/lib/python3.6/site-packages (from pandas->taxcalc==0.20.1) (2.6.1)
Requirement already satisfied: pytz>=2011k in /Users/henrydoupe/anaconda3/lib/python3.6/site-packages (from pandas->taxcalc==0.20.1) (2018.5)
Requirement already satisfied: six>=1.5 in /Users/henrydoupe/.local/lib/python3.6/site-packages (from python-dateutil>=2.5.0->pandas->taxcalc==0.20.1) (1.11.0)
pyasn1-modules 0.2.2 has requirement pyasn1<0.5.0,>=0.4.1, but you'll have pyasn1 0.3.7 which is incompatible.
Installing collected packages: taxcalc
  Found existing installation: taxcalc 0.8.4-2078-gc8014470
    Uninstalling taxcalc-0.8.4-2078-gc8014470:
      Successfully uninstalled taxcalc-0.8.4-2078-gc8014470
  Running setup.py develop for taxcalc
Successfully installed taxcalc
You are using pip version 18.0, however version 18.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
HDoupe-MacBook-Pro:Tax-Calculator henrydoupe$ python -c "import taxcalc; print(taxcalc.__version__)"
0.20.1
HDoupe-MacBook-Pro:Tax-Calculator henrydoupe$ git status
On branch v0.20.1
Untracked files:
  (use "git add <file>..." to include in what will be committed)

	taxcalc/extra.py

nothing added to commit but untracked files present (use "git add" to track)
HDoupe-MacBook-Pro:Tax-Calculator henrydoupe$ git add taxcalc/extra.py 
HDoupe-MacBook-Pro:Tax-Calculator henrydoupe$ python taxcalc/extra.py 
0.20.1-dirty
HDoupe-MacBook-Pro:Tax-Calculator henrydoupe$ git commit -m "extra file"
[v0.20.1 8d0b2946] extra file
 1 file changed, 1 insertion(+)
 create mode 100644 taxcalc/extra.py
HDoupe-MacBook-Pro:Tax-Calculator henrydoupe$ python taxcalc/extra.py 
0.20.1-1-g8d0b2946
HDoupe-MacBook-Pro:Tax-Calculator henrydoupe$ 

My hunch is that this is related to writing over the version set in the replace_version function. Basically, what it's making an edit to a file and saving it. I think this is making the version state "dirty" in the way described above.

Upgrade ananconda-client from =1.6 to =1.7 when 1.7 bug is fixed

Recent development work on Package-Builder suggests that using anaconda-client 1.7.* packages causes an error, at least in a Linux/Python37 environment. This pull request is a reminder to periodically check anaconda-client development to see when Package-Builder can begin using the newest versions of anaconda-client. When Package-Builder is upgraded to use the newest anaconda-client version, Package-Builder will be revised so that the anaconda upload option --force is replaced by --skip-existing so that an upload does not overwrite existing packages.

How to use pb --python option?

I could not find any documentation or example of how to use the pb release --python option.
Not using the option causes pb to build five packages (for different operating systems) for each of three Python versions: 2.7, 3.5, 3.6. That's fifteen packages in total.

I can see how to specify just one Python version: pb release --python 2.7 for example.

But what I haven't figured out is the syntax of specifying two Python versions.
For example, --python 2.7,3.6 didn't seem to work and neither did --python "2.7 3.6".

So, @jbcrail, can the README.md documentation be updated to provide examples of how to specify the pb release --python option?

After further experimentation, it seems as if the pb release --python option may have a bug that prevents it from working correctly.

@MattHJensen @jdebacker @jbcrail

Bug when using --clean option

I'm getting an error under Python 2.7 that I never got before.
There is no import statement for shutil in the cli/util.py file; is that the problem?

iMac2:policybrain-builder mrh$ python setup.py install
/Users/mrh/anaconda/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'package_dirs'
  warnings.warn(msg)
running install
running bdist_egg
running egg_info
writing requirements to policybrain_builder.egg-info/requires.txt
writing policybrain_builder.egg-info/PKG-INFO
writing top-level names to policybrain_builder.egg-info/top_level.txt
writing dependency_links to policybrain_builder.egg-info/dependency_links.txt
writing entry points to policybrain_builder.egg-info/entry_points.txt
reading manifest file 'policybrain_builder.egg-info/SOURCES.txt'
writing manifest file 'policybrain_builder.egg-info/SOURCES.txt'
installing library code to build/bdist.macosx-10.7-x86_64/egg
running install_lib
running build_py
creating build/bdist.macosx-10.7-x86_64/egg
creating build/bdist.macosx-10.7-x86_64/egg/policybrain_builder
copying build/lib/policybrain_builder/__init__.py -> build/bdist.macosx-10.7-x86_64/egg/policybrain_builder
creating build/bdist.macosx-10.7-x86_64/egg/policybrain_builder/cli
copying build/lib/policybrain_builder/cli/__init__.py -> build/bdist.macosx-10.7-x86_64/egg/policybrain_builder/cli
copying build/lib/policybrain_builder/cli/config.py -> build/bdist.macosx-10.7-x86_64/egg/policybrain_builder/cli
copying build/lib/policybrain_builder/cli/main.py -> build/bdist.macosx-10.7-x86_64/egg/policybrain_builder/cli
copying build/lib/policybrain_builder/cli/package.py -> build/bdist.macosx-10.7-x86_64/egg/policybrain_builder/cli
copying build/lib/policybrain_builder/cli/repository.py -> build/bdist.macosx-10.7-x86_64/egg/policybrain_builder/cli
copying build/lib/policybrain_builder/cli/utils.py -> build/bdist.macosx-10.7-x86_64/egg/policybrain_builder/cli
byte-compiling build/bdist.macosx-10.7-x86_64/egg/policybrain_builder/__init__.py to __init__.pyc
byte-compiling build/bdist.macosx-10.7-x86_64/egg/policybrain_builder/cli/__init__.py to __init__.pyc
byte-compiling build/bdist.macosx-10.7-x86_64/egg/policybrain_builder/cli/config.py to config.pyc
byte-compiling build/bdist.macosx-10.7-x86_64/egg/policybrain_builder/cli/main.py to main.pyc
byte-compiling build/bdist.macosx-10.7-x86_64/egg/policybrain_builder/cli/package.py to package.pyc
byte-compiling build/bdist.macosx-10.7-x86_64/egg/policybrain_builder/cli/repository.py to repository.pyc
byte-compiling build/bdist.macosx-10.7-x86_64/egg/policybrain_builder/cli/utils.py to utils.pyc
creating build/bdist.macosx-10.7-x86_64/egg/EGG-INFO
copying policybrain_builder.egg-info/PKG-INFO -> build/bdist.macosx-10.7-x86_64/egg/EGG-INFO
copying policybrain_builder.egg-info/SOURCES.txt -> build/bdist.macosx-10.7-x86_64/egg/EGG-INFO
copying policybrain_builder.egg-info/dependency_links.txt -> build/bdist.macosx-10.7-x86_64/egg/EGG-INFO
copying policybrain_builder.egg-info/entry_points.txt -> build/bdist.macosx-10.7-x86_64/egg/EGG-INFO
copying policybrain_builder.egg-info/not-zip-safe -> build/bdist.macosx-10.7-x86_64/egg/EGG-INFO
copying policybrain_builder.egg-info/requires.txt -> build/bdist.macosx-10.7-x86_64/egg/EGG-INFO
copying policybrain_builder.egg-info/top_level.txt -> build/bdist.macosx-10.7-x86_64/egg/EGG-INFO
creating 'dist/policybrain_builder-0.0.1-py2.7.egg' and adding 'build/bdist.macosx-10.7-x86_64/egg' to it
removing 'build/bdist.macosx-10.7-x86_64/egg' (and everything under it)
Processing policybrain_builder-0.0.1-py2.7.egg
creating /Users/mrh/anaconda/lib/python2.7/site-packages/policybrain_builder-0.0.1-py2.7.egg
Extracting policybrain_builder-0.0.1-py2.7.egg to /Users/mrh/anaconda/lib/python2.7/site-packages
Adding policybrain-builder 0.0.1 to easy-install.pth file
Installing pb script to /Users/mrh/anaconda/bin
Installing policybrain script to /Users/mrh/anaconda/bin

Installed /Users/mrh/anaconda/lib/python2.7/site-packages/policybrain_builder-0.0.1-py2.7.egg
Processing dependencies for policybrain-builder==0.0.1
Searching for click==6.7
Best match: click 6.7
Adding click 6.7 to easy-install.pth file

Using /Users/mrh/anaconda/lib/python2.7/site-packages
Finished processing dependencies for policybrain-builder==0.0.1


iMac2:policybrain-builder mrh$ ./taxcalc-package-cli.sh 0.10.1
STARTING : Fri Sep  8 06:37:06 EDT 2017
INFO: saved previous conda config: always_yes
INFO: changed conda config: always_yes True
INFO: removing directory: /tmp
INFO: restored previous conda config: always_yes
Traceback (most recent call last):
  File "/Users/mrh/anaconda/lib/python2.7/site-packages/policybrain_builder-0.0.1-py2.7.egg/policybrain_builder/cli/main.py", line 19, in start
    cli(obj={})
  File "/Users/mrh/anaconda/lib/python2.7/site-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/Users/mrh/anaconda/lib/python2.7/site-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/Users/mrh/anaconda/lib/python2.7/site-packages/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/mrh/anaconda/lib/python2.7/site-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/mrh/anaconda/lib/python2.7/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/Users/mrh/anaconda/lib/python2.7/site-packages/click/decorators.py", line 17, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/Users/mrh/anaconda/lib/python2.7/site-packages/policybrain_builder-0.0.1-py2.7.egg/policybrain_builder/cli/main.py", line 138, in release
    u.ensure_directory_exists(workdir, clean)
  File "/Users/mrh/anaconda/lib/python2.7/site-packages/policybrain_builder-0.0.1-py2.7.egg/policybrain_builder/cli/utils.py", line 82, in ensure_directory_exists
    shutil.rmtree(path)
NameError: global name 'shutil' is not defined

FINISHED : Fri Sep  8 06:37:09 EDT 2017
iMac2:policybrain-builder mrh$ 

Problems with builder.py

@hdoupe, Now that builder.py has been merged into the master branch, it needs to be fixed in several ways.

First, it doesn't comply with what used to be called the PEP8 coding style, which is automatically checked with every Tax-Calculator check-in on GitHub. Here are the formatting problems:

policybrain-builder$ pycodestyle builder.py 
builder.py:36:1: E302 expected 2 blank lines, found 1
builder.py:51:80: E501 line too long (81 > 79 characters)
builder.py:74:80: E501 line too long (124 > 79 characters)
builder.py:75:80: E501 line too long (114 > 79 characters)
builder.py:81:80: E501 line too long (136 > 79 characters)
builder.py:105:5: E128 continuation line under-indented for visual indent
builder.py:106:5: E128 continuation line under-indented for visual indent
builder.py:107:5: E122 continuation line missing indentation or outdented
builder.py:108:5: E122 continuation line missing indentation or outdented
builder.py:109:5: E122 continuation line missing indentation or outdented
builder.py:110:5: E122 continuation line missing indentation or outdented
builder.py:111:5: E122 continuation line missing indentation or outdented
builder.py:114:5: E122 continuation line missing indentation or outdented
builder.py:117:5: E122 continuation line missing indentation or outdented
builder.py:119:1: E901 TokenError: EOF in multi-line statement

Just because we don't have GitHub configured to do these style checks in the policybrain-builder repo doesn't mean that we shouldn't strive in that repo to have programs that meet minimal coding-style standards.

Second, when I run the builder.py code through pylint, I get this error:

policybrain-builder$ pylint builder.py 
Using config file /Users/mrh/.pylintrc
************* Module builder
builder.py:74: [E0001(syntax-error), ] invalid syntax (<string>, line 74)

This is the same error as my Python 2.7 interpreter stopped on. I know most of the OSPC developers don't think much of pylint, but in this case running the code through pylint found a syntax error that prevents the code from running. That's a pretty easy way to check the code before actually trying to run the code in a full-blown test.

CLI upload ignores --python option

@jbcrail,
Using testing release 0.1.5 (containing the HEAD of Tax-Calculator master), I can execute this command:

pb release --python "2.7" taxcalc=0.1.5

and it runs to completion. As I expected after PR#55, only five packages were build (one each for the five platforms and all for Python 2.7). So far so good.

But then when the uploads started, pb uploaded all fifteen packages (not just the five for Python 2.7). I'm not sure where the other ten came from but this upload behavior is not compatible with the build behavior. When looking at the packages.py file, the build method used the py_versions argument while the upload method does not have py_versions as an argument.

Can the same py_versions logic as is in build be added to upload?

Or did I do something wrong? Maybe there is a way to upload only the five Python 2.7 packages that I'm not aware of.

Build issue regarding taxcalc version bump causing other version bumps

Preamble:

  • We used to have a custom build set up for each of Tax-Calculator, OG-USA, B-Tax
  • We made this policybrain-builder repo to have a build script for all packages
  • We recently fixed the build_release.sh script here to make sure that OG-USA and B-Tax packages, when built with a new git tag, are built with the latest taxcalc as a dependency.
  • build_release.sh may be used to build 1 to 3 of these repos by using the env vars SKIP_BTAX, SKIP_OGUSA
    Problem:
  • When Tax-Calculator is built as version like 5.0.0, then that means B-Tax and/or OG-USA also need a new version tag. The reason for this new version tag for B-Tax and OG-USA is that the existing version tags for them will be tied to a prior taxcalc, such as 4.9.9 in the example.

Let's use this issue as reminder to bump versions of B-Tax, OG-USA and also reminder that Tax-Calculator versions are pinned in B-Tax, OG-USA

Problem building package for CCC release 1.0.0

I've had some issues building the CCC package using package builder.

I'm running version 0.22.0:

(ccc-dev) A02655JDEBACKER:ccc jason.debacker$ pbrelease --version
Package-Builder 0.22.0

Please see the output below for what I see when trying to build the package. I'm having trouble figuring out what the issue is.

(ccc-dev) A02655JDEBACKER:ccc jason.debacker$ pbrelease  Cost-of-Capital-Calculator  ccc  1.0.0
: Package-Builder will build model packages for:
:   repository_name = Cost-of-Capital-Calculator
:   package_name = ccc
:   model_version = 1.0.0
:   python_versions = ['3.7', '3.6']
: Package-Builder will upload model packages to:
:   Anaconda channel = pslmodels
:   using token in file = /Users/jason.debacker/.pslmodels_anaconda_token
: Package-Builder is starting at Fri May 10 10:29:55 2019
: Package-Builder is cloning repository code for 1.0.0
Cloning into 'Cost-of-Capital-Calculator'...
remote: Enumerating objects: 135, done.
remote: Counting objects: 100% (135/135), done.
remote: Compressing objects: 100% (126/126), done.
remote: Total 135 (delta 7), reused 65 (delta 4), pack-reused 0
Receiving objects: 100% (135/135), 31.97 MiB | 11.62 MiB/s, done.
Resolving deltas: 100% (7/7), done.
Note: checking out '2e5289aee64085bb6a2ddaea46791ebf6f3b3f93'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

: Package-Builder is setting version
: Package-Builder is building package for Python 3.7
No numpy version specified in conda_build_config.yaml.  Falling back to default numpy value of 1.11
WARNING:conda_build.metadata:No numpy version specified in conda_build_config.yaml.  Falling back to default numpy value of 1.11
INFO:conda_build.variants:Adding in variants from internal_defaults
INFO:conda_build.variants:Adding in variants from config.variant
INFO:conda_build.metadata:Attempting to finalize metadata for ccc
WARNING: symlink_conda() is deprecated.
zip_safe flag not set; analyzing archive contents...
ccc.__pycache__.data.cpython-37: module references __file__
ccc.__pycache__.parameters.cpython-37: module references __file__
ccc.__pycache__.utils.cpython-37: module references __file__
INFO:conda_build.build:Packaging ccc
INFO:conda_build.build:Packaging ccc-1.0.0-py37_0
/var/folders/b0/wwxd0byd1hx0y_rqrnqhmc0m0000gn/T/tmpjf2z6rsu/ccc-1.0.0-py37_0.tar.bz2: C1115 Found invalid license "None" in info/index.json
INFO:conda_build.variants:Adding in variants from /var/folders/b0/wwxd0byd1hx0y_rqrnqhmc0m0000gn/T/tmpvjaqrlow/info/recipe/conda_build_config.yaml
WARNING: symlink_conda() is deprecated.
Traceback (most recent call last):
  File "/anaconda3/conda-bld/ccc_1557498600857/test_tmp/run_test.py", line 2, in <module>
    import ccc
ModuleNotFoundError: No module named 'ccc'
Tests failed for ccc-1.0.0-py37_0.tar.bz2 - moving package to /anaconda3/conda-bld/broken
WARNING:conda_build.build:Tests failed for ccc-1.0.0-py37_0.tar.bz2 - moving package to /anaconda3/conda-bld/broken
TESTS FAILED: ccc-1.0.0-py37_0.tar.bz2
Traceback (most recent call last):
  File "/anaconda3/lib/python3.7/site-packages/pkgbld-0.22.0-py3.7.egg/pkgbld/utils.py", line 20, in os_call
  File "/anaconda3/lib/python3.7/subprocess.py", line 487, in run
    output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command 'conda build --python 3.7 --old-build-string --channel pslmodels --override-channels --no-anaconda-upload --output-folder pkgbld_output conda.recipe' returned non-zero exit status 1.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/anaconda3/bin/pbrelease", line 11, in <module>
    sys.exit(main())
  File "/anaconda3/lib/python3.7/site-packages/pkgbld-0.22.0-py3.7.egg/pkgbld/cli.py", line 103, in main
  File "/anaconda3/lib/python3.7/site-packages/pkgbld-0.22.0-py3.7.egg/pkgbld/release.py", line 189, in release
  File "/anaconda3/lib/python3.7/site-packages/pkgbld-0.22.0-py3.7.egg/pkgbld/utils.py", line 25, in os_call
OSError: non-zero return code 1 generated by command:
conda build --python 3.7 --old-build-string --channel pslmodels --override-channels --no-anaconda-upload --output-folder pkgbld_output conda.recipe
>output: b"Adding in variants from internal_defaults\nAdding in variants from config.variant\nAttempting to finalize metadata for ccc\nCollecting package metadata: ...working... done\nSolving environment: ...working... done\nCollecting package metadata: ...working... done\nSolving environment: ...working... done\nBUILD START: ['ccc-1.0.0-py37_0.tar.bz2']\nCollecting package metadata: ...working... done\nSolving environment: ...working... done\nCollecting package metadata: ...working... done\nSolving environment: ...working... done\n\n## Package Plan ##\n\n  environment location: /anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold\n\n\nThe following NEW packages will be INSTALLED:\n\n    asn1crypto:      0.24.0-py37_1003      conda-forge\n    bokeh:           1.1.0-py37_0          conda-forge\n    bzip2:           1.0.6-h1de35cc_1002   conda-forge\n    ca-certificates: 2019.3.9-hecc5488_0   conda-forge\n    certifi:         2019.3.9-py37_0       conda-forge\n    cffi:            1.12.3-py37hccf1714_0 conda-forge\n    chardet:         3.0.4-py37_1003       conda-forge\n    cryptography:    2.6.1-py37h212c5bf_0  conda-forge\n    freetype:        2.10.0-h24853df_0     conda-forge\n    idna:            2.8-py37_1000         conda-forge\n    jinja2:          2.10.1-py_0           conda-forge\n    jpeg:            9c-h1de35cc_1001      conda-forge\n    libblas:         3.8.0-8_openblas      conda-forge\n    libcblas:        3.8.0-8_openblas      conda-forge\n    libcxx:          8.0.0-2               conda-forge\n    libcxxabi:       8.0.0-2               conda-forge\n    libffi:          3.2.1-h6de7cb9_1006   conda-forge\n    libgfortran:     3.0.1-0               conda-forge\n    liblapack:       3.8.0-8_openblas      conda-forge\n    libpng:          1.6.37-h2573ce8_0     conda-forge\n    libtiff:         4.0.10-h344961e_1002  conda-forge\n    llvmlite:        0.28.0-py37hf292337_0 conda-forge\n    markupsafe:      1.1.1-py37h1de35cc_0  conda-forge\n    marshmallow:     3.0.0rc5-py_0         conda-forge\n    ncurses:         6.1-h0a44026_1002     conda-forge\n    numba:           0.43.1-py37h051e8ed_0 conda-forge\n    numpy:           1.16.3-py37hdf140aa_0 conda-forge\n    olefile:         0.46-py_0             conda-forge\n    openblas:        0.3.6-hd44dcd8_1      conda-forge\n    openssl:         1.1.1b-h01d97ff_2     conda-forge\n    packaging:       19.0-py_0             conda-forge\n    pandas:          0.24.2-py37h0a44026_0 conda-forge\n    paramtools:      0.4.1-py37_0          pslmodels  \n    pillow:          6.0.0-py37h7095ceb_0  conda-forge\n    pip:             19.1-py37_0           conda-forge\n    pycparser:       2.19-py37_1           conda-forge\n    pyopenssl:       19.0.0-py37_0         conda-forge\n    pyparsing:       2.4.0-py_0            conda-forge\n    pysocks:         1.6.8-py37_1002       conda-forge\n    python:          3.7.3-h0d93f26_0      conda-forge\n    python-dateutil: 2.8.0-py_0            conda-forge\n    pytz:            2019.1-py_0           conda-forge\n    pyyaml:          5.1-py37h1de35cc_0    conda-forge\n    readline:        7.0-hcfe32e1_1001     conda-forge\n    requests:        2.21.0-py37_1000      conda-forge\n    scipy:           1.2.1-py37hbd7caa9_1  conda-forge\n    setuptools:      41.0.1-py37_0         conda-forge\n    six:             1.12.0-py37_1000      conda-forge\n    sqlite:          3.26.0-h1765d9f_1001  conda-forge\n    taxcalc:         2.1.0-py37_0          pslmodels  \n    tk:              8.6.9-ha441bb4_1001   conda-forge\n    tornado:         6.0.2-py37h01d97ff_0  conda-forge\n    urllib3:         1.24.2-py37_0         conda-forge\n    wheel:           0.33.2-py37_0         conda-forge\n    xlrd:            1.2.0-py_0            conda-forge\n    xz:              5.2.4-h1de35cc_1001   conda-forge\n    yaml:            0.1.7-h1de35cc_1001   conda-forge\n    zlib:            1.2.11-h1de35cc_1004  conda-forge\n    zstd:            1.3.3-1               conda-forge\n\nPreparing transaction: ...working... done\nVerifying transaction: ...working... done\nExecuting transaction: ...working... done\nINFO: activate-gfortran_osx-64.sh made the following environmental changes:\n+DEBUG_FFLAGS=-march=nocona -mtune=core2 -ftree-vectorize -fPIC -fstack-protector -O2 -pipe -I/anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/include -fdebug-prefix-map=/anaconda3/conda-bld/ccc_1557498600857/work=/usr/local/src/conda/ccc-1.0.0 -fdebug-prefix-map=/anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold=/usr/local/src/conda-prefix -march=nocona -mtune=core2 -ftree-vectorize -fPIC -fstack-protector -O2 -pipe -Og -g -Wall -Wextra -fcheck=all -fbacktrace -fimplicit-none -fvar-tracking-assignments\n+DEBUG_FORTRANFLAGS=-march=nocona -mtune=core2 -ftree-vectorize -fPIC -fstack-protector -O2 -pipe -I/anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/include -fdebug-prefix-map=/anaconda3/conda-bld/ccc_1557498600857/work=/usr/local/src/conda/ccc-1.0.0 -fdebug-prefix-map=/anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold=/usr/local/src/conda-prefix -march=nocona -mtune=core2 -ftree-vectorize -fPIC -fstack-protector -O2 -pipe -Og -g -Wall -Wextra -fcheck=all -fbacktrace -fimplicit-none -fvar-tracking-assignments\n+F77=/anaconda3/bin/x86_64-apple-darwin13.4.0-gfortran\n+F90=/anaconda3/bin/x86_64-apple-darwin13.4.0-gfortran\n+F95=/anaconda3/bin/x86_64-apple-darwin13.4.0-gfortran\n+FC=/anaconda3/bin/x86_64-apple-darwin13.4.0-gfortran\n+FFLAGS=-march=nocona -mtune=core2 -ftree-vectorize -fPIC -fstack-protector -O2 -pipe -I/anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/include -fdebug-prefix-map=/anaconda3/conda-bld/ccc_1557498600857/work=/usr/local/src/conda/ccc-1.0.0 -fdebug-prefix-map=/anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold=/usr/local/src/conda-prefix\n+FORTRANFLAGS=-march=nocona -mtune=core2 -ftree-vectorize -fPIC -fstack-protector -O2 -pipe -I/anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/include -fdebug-prefix-map=/anaconda3/conda-bld/ccc_1557498600857/work=/usr/local/src/conda/ccc-1.0.0 -fdebug-prefix-map=/anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold=/usr/local/src/conda-prefix\n+GFORTRAN=/anaconda3/bin/x86_64-apple-darwin13.4.0-gfortran\n+HOST=x86_64-apple-darwin13.4.0\nINFO: activate_clang_osx-64.sh made the following environmental changes:\n+AR=/anaconda3/bin/x86_64-apple-darwin13.4.0-ar\n+AS=/anaconda3/bin/x86_64-apple-darwin13.4.0-as\n+CC=x86_64-apple-darwin13.4.0-clang\n+CFLAGS=-march=core2 -mtune=haswell -mssse3 -ftree-vectorize -fPIC -fPIE -fstack-protector-strong -O2 -pipe -I/anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/include -fdebug-prefix-map=${SRC_DIR}=/usr/local/src/conda/${PKG_NAME}-${PKG_VERSION} -fdebug-prefix-map=${PREFIX}=/usr/local/src/conda-prefix\n+CHECKSYMS=/anaconda3/bin/x86_64-apple-darwin13.4.0-checksyms\n+CLANG=/anaconda3/bin/x86_64-apple-darwin13.4.0-clang\n+CODESIGN_ALLOCATE=/anaconda3/bin/x86_64-apple-darwin13.4.0-codesign_allocate\n+CONDA_BUILD_SYSROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk\n+CPPFLAGS=-D_FORTIFY_SOURCE=2 -mmacosx-version-min=10.9\n+DEBUG_CFLAGS=-march=core2 -mtune=haswell -mssse3 -ftree-vectorize -fPIC -fPIE -fstack-protector-strong -O2 -pipe -Og -g -Wall -Wextra -I/anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/include -fdebug-prefix-map=${SRC_DIR}=/usr/local/src/conda/${PKG_NAME}-${PKG_VERSION} -fdebug-prefix-map=${PREFIX}=/usr/local/src/conda-prefix\n+INDR=/anaconda3/bin/x86_64-apple-darwin13.4.0-indr\n+INSTALL_NAME_TOOL=/anaconda3/bin/x86_64-apple-darwin13.4.0-install_name_tool\n+LD=/anaconda3/bin/x86_64-apple-darwin13.4.0-ld\n+LDFLAGS=-Wl,-pie -Wl,-headerpad_max_install_names -Wl,-dead_strip_dylibs -Wl,-rpath,/anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/lib -L/anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/lib\n+LDFLAGS_LD=-pie -headerpad_max_install_names -dead_strip_dylibs -rpath /anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/lib -L/anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/lib\n+LIBTOOL=/anaconda3/bin/x86_64-apple-darwin13.4.0-libtool\n+LIPO=/anaconda3/bin/x86_64-apple-darwin13.4.0-lipo\n+NM=/anaconda3/bin/x86_64-apple-darwin13.4.0-nm\n+NMEDIT=/anaconda3/bin/x86_64-apple-darwin13.4.0-nmedit\n+OTOOL=/anaconda3/bin/x86_64-apple-darwin13.4.0-otool\n+PAGESTUFF=/anaconda3/bin/x86_64-apple-darwin13.4.0-pagestuff\n+RANLIB=/anaconda3/bin/x86_64-apple-darwin13.4.0-ranlib\n+REDO_PREBINDING=/anaconda3/bin/x86_64-apple-darwin13.4.0-redo_prebinding\n+SEGEDIT=/anaconda3/bin/x86_64-apple-darwin13.4.0-segedit\n+SEG_ADDR_TABLE=/anaconda3/bin/x86_64-apple-darwin13.4.0-seg_addr_table\n+SEG_HACK=/anaconda3/bin/x86_64-apple-darwin13.4.0-seg_hack\n+SIZE=/anaconda3/bin/x86_64-apple-darwin13.4.0-size\n+STRINGS=/anaconda3/bin/x86_64-apple-darwin13.4.0-strings\n+STRIP=/anaconda3/bin/x86_64-apple-darwin13.4.0-strip\n+_CONDA_PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_x86_64_apple_darwin13_4_0\nINFO: activate_clangxx_osx-64.sh made the following environmental changes:\n+CLANGXX=/anaconda3/bin/x86_64-apple-darwin13.4.0-clang++\n+CXX=x86_64-apple-darwin13.4.0-clang++\n+CXXFLAGS=-march=core2 -mtune=haswell -mssse3 -ftree-vectorize -fPIC -fPIE -fstack-protector-strong -O2 -pipe -stdlib=libc++ -fvisibility-inlines-hidden -std=c++14 -fmessage-length=0 -I/anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/include -fdebug-prefix-map=${SRC_DIR}=/usr/local/src/conda/${PKG_NAME}-${PKG_VERSION} -fdebug-prefix-map=${PREFIX}=/usr/local/src/conda-prefix\n+DEBUG_CXXFLAGS=-march=core2 -mtune=haswell -mssse3 -ftree-vectorize -fPIC -fPIE -fstack-protector-strong -O2 -pipe -stdlib=libc++ -fvisibility-inlines-hidden -std=c++14 -fmessage-length=0 -Og -g -Wall -Wextra -I/anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/include -fdebug-prefix-map=${SRC_DIR}=/usr/local/src/conda/${PKG_NAME}-${PKG_VERSION} -fdebug-prefix-map=${PREFIX}=/usr/local/src/conda-prefix\n~/temporary_pkgbld_working_dir/Cost-of-Capital-Calculator /anaconda3/conda-bld/ccc_1557498600857/work\nrunning install\nrunning bdist_egg\nrunning egg_info\ncreating ccc.egg-info\nwriting ccc.egg-info/PKG-INFO\nwriting dependency_links to ccc.egg-info/dependency_links.txt\nwriting requirements to ccc.egg-info/requires.txt\nwriting top-level names to ccc.egg-info/top_level.txt\nwriting manifest file 'ccc.egg-info/SOURCES.txt'\nreading manifest file 'ccc.egg-info/SOURCES.txt'\nreading manifest template 'MANIFEST.in'\nwriting manifest file 'ccc.egg-info/SOURCES.txt'\ninstalling library code to build/bdist.macosx-10.9-x86_64/egg\nrunning install_lib\nrunning build_py\ncreating build\ncreating build/lib\ncreating build/lib/ccc\ncopying ccc/get_taxcalc_rates.py -> build/lib/ccc\ncopying ccc/constants.py -> build/lib/ccc\ncopying ccc/__init__.py -> build/lib/ccc\ncopying ccc/calcfunctions.py -> build/lib/ccc\ncopying ccc/utils.py -> build/lib/ccc\ncopying ccc/calculator.py -> build/lib/ccc\ncopying ccc/styles.py -> build/lib/ccc\ncopying ccc/controls_callback_script.py -> build/lib/ccc\ncopying ccc/parameters.py -> build/lib/ccc\ncopying ccc/data.py -> build/lib/ccc\ncopying ccc/ccc_asset_data.csv -> build/lib/ccc\ncopying ccc/default_parameters.json -> build/lib/ccc\ncopying ccc/records_variables.json -> build/lib/ccc\ncreating build/bdist.macosx-10.9-x86_64\ncreating build/bdist.macosx-10.9-x86_64/egg\ncreating build/bdist.macosx-10.9-x86_64/egg/ccc\ncopying build/lib/ccc/default_parameters.json -> build/bdist.macosx-10.9-x86_64/egg/ccc\ncopying build/lib/ccc/records_variables.json -> build/bdist.macosx-10.9-x86_64/egg/ccc\ncopying build/lib/ccc/get_taxcalc_rates.py -> build/bdist.macosx-10.9-x86_64/egg/ccc\ncopying build/lib/ccc/constants.py -> build/bdist.macosx-10.9-x86_64/egg/ccc\ncopying build/lib/ccc/__init__.py -> build/bdist.macosx-10.9-x86_64/egg/ccc\ncopying build/lib/ccc/calcfunctions.py -> build/bdist.macosx-10.9-x86_64/egg/ccc\ncopying build/lib/ccc/utils.py -> build/bdist.macosx-10.9-x86_64/egg/ccc\ncopying build/lib/ccc/calculator.py -> build/bdist.macosx-10.9-x86_64/egg/ccc\ncopying build/lib/ccc/styles.py -> build/bdist.macosx-10.9-x86_64/egg/ccc\ncopying build/lib/ccc/controls_callback_script.py -> build/bdist.macosx-10.9-x86_64/egg/ccc\ncopying build/lib/ccc/parameters.py -> build/bdist.macosx-10.9-x86_64/egg/ccc\ncopying build/lib/ccc/ccc_asset_data.csv -> build/bdist.macosx-10.9-x86_64/egg/ccc\ncopying build/lib/ccc/data.py -> build/bdist.macosx-10.9-x86_64/egg/ccc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ccc/get_taxcalc_rates.py to get_taxcalc_rates.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ccc/constants.py to constants.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ccc/__init__.py to __init__.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ccc/calcfunctions.py to calcfunctions.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ccc/utils.py to utils.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ccc/calculator.py to calculator.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ccc/styles.py to styles.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ccc/controls_callback_script.py to controls_callback_script.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ccc/parameters.py to parameters.cpython-37.pyc\nbyte-compiling build/bdist.macosx-10.9-x86_64/egg/ccc/data.py to data.cpython-37.pyc\ncreating build/bdist.macosx-10.9-x86_64/egg/EGG-INFO\ncopying ccc.egg-info/PKG-INFO -> build/bdist.macosx-10.9-x86_64/egg/EGG-INFO\ncopying ccc.egg-info/SOURCES.txt -> build/bdist.macosx-10.9-x86_64/egg/EGG-INFO\ncopying ccc.egg-info/dependency_links.txt -> build/bdist.macosx-10.9-x86_64/egg/EGG-INFO\ncopying ccc.egg-info/requires.txt -> build/bdist.macosx-10.9-x86_64/egg/EGG-INFO\ncopying ccc.egg-info/top_level.txt -> build/bdist.macosx-10.9-x86_64/egg/EGG-INFO\ncreating dist\ncreating 'dist/ccc-1.0.0-py3.7.egg' and adding 'build/bdist.macosx-10.9-x86_64/egg' to it\nremoving 'build/bdist.macosx-10.9-x86_64/egg' (and everything under it)\nProcessing ccc-1.0.0-py3.7.egg\ncreating /anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/lib/python3.7/site-packages/ccc-1.0.0-py3.7.egg\nExtracting ccc-1.0.0-py3.7.egg to /anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/lib/python3.7/site-packages\nAdding ccc 1.0.0 to easy-install.pth file\n\nInstalled /anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/lib/python3.7/site-packages/ccc-1.0.0-py3.7.egg\nProcessing dependencies for ccc==1.0.0\nSearching for xlrd==1.2.0\nBest match: xlrd 1.2.0\nAdding xlrd 1.2.0 to easy-install.pth file\n\nUsing /anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/lib/python3.7/site-packages\nSearching for scipy==1.2.1\nBest match: scipy 1.2.1\nAdding scipy 1.2.1 to easy-install.pth file\n\nUsing /anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/lib/python3.7/site-packages\nSearching for taxcalc==2.1.0\nBest match: taxcalc 2.1.0\nAdding taxcalc 2.1.0 to easy-install.pth file\n\nUsing /anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/lib/python3.7/site-packages\nSearching for pandas==0.24.2\nBest match: pandas 0.24.2\nAdding pandas 0.24.2 to easy-install.pth file\n\nUsing /anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/lib/python3.7/site-packages\nSearching for numpy==1.16.3\nBest match: numpy 1.16.3\nAdding numpy 1.16.3 to easy-install.pth file\nInstalling f2py script to /anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/bin\nInstalling f2py3 script to /anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/bin\nInstalling f2py3.7 script to /anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/bin\n\nUsing /anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/lib/python3.7/site-packages\nSearching for numba==0.43.1\nBest match: numba 0.43.1\nAdding numba 0.43.1 to easy-install.pth file\n\nUsing /anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/lib/python3.7/site-packages\nSearching for bokeh==1.1.0\nBest match: bokeh 1.1.0\nAdding bokeh 1.1.0 to easy-install.pth file\nInstalling bokeh script to /anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/bin\n\nUsing /anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/lib/python3.7/site-packages\nSearching for python-dateutil==2.8.0\nBest match: python-dateutil 2.8.0\nAdding python-dateutil 2.8.0 to easy-install.pth file\n\nUsing /anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/lib/python3.7/site-packages\nSearching for pytz==2019.1\nBest match: pytz 2019.1\nAdding pytz 2019.1 to easy-install.pth file\n\nUsing /anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/lib/python3.7/site-packages\nSearching for llvmlite==0.28.0\nBest match: llvmlite 0.28.0\nAdding llvmlite 0.28.0 to easy-install.pth file\n\nUsing /anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/lib/python3.7/site-packages\nSearching for Pillow==6.0.0\nBest match: Pillow 6.0.0\nAdding Pillow 6.0.0 to easy-install.pth file\n\nUsing /anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/lib/python3.7/site-packages\nSearching for PyYAML==5.1\nBest match: PyYAML 5.1\nAdding PyYAML 5.1 to easy-install.pth file\n\nUsing /anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/lib/python3.7/site-packages\nSearching for tornado==6.0.2\nBest match: tornado 6.0.2\nAdding tornado 6.0.2 to easy-install.pth file\n\nUsing /anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/lib/python3.7/site-packages\nSearching for six==1.12.0\nBest match: six 1.12.0\nAdding six 1.12.0 to easy-install.pth file\n\nUsing /anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/lib/python3.7/site-packages\nSearching for Jinja2==2.10.1\nBest match: Jinja2 2.10.1\nAdding Jinja2 2.10.1 to easy-install.pth file\n\nUsing /anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/lib/python3.7/site-packages\nSearching for packaging==19.0\nBest match: packaging 19.0\nAdding packaging 19.0 to easy-install.pth file\n\nUsing /anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/lib/python3.7/site-packages\nSearching for MarkupSafe==1.1.1\nBest match: MarkupSafe 1.1.1\nAdding MarkupSafe 1.1.1 to easy-install.pth file\n\nUsing /anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/lib/python3.7/site-packages\nSearching for pyparsing==2.4.0\nBest match: pyparsing 2.4.0\nAdding pyparsing 2.4.0 to easy-install.pth file\n\nUsing /anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/lib/python3.7/site-packages\nFinished processing dependencies for ccc==1.0.0\n/anaconda3/conda-bld/ccc_1557498600857/work\nCopying /Users/jason.debacker/temporary_pkgbld_working_dir/Cost-of-Capital-Calculator to /anaconda3/conda-bld/ccc_1557498600857/work\nsource tree in: /anaconda3/conda-bld/ccc_1557498600857/work\n\nResource usage statistics from building ccc:\n   Process count: 2\n   CPU time: Sys=0:00:00.4, User=0:00:01.0\n   Memory: 68.0M\n   Disk usage: 196.1K\n   Time elapsed: 0:00:06.1\n\nPackaging ccc\nPackaging ccc-1.0.0-py37_0\ncompiling .pyc files...\nfound egg dir: /anaconda3/conda-bld/ccc_1557498600857/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/lib/python3.7/site-packages/ccc-1.0.0-py3.7.egg\nnumber of files: 29\nFixing permissions\nPackage verification results:\n-----------------------------\nTEST START: pkgbld_output/osx-64/ccc-1.0.0-py37_0.tar.bz2\nAdding in variants from /var/folders/b0/wwxd0byd1hx0y_rqrnqhmc0m0000gn/T/tmpvjaqrlow/info/recipe/conda_build_config.yaml\nRenaming work directory,  /anaconda3/conda-bld/ccc_1557498600857/work  to  /anaconda3/conda-bld/ccc_1557498600857/work_moved_ccc-1.0.0-py37_0_osx-64\nCollecting package metadata: ...working... done\nSolving environment: ...working... done\n\n## Package Plan ##\n\n  environment location: /anaconda3/conda-bld/ccc_1557498600857/_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeh\n\n\nThe following NEW packages will be INSTALLED:\n\n    asn1crypto:      0.24.0-py36_1003      conda-forge                                                                                       \n    bokeh:           1.1.0-py36_0          conda-forge                                                                                       \n    ca-certificates: 2019.3.9-hecc5488_0   conda-forge                                                                                       \n    ccc:             1.0.0-py37_0          file:///Users/jason.debacker/temporary_pkgbld_working_dir/Cost-of-Capital-Calculator/pkgbld_output\n    certifi:         2019.3.9-py36_0       conda-forge                                                                                       \n    cffi:            1.12.3-py36hccf1714_0 conda-forge                                                                                       \n    chardet:         3.0.4-py36_1003       conda-forge                                                                                       \n    cryptography:    2.6.1-py36h212c5bf_0  conda-forge                                                                                       \n    freetype:        2.10.0-h24853df_0     conda-forge                                                                                       \n    idna:            2.8-py36_1000         conda-forge                                                                                       \n    jinja2:          2.10.1-py_0           conda-forge                                                                                       \n    jpeg:            9c-h1de35cc_1001      conda-forge                                                                                       \n    libblas:         3.8.0-8_openblas      conda-forge                                                                                       \n    libcblas:        3.8.0-8_openblas      conda-forge                                                                                       \n    libcxx:          8.0.0-2               conda-forge                                                                                       \n    libcxxabi:       8.0.0-2               conda-forge                                                                                       \n    libffi:          3.2.1-h6de7cb9_1006   conda-forge                                                                                       \n    libgfortran:     3.0.1-0               conda-forge                                                                                       \n    liblapack:       3.8.0-8_openblas      conda-forge                                                                                       \n    libpng:          1.6.37-h2573ce8_0     conda-forge                                                                                       \n    libtiff:         4.0.10-h79f4b77_1001  conda-forge                                                                                       \n    llvmlite:        0.28.0-py36hf292337_0 conda-forge                                                                                       \n    markupsafe:      1.1.1-py36h1de35cc_0  conda-forge                                                                                       \n    marshmallow:     3.0.0rc5-py_0         conda-forge                                                                                       \n    ncurses:         6.1-h0a44026_1002     conda-forge                                                                                       \n    numba:           0.43.1-py36h051e8ed_0 conda-forge                                                                                       \n    numpy:           1.16.3-py36hdf140aa_0 conda-forge                                                                                       \n    olefile:         0.46-py_0             conda-forge                                                                                       \n    openblas:        0.3.6-hd44dcd8_1      conda-forge                                                                                       \n    openssl:         1.1.1b-h01d97ff_2     conda-forge                                                                                       \n    packaging:       19.0-py_0             conda-forge                                                                                       \n    pandas:          0.24.2-py36h0a44026_0 conda-forge                                                                                       \n    paramtools:      0.5.4-py_0            conda-forge                                                                                       \n    pillow:          6.0.0-py36h7095ceb_0  conda-forge                                                                                       \n    pip:             19.1-py36_0           conda-forge                                                                                       \n    pycparser:       2.19-py36_1           conda-forge                                                                                       \n    pyopenssl:       19.0.0-py36_0         conda-forge                                                                                       \n    pyparsing:       2.4.0-py_0            conda-forge                                                                                       \n    pysocks:         1.6.8-py36_1002       conda-forge                                                                                       \n    python:          3.6.7-h8dc6b48_1004   conda-forge                                                                                       \n    python-dateutil: 2.8.0-py_0            conda-forge                                                                                       \n    pytz:            2019.1-py_0           conda-forge                                                                                       \n    pyyaml:          5.1-py36h1de35cc_0    conda-forge                                                                                       \n    readline:        7.0-hcfe32e1_1001     conda-forge                                                                                       \n    requests:        2.21.0-py36_1000      conda-forge                                                                                       \n    scipy:           1.2.1-py36hbd7caa9_1  conda-forge                                                                                       \n    setuptools:      41.0.1-py36_0         conda-forge                                                                                       \n    six:             1.12.0-py36_1000      conda-forge                                                                                       \n    sqlite:          3.26.0-h1765d9f_1001  conda-forge                                                                                       \n    taxcalc:         2.1.0-py36_0          pslmodels                                                                                         \n    tk:              8.6.9-ha441bb4_1001   conda-forge                                                                                       \n    tornado:         6.0.2-py36h01d97ff_0  conda-forge                                                                                       \n    urllib3:         1.24.2-py36_0         conda-forge                                                                                       \n    wheel:           0.33.2-py36_0         conda-forge                                                                                       \n    xlrd:            1.2.0-py_0            conda-forge                                                                                       \n    xz:              5.2.4-h1de35cc_1001   conda-forge                                                                                       \n    yaml:            0.1.7-h1de35cc_1001   conda-forge                                                                                       \n    zlib:            1.2.11-h1de35cc_1004  conda-forge                                                                                       \n\nPreparing transaction: ...working... done\nVerifying transaction: ...working... done\nExecuting transaction: ...working... done\nimport: 'ccc'\n"

Need to drop build for Python 3.4 ?

Tax-Calculator is now requiring the just released version of pandas 0.20.1 in the testing/development environment via the changes in the environment.yml file in Tax-Calculator pull request #1361.

There is no conda package for pandas 0.20.1 on Python 3.4, so we need to make a decision.
Here are the two choices that come to mind:

  1. Discontinue all the Python 3.4 builds (because we can now build Tax-Calculator for Python 3.6 as well as for Python 3.5 and Python 2.7).

  2. Lower the minimum required versions of numpy and pandas in the conda.recipe/meta.yaml file and likely give up a near doubling in execution speed relative to choice 1.

Given that the Continuum Analytics Anaconda download page is offering Python 3.6 and 2.7, it is not at all clear to me why we need to offer conda packages for Python 3.4.

I have a strong preference for choice 1 unless you can point out cogent reasons to keep producing packages for Python 3.4.

@MattHJensen @PeterDSteinberg

Working around bugs in the pb program

For the most part, the pb program, which was written by @jbcrail, is a big improvement in our ability to build and upload conda packages for OSPC projects. Thanks for the helpful tool, @jbcrail.

At this writing, there seem to be a couple of bugs that prevent pb from working as advertised.

The purpose of this post is to give an example of a bash script that works around these problems.
The example script is for creating taxcalc packages, but the pb release command can be edited to build and upload other OSPC packages.

#!/bin/bash
# Script to build and upload taxcalc package for specified release using
# policybrain-builder CLI, pb, with a single parameter, TAG (eg, 0.11.0).
# NOTE: --clean option doen't work, so never use -w or --workdir options.
# NOTE: --python option doesn't work either, so use OSPC_PYTHONS instead.

echo "STARTING : `date`"

rm -rf /tmp/policybrain-builder 

export OSPC_PYTHONS="2.7 3.6"
TOKEN=<secret-token>
pb release --token $TOKEN --label main taxcalc=$1 2>&1 | awk '$1~/\[taxcalc\]/'
unset OSPC_PYTHONS

conda build purge
find ~/anaconda/conda-bld -name "*tar.bz2" -exec rm -f {} \;

echo "FINISHED : `date`"
exit 0

Creating a temporary test release 0.1.0 and running the script produces ten conda packages (uploaded to https://anaconda.org/ospc/taxcalc and the following output:

./taxcalc-package-cli.sh 0.1.0
STARTING : Fri Oct 13 16:38:12 EDT 2017
[taxcalc] removing
[taxcalc] cloning
[taxcalc] fetching
[taxcalc] checking out '0.1.0'
[taxcalc] archiving
[taxcalc] building 3.6
[taxcalc] converting to linux-32
[taxcalc] converting to linux-64
[taxcalc] converting to win-32
[taxcalc] converting to win-64
[taxcalc] building 2.7
[taxcalc] converting to linux-32
[taxcalc] converting to linux-64
[taxcalc] converting to win-32
[taxcalc] converting to win-64
[taxcalc] uploading osx-64 packages
[taxcalc] uploading linux-32 packages
[taxcalc] uploading linux-64 packages
[taxcalc] uploading win-32 packages
[taxcalc] uploading win-64 packages
FINISHED : Fri Oct 13 16:55:06 EDT 2017

@MattHJensen @jdebacker @rickecon @jbcrail

How to make taxcalc packages for a Tax-Calculator release

Here is an example of a bash shell script that uses the policybrain-builder CLI, pb (release 0.1.0), to build and upload conda taxcalc packages for Python 3.6 for a specified Tax-Calculator release (0.21.0 or later).

Before executing this bash script be sure that the conda-build package is installed. If it is not installed, then execute this command: conda install conda-build.
And also be sure you have executed python setup.py install in the top directory of the policybrain-builder directory tree, as described in the README.md file.

Here are the contents of the bash shell script, which is called release-taxcalc-packages.sh:

policybrain-builder$ pb --version
pb, version 0.1.0

policybrain-builder$ cat release-taxcalc-packages.sh

#!/bin/bash
# Script to build and upload taxcalc packages for specified release using
# policybrain-builder CLI, pb, with a single parameter, TAG (e.g., 0.22.1)
# USAGE: ./release-taxcalc-package.sh TAG

echo "STARTING : `date`"

TOKEN=<secret-token>
OPTIONS="--token $TOKEN --clean --label main --python 3.6"
pb release $OPTIONS taxcalc=$1 2>&1 | awk '$1~/\[taxcalc\]/'

conda build purge
find ~/anaconda3/conda-bld -name "*tar.bz2" -exec rm -f {} \;

echo "FINISHED : `date`"
exit 0

Here's a recent use example:

iMac:policybrain-builder mrh$ ./release-taxcalc-packages.sh 0.21.0
STARTING : Tue Sep 11 13:20:20 EDT 2018
[taxcalc] removing
[taxcalc] cloning
[taxcalc] fetching
[taxcalc] checking out '0.21.0'
[taxcalc] archiving
[taxcalc] building 3.6
[taxcalc] converting to linux-64
[taxcalc] converting to win-32
[taxcalc] converting to win-64
[taxcalc] uploading osx-64 packages
[taxcalc] uploading linux-64 packages
[taxcalc] uploading win-32 packages
[taxcalc] uploading win-64 packages
FINISHED : Tue Sep 11 13:24:14 EDT 2018

Note that this script builds four packages: four platforms (osx-64, linux-64, win-32, win-64) and
one Python version (3.6).

And finally, here is what things look like on www.anaconda.org after the bash script finishes execution:

screen shot 2018-09-11 at 3 30 55 pm

Add support for conda-forge packages

Per #165, support for conda-forge packages should be added to Package-Builder. Conda-forge is one of the largest community-maintained conda channels. Thus, packages that are built by pbrelease should be allowed to depend on packages from there.

I'm happy to take a crack at making these changes. I think it should be as simple as adding a conda config --add channels conda-forge when pbrelease is run if the channel is not already there. The channel could then be removed after the build if it the channel is not listed at the beginning of the run.

Better default for env variable `OSPC_PYTHONS`

Better default for env variable OSPC_PYTHONS - it defaults to "", leaving an confusing error, e.g.:

$ SKIP_ANACONDA_UPLOAD=1 TAXCALC_TAG=0.9.0 . ./build_release.sh
######## STATUS ## Build for Python ######## ########
FAILED

More detailed README

E.g. which env vars do I use, do I have to update B-Tax and OG-USA every time Tax-Calc is released (yes)?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.