Skip to main content

Execute do-files with Stata and pytask.

Project description

pytask-stata

PyPI PyPI - Python Version image image PyPI - License image image pre-commit.ci status image


Run Stata's do-files with pytask.

Installation

pytask-stata is available on PyPI and Anaconda.org. Install it with

$ pip install pytask-stata

# or

$ conda install -c conda-forge pytask-stata

You also need to have Stata installed on your system and have the executable on your system's PATH. If you do not know how to do it, here is an explanation.

Usage

Similarly to normal task functions which execute Python code, you define tasks to execute scripts written in Stata with Python functions. The difference is that the function body does not contain any logic, but the decorator tells pytask how to handle the task.

Here is an example where you want to run script.do.

import pytask


@pytask.mark.stata(script="script.do")
@pytask.mark.produces("auto.dta")
def task_run_do_file():
    pass

When executing a do-file, the current working directory changes to the directory where the script is located. This allows you, for example, to reference every data set you want to read with a relative path from the script.

Dependencies and Products

Dependencies and products can be added as with a normal pytask task using the @pytask.mark.depends_on and @pytask.mark.produces decorators. which is explained in this tutorial.

Accessing dependencies and products in the script

The decorator can be used to pass command line arguments to your Stata executable. For example, pass the path of the product with

@pytask.mark.stata(script="script.do", options="auto.dta")
@pytask.mark.produces("auto.dta")
def task_run_do_file():
    pass

And in your script.do, you can intercept the value with

* Intercept command line argument and save to macro named 'produces'.
args produces

sysuse auto, clear
save "`produces'"

The relative path inside the do-file works only because the pytask-stata switches the current working directory to the directory of the do-file before the task is executed.

To make the task independent from the current working directory, pass the full path as an command line argument. Here is an example.

# Absolute path to the build directory.
from src.config import BLD


@pytask.mark.stata(script="script.do", options=BLD / "auto.dta")
@pytask.mark.produces(BLD / "auto.dta")
def task_run_do_file():
    pass

Repeating tasks with different scripts or inputs

You can also parametrize the execution of scripts, meaning executing multiple do-files as well as passing different command line arguments to the same do-file.

The following task executes two do-files which produce different outputs.

for i in range(2):

    @pytask.mark.task
    @pytask.mark.stata(script=f"script_{i}.do", options=f"{i}.dta")
    @pytask.mark.produces(f"{i}.dta")
    def task_execute_do_file():
        pass

Configuration

pytask-stata can be configured with the following options.

stata_keep_log

Use this option to keep the .log files which are produced for every task. This option is useful to debug Stata tasks. Set the option via the configuration file with

[tool.pytask.ini_options]
stata_keep_log = true

The option is also available in the command line interface via the --stata-keep-log flag.

stata_check_log_lines

Use this option to vary the number of lines in the log file which are checked for error codes. It also controls the number of lines displayed on errors. Use any integer greater than zero. Here is the entry in the configuration file

[tool.pytask.ini_options]
stata_check_log_lines = 10

and here via the command line interface

$ pytask build --stata-check-log-lines 10

Changes

Consult the release notes to find out about what is new.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pytask_stata-0.4.0.tar.gz (8.2 kB view details)

Uploaded Source

Built Distribution

pytask_stata-0.4.0-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

Details for the file pytask_stata-0.4.0.tar.gz.

File metadata

  • Download URL: pytask_stata-0.4.0.tar.gz
  • Upload date:
  • Size: 8.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for pytask_stata-0.4.0.tar.gz
Algorithm Hash digest
SHA256 04fa9527889c9e236fcabee72f6085429305f51cbb78e405bcdb2f24d30bfdc3
MD5 d35b23287f5fa6b201cbd63d1acea434
BLAKE2b-256 08a87f9a377c08fb53d41741675e96a9bd4c5c00d01784b0cfff691db319c1cb

See more details on using hashes here.

File details

Details for the file pytask_stata-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: pytask_stata-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 10.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for pytask_stata-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ae14bd17d772388b197c9d53a6155519e2cec1526f2d2e7a7e0c139c1f0c4a33
MD5 8411d3a378a3001e64f06af8e20d4367
BLAKE2b-256 d96e09c5d156903103edd7cf5c681a9063f6df2d9265a1d9a9a3acfa8824d76c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page