From 05f70541ccdba603edbe466473738cad136c30d2 Mon Sep 17 00:00:00 2001 From: Addison Lynch Date: Fri, 11 Dec 2020 15:07:05 -1000 Subject: [PATCH] DOC: Update docs for 0.5.0 (#236) * First docs updates * Update README * Update docs --- .gitignore | 3 + README.rst | 102 ++++++++++++++++---------- docs/source/configuration.rst | 116 ++++++++++++++++-------------- docs/source/images/iexexample.gif | Bin 0 -> 33227 bytes docs/source/index.rst | 4 +- docs/source/install.rst | 4 +- docs/source/sandbox.rst | 2 + docs/source/testing.rst | 2 +- 8 files changed, 137 insertions(+), 96 deletions(-) create mode 100644 docs/source/images/iexexample.gif diff --git a/.gitignore b/.gitignore index 0f438e7..480dead 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,9 @@ "iexenv/" "stfpconfig.json" +.DS_Store +*.DS_Store + /.pytest_cache # Byte-compiled / optimized / DLL files __pycache__/ diff --git a/README.rst b/README.rst index 59eb613..3c8a71a 100644 --- a/README.rst +++ b/README.rst @@ -34,7 +34,7 @@ Forex/Currencies, Options, Commodities, Bonds, and Cryptocurrencies: Example ------- -.. image:: https://addisonlynch.github.io/public/img/iexexample.gif +.. image:: https://raw.githubusercontent.com/addisonlynch/iexfinance/master/docs/source/images/iexexample.gif Documentation @@ -63,8 +63,8 @@ From development repository (dev version): -Authentication --------------- +What's Needed to Access IEX Cloud? +---------------------------------- An IEX Cloud account is required to acecss the IEX Cloud API. Various `plans `__ are availalbe, free, paid, and pay-as-you-go. @@ -82,7 +82,7 @@ The authentication token can also be passed to any function call: from iexfinance.refdata import get_symbols - get_symbols(output_format='pandas', token="") + get_symbols(token="") or at the instantiation of a ``Stock`` object: @@ -90,7 +90,7 @@ or at the instantiation of a ``Stock`` object: from iexfinance.stocks import Stock - a = Stock("AAPL", token="") + a = Stock("AAPL", token="") a.get_quote() @@ -136,40 +136,6 @@ group, obtain the `Social Sentiment `__ ``DataFrame`` output -formatting is available for most endpoints. - -pandas ``DataFrame`` output formatting can be selected by setting the -``IEX_OUTPUT_FORMAT`` environment variable to ``pandas`` or by passing -``output_format`` as an argument to any function call (or at the instantiation -of a ``Stock`` object). - Common Usage Examples --------------------- @@ -387,6 +353,64 @@ API Status get_api_status() + +Configuration +------------- +.. _config.formatting: + +Output Formatting +----------------- + +By default, ``iexfinance`` returns data for most endpoints in a `pandas `__ ``DataFrame``. + +Selecting ``json`` as the output format returns data formatted *exactly* as received from +the IEX Endpoint. Configuring ``iexfinance``'s output format can be done in two ways: + +.. _config.formatting.env: + +Environment Variable (Recommended) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +For persistent configuration of a specified output format, use the environment +variable ``IEX_OUTPUT_FORMAT``. This value will be overridden by the +``output_format`` argument if it is passed. + +macOS/Linux +^^^^^^^^^^^ + +Type the following command into your terminal: + +.. code-block:: bash + + $ export IEX_OUTPUT_FORMAT=pandas + +Windows +^^^^^^^ + +See `here `__ for instructions on setting environment variables in Windows operating systems. + +.. _config.formatting.arg: + +``output_format`` Argument +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Pass ``output_format`` as an argument to any function call: + +.. code-block:: python + + from iexfinance.refdata import get_symbols + + get_symbols(output_format='pandas').head() + +or at the instantiation of a ``Stock`` object: + +.. code-block:: python + + from iexfinance.stocks import Stock + + aapl = Stock("AAPL", output_format='pandas') + aapl.get_quote().head() + Contact ------- diff --git a/docs/source/configuration.rst b/docs/source/configuration.rst index 3e7d975..cdf6ca5 100644 --- a/docs/source/configuration.rst +++ b/docs/source/configuration.rst @@ -8,40 +8,51 @@ There are four core components of ``iexfinance``'s configuration: * :ref:`config.auth` - setting your IEX Cloud Authentication Token * :ref:`config.formatting` - configuring desired output format (mirror IEX output or Pandas DataFrame) -* :ref:`config.api_version` - specifying version of IEX Cloud to use +* :ref:`config.api-version` - specifying version of IEX Cloud to use * :ref:`config.debugging` - cached sessions, request retries, and more -.. _config.api_version: +.. _config.auth: -API Version ------------ +Authentication +-------------- -The desired IEX API version can be specified using the ``IEX_API_VERSION`` -environment variable. The following versions are currently supported: +An IEX Cloud account and authentication token are required to acecss the IEX Cloud API. The IEX Cloud token is accessible via the IEX Cloud Console. -* ``stable`` - **default** -* ``beta`` -* ``v1`` -* ``latest`` -* ``sandbox`` *for testing purposes* +.. seealso:: For more information about signing up for an IEX Cloud account, see the pricing_ section of the IEX Cloud website. -.. seealso:: For more information on API versioning, see the IEX Cloud - documentation_. +.. _pricing: https://iexcloud.io/pricing -.. _documentation: https://iexcloud.io/docs/api/#versioning +Your IEX Cloud (secret) authentication token can be be stored in the ``IEX_TOKEN`` environment variable. It can also be passed to any function or at the instantiation of a ``Stock`` :ref:`object `. +Instructions for both authentication methods are below. -.. _config.auth: +.. _config.auth.env: -Authentication --------------- +Environment Variable (Recommended) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -An IEX Cloud account and authentication token are required to acecss the IEX Cloud API. +The easiest (and recommended) way to authenticate your IEX Cloud account is by +storing your authentication token (secret key beginning with ``sk_``) in the +``IEX_TOKEN`` environment variable. -Your IEX Cloud (secret) authentication token can be passed to any function or at the instantiation of a ``Stock`` :ref:`object `. -It can also be stored in the ``IEX_TOKEN`` environment variable. +.. _config.auth.env.unix: + +macOS/Linux +^^^^^^^^^^^ + +Type the following command into your terminal: + +.. code-block:: bash + + $ export IEX_TOKEN= + +.. _config.auth.env.windows: + +Windows +^^^^^^^ + +See `here `__ for instructions on setting environment variables in Windows operating systems. -The IEX Cloud token is accessible via the IEX Cloud Console. .. _config.auth.argument: @@ -66,16 +77,26 @@ or at the instantiation of a ``Stock`` object: a = Stock("AAPL", token="") a.get_quote() -.. _config.auth.env: +Where ```` is your IEX Cloud authentication token. + +.. _config.formatting: + +Output Formatting +----------------- + +By default, ``iexfinance`` returns data for most endpoints in a `pandas `__ ``DataFrame``. + +Selecting ``json`` as the output format returns data formatted *exactly* as received from +the IEX Endpoint. Configuring ``iexfinance``'s output format can be done in two ways: + +.. _config.formatting.env: Environment Variable (Recommended) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The easiest (and recommended) way to authenticate your IEX Cloud account is by -storing your authentication token (secret key beginning with ``sk_``) in the -``IEX_TOKEN`` environment variable. - -.. _config.auth.env.unix: +For persistent configuration of a specified output format, use the environment +variable ``IEX_OUTPUT_FORMAT``. This value will be overridden by the +``output_format`` argument if it is passed. macOS/Linux ^^^^^^^^^^^ @@ -84,24 +105,14 @@ Type the following command into your terminal: .. code-block:: bash - $ export IEX_TOKEN= - -.. _config.auth.env.windows: + $ export IEX_OUTPUT_FORMAT=pandas Windows ^^^^^^^ See `here `__ for instructions on setting environment variables in Windows operating systems. -.. _config.formatting: - -Output Formatting ------------------ - -By default, ``iexfinance`` returns data for most endpoints in a `pandas `__ ``DataFrame``. - -Selecting ``json`` as the output format returns data formatted *exactly* as received from -the IEX Endpoint. Configuring ``iexfinance``'s output format can be done in two ways: +.. _config.formatting.arg: ``output_format`` Argument ~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -123,26 +134,25 @@ or at the instantiation of a ``Stock`` object: aapl = Stock("AAPL", output_format='pandas') aapl.get_quote().head() -Environment Variable -~~~~~~~~~~~~~~~~~~~~ +.. _config.api-version: -For persistent configuration of a specified output format, use the environment -variable ``IEX_OUTPUT_FORMAT``. This value will be overridden by the -``output_format`` argument if it is passed. - -macOS/Linux -^^^^^^^^^^^ +API Version +----------- -Type the following command into your terminal: +The desired IEX API version can be specified using the ``IEX_API_VERSION`` +environment variable. The following versions are currently supported: -.. code-block:: bash +* ``stable`` - **default** +* ``beta`` +* ``v1`` +* ``latest`` +* ``sandbox`` *for testing purposes* - $ export IEX_OUTPUT_FORMAT=pandas +.. seealso:: For more information on API versioning, see the IEX Cloud + documentation_. -Windows -^^^^^^^ +.. _documentation: https://iexcloud.io/docs/api/#versioning -See `here `__ for instructions on setting environment variables in Windows operating systems. .. _config.debugging: diff --git a/docs/source/images/iexexample.gif b/docs/source/images/iexexample.gif new file mode 100644 index 0000000000000000000000000000000000000000..0a45640ddec669c20061378556d4ecd27775d997 GIT binary patch literal 33227 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

f9SNJA1WnzX6Yrwo@e zg-X>a4-z3laM&U61dWF#GT6|Fqr%r7DYB|ntAVSDwPMj`9Wn52gR?j$gzzvhZ3wyo z?c&wTSD;_ORjH;Bdn1Ghw0FVA#dtOHjSL0WsztDY;MK>MZIu0*Vrys}6h?gR5qdOQ z(_&GpCIMQk>%jf^ZMi9k6C-k@azpymNa17e4td;>OYaPR1TN ztc|qJDgLGaVHT|iscH$h7XrIxjRs^iMw;GYM5r|)sHN?kfYJR$R zS)k4_>107t4)h^pRbEMEmQr?kmv>1D7(2K;r=fK!E3v z{_^dJBY{W?nP`!;8mi>2i+W}yoQ-lA=?+-_RjGoI(eP!1CN??{Y65on>zX5cSyuxx zP~hG~x@C2jenbV3l>{ibr-KD&y~m$_bK3V>e*49zBYp1TH{hPVPDz8542Jn@v08G8 zEQywu_%E5z5=-WnY5w}5civ5Sk!zP_76Je)43L!o&H>1tZRO#2T57Ac7BXx$$W}7Q z>E_#8R@-(8-=@?ayJ2L|Mb<2t&*`;W&yLCU^P0nb<(--p-R4&aATf}Y11kuGWM9#N z7#Ywm9yaRL&}Ch<%V5V8K>#bgkU&-ngst}48eNdp0&K@EcSJcPfB_71=dJe?-hB7% V_uqgAF8JVt7jF3Bh#MXd06V7aVAlWu literal 0 HcmV?d00001 diff --git a/docs/source/index.rst b/docs/source/index.rst index 37f73c0..272f9cf 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -7,6 +7,8 @@ Welcome to iexfinance's documentation! - :ref:`endpoints` - (mostly) 1:1 mirror of the `IEX Cloud documentation `__ - :ref:`package_info` - additional package information, developer/testing documentation +.. note:: iexfinance is now a pandas-driven library. The default output format is now a pandas ``DataFrame``. + .. warning:: Support for Python 2 has ended as of ``iexfinance`` version 0.5.0. .. _account: https://iexcloud.io/pricing/ @@ -20,11 +22,11 @@ Full Contents :maxdepth: 1 :caption: Getting Started + usage whatsnew install configuration sandbox - usage .. _endpoints: diff --git a/docs/source/install.rst b/docs/source/install.rst index 96ef971..58e8b50 100644 --- a/docs/source/install.rst +++ b/docs/source/install.rst @@ -1,8 +1,8 @@ .. _install: -Install -======= +Installation +============ Dependencies ------------ diff --git a/docs/source/sandbox.rst b/docs/source/sandbox.rst index a371ba6..65177a9 100644 --- a/docs/source/sandbox.rst +++ b/docs/source/sandbox.rst @@ -9,3 +9,5 @@ accessed by setting ``IEX_API_VERSION`` to ``iexcloud-sandbox``. This will set ` .. note:: Test keys (beginning with ``Tsk`` and ``Tpk``) must be used with the sandbox environment. To obtain these keys, select the "Viewing test data" toggler on the left side of the IEX Cloud console. .. _`sandbox environment`: https://iexcloud.io/docs/api/#sandbox + +The sandbox environment is recommended for testing purposes. Messages used in the sandbox environment will not count against a user's monthly message limit. \ No newline at end of file diff --git a/docs/source/testing.rst b/docs/source/testing.rst index 67b68aa..d2aa20f 100644 --- a/docs/source/testing.rst +++ b/docs/source/testing.rst @@ -24,6 +24,7 @@ All testing dependencies can be installed via ``pip install -r requirements-dev. - codecov - flake8 - flake8-bugbear +- flake8-rst - pytest - pytest-runner - tox @@ -32,7 +33,6 @@ All documentation dependencies can be installed via ``pip install -r docs/requir **Docs** -- flake8-rst - ipython - matplotlib - requests-cache