Metadata-Version: 2.4
Name: wrds
Version: 3.5.0
Summary: Access WRDS data through PostgreSQL in Python.
Author-email: Alex Malek <amalek@wharton.upenn.edu>, Tim Allen <tallen@wharton.upenn.edu>
License: BSD-3-Clause
Project-URL: Homepage, http://wrds-www.wharton.upenn.edu
Project-URL: Repository, https://github.com/wharton/wrds
Project-URL: Documentation, https://github.com/wharton/wrds/blob/master/README.md
Keywords: wrds,finance,research,crsp,compustat
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Intended Audience :: End Users/Desktop
Classifier: Intended Audience :: Financial and Insurance Industry
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Office/Business :: Financial
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Classifier: License :: OSI Approved :: BSD License
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Requires-Dist: ipython<=9.8.0
Requires-Dist: pandas<2.3,>=2.2
Requires-Dist: psycopg2-binary<2.10,>=2.9
Requires-Dist: sqlalchemy<2.1,>=2
Provides-Extra: dev
Requires-Dist: ruff<=0.15.0; extra == "dev"
Requires-Dist: pytest-cov<=7.1.0; extra == "dev"
Dynamic: license-file

# PyWRDS from Wharton Research Data Services

PyWRDS is a Python package for examining datasets on the [Wharton Research Data Services (WRDS)](https://wrds-www.wharton.upenn.edu) platform, and extracting data to Pandas dataframes. A WRDS account is required.

## Installation

The PyWRDS package is supported on Python 3.8 through 3.12. To ensure you have a supported Python version, type `python --version` at a command line interface, and check that it is between 3.8 and 3.12. On some systems, Python may be in installed as `python3`. You can [download Python here](https://www.python.org/downloads/) if it isn't installed.

The PyWRDS package must be installed before it can be used for the first time. The recommended method is to use a [virtual environment](https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments/) (`venv`), so you can `import` it to use in Python. This example will install the PyWRDS package (`wrds`) and [IPython](https://ipython.org/), which provides a much nicer command line interface than is included with Python.

#### Linux or MacOS

```
$ python -m venv --copies --prompt pywrds pywrds
$ source pywrds/bin/activate
(pywrds) $ python -m pip install -U pip wheel wrds
```

In this example, Python will create a `venv` in your current directory `./pywrds`, so that when you want to use it again, you can simply activate it:

```
$ source pywrds/bin/activate
```

#### Windows

```
C:\Users\username> python -m venv --copies --prompt pywrds pywrds
C:\Users\username> pywrds\Scripts\activate
(pywrds) C:\Users\username> python -m pip install -U pip wheel wrds
```

In this example, Python will create a `venv` in the directory `C:\Users\username\pywrds`, so that when you want to use it again, you can simply activate it:

```
C:\Users\username> pywrds\Scripts\activate
```

For detailed information on installation of the module, please see [PYTHON: From Your Computer (Jupyter/Spyder)](https://wrds-www.wharton.upenn.edu/pages/support/programming-wrds/programming-python/python-from-your-computer/)

## Using the PyWRDS Package

Type `ipython` to start the IPython command line interface.

For detailed information on use of the module, please see [Querying WRDS Data using Python](https://wrds-www.wharton.upenn.edu/pages/support/programming-wrds/programming-python/querying-wrds-data-python/)

A quick tutorial:

```
In [1]: import wrds
In [2]: db = wrds.Connection()
Enter your credentials.
Username: <your_username>
Password: <your_password>
In [3]: db.list_libraries()
['audit', 'bank', 'block', 'bvd', 'bvdtrial', 'cboe', ...]
In [4]: db.list_tables(library="crsp")
['aco_amda', 'aco_imda', 'aco_indfnta', 'aco_indfntq', ...]
In [5]: db.describe_table(library="crsp", table="stocknames")
Approximately 58957 rows in crsp.stocknames.
       name    nullable              type
0      permno      True  DOUBLE PRECISION
1      namedt      True              DATE
2   nameenddt      True              DATE
...

In [6]: stocknames = db.get_table(library="crsp", table="stocknames", rows=10)
In [7]: stocknames.head()
   permno  permco      namedt   nameenddt     cusip    ncusip ticker  \
0  10000.0  7952.0  1986-01-07  1987-06-11  68391610  68391610  OMFGA
1  10001.0  7953.0  1986-01-09  1993-11-21  36720410  39040610   GFGC
2  10001.0  7953.0  1993-11-22  2008-02-04  36720410  29274A10   EWST
3  10001.0  7953.0  2008-02-05  2009-08-03  36720410  29274A20   EWST
4  10001.0  7953.0  2009-08-04  2009-12-17  36720410  29269V10   EGAS

In [7]: db.close()  # Close the connection to the database.

In [8]: with wrds.Connection() as db:  # You can use a context manager
   ...:     stocknames = db.get_table(library='crsp', table='stocknames', rows=10)
   ...: stocknames.head()
   permno  permco      namedt   nameenddt     cusip    ncusip ticker  \
0  10000.0  7952.0  1986-01-07  1987-06-11  68391610  68391610  OMFGA
1  10001.0  7953.0  1986-01-09  1993-11-21  36720410  39040610   GFGC
2  10001.0  7953.0  1993-11-22  2008-02-04  36720410  29274A10   EWST
3  10001.0  7953.0  2008-02-05  2009-08-03  36720410  29274A20   EWST
4  10001.0  7953.0  2009-08-04  2009-12-17  36720410  29269V10   EGAS
```

## Development and Test Suite

Clone the repository and install with `pip install -e .[dev]`. Then run `pytest`.
