codecov[bot]: # [Codecov](https://codecov.io/gh/alexgolec/tda-api/pull/38?src=pr&el=h1) Report
> Merging [#38](https://codecov.io/gh/alexgolec/tda-api/pull/38?src=pr&el=desc) into [master](https://codecov.io/gh/alexgolec/tda-api/commit/eb0aecdb65d326c56727dd26be3848557cb069ee&el=desc) will **increase** coverage by `0.00%`.
> The diff coverage is `100.00%`.

[![Impacted file tree graph](https://codecov.io/gh/alexgolec/tda-api/pull/38/graphs/tree.svg?width=650&height=150&src=pr&token=M8H98HA8CK)](https://codecov.io/gh/alexgolec/tda-api/pull/38?src=pr&el=tree)

```diff
@@           Coverage Diff           @@
##           master      #38   +/-   ##
=======================================
  Coverage   99.31%   99.31%           
=======================================
  Files          11       11           
  Lines        1601     1609    +8     
=======================================
+ Hits         1590     1598    +8     
  Misses         11       11           
```


| [Impacted Files](https://codecov.io/gh/alexgolec/tda-api/pull/38?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [tda/client.py](https://codecov.io/gh/alexgolec/tda-api/pull/38/diff?src=pr&el=tree#diff-dGRhL2NsaWVudC5weQ==) | `99.77% <100.00%> (+<0.01%)` | :arrow_up: |
| [tda/utils.py](https://codecov.io/gh/alexgolec/tda-api/pull/38/diff?src=pr&el=tree#diff-dGRhL3V0aWxzLnB5) | `96.15% <100.00%> (+0.15%)` | :arrow_up: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/alexgolec/tda-api/pull/38?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/alexgolec/tda-api/pull/38?src=pr&el=footer). Last update [eb0aecd...416a563](https://codecov.io/gh/alexgolec/tda-api/pull/38?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

diff --git a/tda/client.py b/tda/client.py
index b1dbc79..31e82ec 100644
--- a/tda/client.py
+++ b/tda/client.py
@@ -437,6 +437,9 @@ class Client(EnumEnforcer):
         projection = self.convert_enum(
             projection, self.Instrument.Projection)
 
+        if isinstance(symbols, str):
+            symbols = [symbols]
+
         params = {
             'apikey': self.api_key,
             'symbol': ','.join(symbols),
@@ -856,6 +859,9 @@ class Client(EnumEnforcer):
         `Official documentation
         <https://developer.tdameritrade.com/quotes/apis/get/marketdata/
         quotes>`__.'''
+        if isinstance(symbols, str):
+            symbols = [symbols]
+
         params = {
             'apikey': self.api_key,
             'symbol': ','.join(symbols)
@@ -956,6 +962,9 @@ class Client(EnumEnforcer):
         `Official documentation
         <https://developer.tdameritrade.com/user-principal/apis/get/
         userprincipals/streamersubscriptionkeys-0>`__.'''
+        if isinstance(account_ids, int) or isinstance(account_ids, str):
+            account_ids = [account_ids]
+
         params = {
             'apikey': self.api_key,
             'accountIds': ','.join(str(i) for i in account_ids)
diff --git a/tda/utils.py b/tda/utils.py
index 152ae10..55f7473 100644
--- a/tda/utils.py
+++ b/tda/utils.py
@@ -32,6 +32,9 @@ class EnumEnforcer:
         if iterable is None:
             return None
 
+        if isinstance(iterable, required_enum_type):
+            return [iterable.value]
+
         values = []
         for value in iterable:
             if isinstance(value, required_enum_type):

Functions expecting arrays should tolerate single scalar values
Provided they are of the right type. 
diff --git a/tests/client_test.py b/tests/client_test.py
index 73f0fe6..842ad1f 100644
--- a/tests/client_test.py
+++ b/tests/client_test.py
@@ -210,6 +210,18 @@ class TestClient(unittest.TestCase):
                 'status': 'FILLED,EXPIRED'
             })
 
+    @no_duplicates
+    @patch('tda.client.datetime.datetime', mockdatetime)
+    def test_get_orders_by_path_statuses_scalar(self):
+        self.client.get_orders_by_path(
+            ACCOUNT_ID, statuses=Client.Order.Status.FILLED)
+        self.mock_session.get.assert_called_once_with(
+            self.make_url('/v1/accounts/{accountId}/orders'), params={
+                'fromEnteredTime': MIN_ISO,
+                'toEnteredTime': NOW_DATETIME_ISO,
+                'status': 'FILLED'
+            })
+
     @no_duplicates
     @patch('tda.client.datetime.datetime', mockdatetime)
     def test_get_orders_by_path_statuses_unchecked(self):
@@ -313,6 +325,17 @@ class TestClient(unittest.TestCase):
                 'status': 'FILLED,EXPIRED'
             })
 
+    @no_duplicates
+    @patch('tda.client.datetime.datetime', mockdatetime)
+    def test_get_orders_by_query_statuses_scalar(self):
+        self.client.get_orders_by_query(statuses=Client.Order.Status.FILLED)
+        self.mock_session.get.assert_called_once_with(
+            self.make_url('/v1/orders'), params={
+                'fromEnteredTime': MIN_ISO,
+                'toEnteredTime': NOW_DATETIME_ISO,
+                'status': 'FILLED'
+            })
+
     @no_duplicates
     @patch('tda.client.datetime.datetime', mockdatetime)
     def test_get_orders_by_query_statuses_unchecked(self):
@@ -467,6 +490,14 @@ class TestClient(unittest.TestCase):
             self.make_url('/v1/accounts/{accountId}'),
             params={'fields': 'positions,orders'})
 
+    @no_duplicates
+    def test_get_account_fields_scalar(self):
+        self.client.get_account(
+                ACCOUNT_ID, fields=Client.Account.Fields.POSITIONS)
+        self.mock_session.get.assert_called_once_with(
+            self.make_url('/v1/accounts/{accountId}'),
+            params={'fields': 'positions'})
+
     @no_duplicates
     def test_get_account_fields_unchecked(self):
         self.client.set_enforce_enums(False)
@@ -492,6 +523,13 @@ class TestClient(unittest.TestCase):
             self.make_url('/v1/accounts'),
             params={'fields': 'positions,orders'})
 
+    @no_duplicates
+    def test_get_accounts_fields_scalar(self):
+        self.client.get_accounts(fields=Client.Account.Fields.POSITIONS)
+        self.mock_session.get.assert_called_once_with(
+            self.make_url('/v1/accounts'),
+            params={'fields': 'positions'})
+
     @no_duplicates
     def test_get_accounts_fields_unchecked(self):
         self.client.set_enforce_enums(False)
@@ -512,6 +550,16 @@ class TestClient(unittest.TestCase):
                 'symbol': 'AAPL,MSFT',
                 'projection': 'fundamental'})
 
+    @no_duplicates
+    def test_search_instruments_one_instrument(self):
+        self.client.search_instruments(
+            'AAPL', Client.Instrument.Projection.FUNDAMENTAL)
+        self.mock_session.get.assert_called_once_with(
+            self.make_url('/v1/instruments'), params={
+                'apikey': API_KEY,
+                'symbol': 'AAPL',
+                'projection': 'fundamental'})
+
     @no_duplicates
     def test_search_instruments_unchecked(self):
         self.client.set_enforce_enums(False)
@@ -550,6 +598,16 @@ class TestClient(unittest.TestCase):
                 'markets': 'EQUITY,BOND',
                 'date': NOW_DATE_ISO})
 
+    @no_duplicates
+    def test_get_hours_for_multiple_markets_single_market(self):
+        self.client.get_hours_for_multiple_markets(
+                Client.Markets.EQUITY, NOW_DATETIME)
+        self.mock_session.get.assert_called_once_with(
+            self.make_url('/v1/marketdata/hours'), params={
+                'apikey': API_KEY,
+                'markets': 'EQUITY',
+                'date': NOW_DATE_ISO})
+
     @no_duplicates
     def test_get_hours_for_multiple_markets_date(self):
         self.client.get_hours_for_multiple_markets([
@@ -568,8 +626,8 @@ class TestClient(unittest.TestCase):
                 Client.Markets.EQUITY,
                 Client.Markets.BOND], '2020-01-01')
         self.assertEqual(str(cm.exception),
-                         "expected type in (datetime.date, datetime.datetime) for " +
-                         "date, got 'builtins.str'")
+                         "expected type in (datetime.date, datetime.datetime) "
+                         "for date, got 'builtins.str'")
 
     @no_duplicates
     def test_get_hours_for_multiple_markets_unchecked(self):
@@ -1020,6 +1078,14 @@ class TestClient(unittest.TestCase):
                 'apikey': API_KEY,
                 'symbol': 'AAPL,MSFT'})
 
+    @no_duplicates
+    def test_get_quotes_single_symbol(self):
+        self.client.get_quotes('AAPL')
+        self.mock_session.get.assert_called_once_with(
+            self.make_url('/v1/marketdata/quotes'), params={
+                'apikey': API_KEY,
+                'symbol': 'AAPL'})
+
     # get_transaction
 
     @no_duplicates
@@ -1156,6 +1222,15 @@ class TestClient(unittest.TestCase):
                 'apikey': API_KEY,
                 'accountIds': '1000,2000,3000'})
 
+    @no_duplicates
+    def test_get_streamer_subscription_keys_one_account_id(self):
+        self.client.get_streamer_subscription_keys(1000)
+        self.mock_session.get.assert_called_once_with(
+            self.make_url('/v1/userprincipals/streamersubscriptionkeys'),
+            params={
+                'apikey': API_KEY,
+                'accountIds': '1000'})
+
     @no_duplicates
     def test_get_streamer_subscription_keys_str(self):
         self.client.get_streamer_subscription_keys(['1000', '2000', '3000'])
@@ -1185,6 +1260,15 @@ class TestClient(unittest.TestCase):
                 'apikey': API_KEY,
                 'fields': 'streamerSubscriptionKeys,preferences'})
 
+    @no_duplicates
+    def test_get_user_principals_one_field(self):
+        self.client.get_user_principals(
+            fields=Client.UserPrincipals.Fields.PREFERENCES)
+        self.mock_session.get.assert_called_once_with(
+            self.make_url('/v1/userprincipals'), params={
+                'apikey': API_KEY,
+                'fields': 'preferences'})
+
     @no_duplicates
     def test_get_user_principals_fields_unchecked(self):
         self.client.set_enforce_enums(False)

pip install -e .
parse_log_pytest
requirements.txt
nose coverage pytest
3.9
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
alabaster==0.7.16
attrs==25.3.0
babel==2.17.0
backports.tarfile==1.2.0
certifi==2025.1.31
cffi==1.17.1
charset-normalizer==3.4.1
colorama==0.4.6
coverage==7.8.0
cryptography==44.0.2
docutils==0.21.2
exceptiongroup==1.2.2
h11==0.14.0
id==1.5.0
idna==3.10
imagesize==1.4.1
importlib_metadata==8.6.1
iniconfig==2.1.0
jaraco.classes==3.4.0
jaraco.context==6.0.1
jaraco.functools==4.1.0
jeepney==0.9.0
Jinja2==3.1.6
keyring==25.6.0
markdown-it-py==3.0.0
MarkupSafe==3.0.2
mdurl==0.1.2
more-itertools==10.6.0
nh3==0.2.21
nose==1.3.7
oauthlib==3.2.2
outcome==1.3.0.post0
packaging==24.2
pluggy==1.5.0
pycparser==2.22
Pygments==2.19.1
PySocks==1.7.1
pytest==8.3.5
python-dateutil==2.9.0.post0
pytz==2025.2
readme_renderer==44.0
requests==2.32.3
requests-oauthlib==2.0.0
requests-toolbelt==1.0.0
rfc3986==2.0.0
rich==14.0.0
SecretStorage==3.3.3
selenium==4.30.0
six==1.17.0
sniffio==1.3.1
snowballstemmer==2.2.0
sortedcontainers==2.4.0
Sphinx==7.4.7
sphinx-rtd-theme==3.0.2
sphinxcontrib-applehelp==2.0.0
sphinxcontrib-devhelp==2.0.0
sphinxcontrib-htmlhelp==2.1.0
sphinxcontrib-jquery==4.1
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==2.0.0
sphinxcontrib-serializinghtml==2.0.0
-e git+https://github.com/alexgolec/tda-api.git@eb0aecdb65d326c56727dd26be3848557cb069ee#egg=tda_api
tomli==2.2.1
trio==0.29.0
trio-websocket==0.12.2
twine==6.1.0
typing_extensions==4.13.0
urllib3==2.3.0
websocket-client==1.8.0
websockets==15.0.1
wsproto==1.2.0
zipp==3.21.0

name: tda-api
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - pip=25.0=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - alabaster==0.7.16
      - attrs==25.3.0
      - babel==2.17.0
      - backports-tarfile==1.2.0
      - certifi==2025.1.31
      - cffi==1.17.1
      - charset-normalizer==3.4.1
      - colorama==0.4.6
      - coverage==7.8.0
      - cryptography==44.0.2
      - docutils==0.21.2
      - exceptiongroup==1.2.2
      - h11==0.14.0
      - id==1.5.0
      - idna==3.10
      - imagesize==1.4.1
      - importlib-metadata==8.6.1
      - iniconfig==2.1.0
      - jaraco-classes==3.4.0
      - jaraco-context==6.0.1
      - jaraco-functools==4.1.0
      - jeepney==0.9.0
      - jinja2==3.1.6
      - keyring==25.6.0
      - markdown-it-py==3.0.0
      - markupsafe==3.0.2
      - mdurl==0.1.2
      - more-itertools==10.6.0
      - nh3==0.2.21
      - nose==1.3.7
      - oauthlib==3.2.2
      - outcome==1.3.0.post0
      - packaging==24.2
      - pluggy==1.5.0
      - pycparser==2.22
      - pygments==2.19.1
      - pysocks==1.7.1
      - pytest==8.3.5
      - python-dateutil==2.9.0.post0
      - pytz==2025.2
      - readme-renderer==44.0
      - requests==2.32.3
      - requests-oauthlib==2.0.0
      - requests-toolbelt==1.0.0
      - rfc3986==2.0.0
      - rich==14.0.0
      - secretstorage==3.3.3
      - selenium==4.30.0
      - six==1.17.0
      - sniffio==1.3.1
      - snowballstemmer==2.2.0
      - sortedcontainers==2.4.0
      - sphinx==7.4.7
      - sphinx-rtd-theme==3.0.2
      - sphinxcontrib-applehelp==2.0.0
      - sphinxcontrib-devhelp==2.0.0
      - sphinxcontrib-htmlhelp==2.1.0
      - sphinxcontrib-jquery==4.1
      - sphinxcontrib-jsmath==1.0.1
      - sphinxcontrib-qthelp==2.0.0
      - sphinxcontrib-serializinghtml==2.0.0
      - tomli==2.2.1
      - trio==0.29.0
      - trio-websocket==0.12.2
      - twine==6.1.0
      - typing-extensions==4.13.0
      - urllib3==2.3.0
      - websocket-client==1.8.0
      - websockets==15.0.1
      - wsproto==1.2.0
      - zipp==3.21.0
prefix: /opt/conda/envs/tda-api

tests/client_test.py::TestClient::test_get_account_fields_scalar tests/client_test.py::TestClient::test_get_accounts_fields_scalar tests/client_test.py::TestClient::test_get_hours_for_multiple_markets_single_market tests/client_test.py::TestClient::test_get_orders_by_path_statuses_scalar tests/client_test.py::TestClient::test_get_orders_by_query_statuses_scalar tests/client_test.py::TestClient::test_get_quotes_single_symbol tests/client_test.py::TestClient::test_get_streamer_subscription_keys_one_account_id tests/client_test.py::TestClient::test_get_user_principals_one_field tests/client_test.py::TestClient::test_search_instruments_one_instrument
tests/client_test.py::TestClient::test_cancel_order tests/client_test.py::TestClient::test_cancel_order_str tests/client_test.py::TestClient::test_create_saved_order tests/client_test.py::TestClient::test_create_saved_order_str tests/client_test.py::TestClient::test_create_watchlist tests/client_test.py::TestClient::test_create_watchlist_str tests/client_test.py::TestClient::test_delete_saved_order tests/client_test.py::TestClient::test_delete_saved_order_str tests/client_test.py::TestClient::test_delete_watchlist tests/client_test.py::TestClient::test_delete_watchlist_str tests/client_test.py::TestClient::test_get_account tests/client_test.py::TestClient::test_get_account_fields tests/client_test.py::TestClient::test_get_account_fields_unchecked tests/client_test.py::TestClient::test_get_account_str tests/client_test.py::TestClient::test_get_accounts tests/client_test.py::TestClient::test_get_accounts_fields tests/client_test.py::TestClient::test_get_accounts_fields_unchecked tests/client_test.py::TestClient::test_get_hours_for_multiple_markets_date tests/client_test.py::TestClient::test_get_hours_for_multiple_markets_datetime tests/client_test.py::TestClient::test_get_hours_for_multiple_markets_str tests/client_test.py::TestClient::test_get_hours_for_multiple_markets_unchecked tests/client_test.py::TestClient::test_get_hours_for_single_market_date tests/client_test.py::TestClient::test_get_hours_for_single_market_datetime tests/client_test.py::TestClient::test_get_hours_for_single_market_str tests/client_test.py::TestClient::test_get_hours_for_single_market_unchecked tests/client_test.py::TestClient::test_get_instrument tests/client_test.py::TestClient::test_get_instrument_cusip_must_be_string tests/client_test.py::TestClient::test_get_movers tests/client_test.py::TestClient::test_get_movers_unchecked tests/client_test.py::TestClient::test_get_option_chain_contract_type tests/client_test.py::TestClient::test_get_option_chain_contract_type_unchecked tests/client_test.py::TestClient::test_get_option_chain_days_to_expiration tests/client_test.py::TestClient::test_get_option_chain_exp_month tests/client_test.py::TestClient::test_get_option_chain_exp_month_unchecked tests/client_test.py::TestClient::test_get_option_chain_from_date_date tests/client_test.py::TestClient::test_get_option_chain_from_date_datetime tests/client_test.py::TestClient::test_get_option_chain_from_date_str tests/client_test.py::TestClient::test_get_option_chain_include_quotes tests/client_test.py::TestClient::test_get_option_chain_interest_rate tests/client_test.py::TestClient::test_get_option_chain_interval tests/client_test.py::TestClient::test_get_option_chain_option_type tests/client_test.py::TestClient::test_get_option_chain_option_type_unchecked tests/client_test.py::TestClient::test_get_option_chain_strategy tests/client_test.py::TestClient::test_get_option_chain_strategy_unchecked tests/client_test.py::TestClient::test_get_option_chain_strike tests/client_test.py::TestClient::test_get_option_chain_strike_count tests/client_test.py::TestClient::test_get_option_chain_strike_range tests/client_test.py::TestClient::test_get_option_chain_strike_range_unchecked tests/client_test.py::TestClient::test_get_option_chain_to_date_date tests/client_test.py::TestClient::test_get_option_chain_to_date_datetime tests/client_test.py::TestClient::test_get_option_chain_to_date_str tests/client_test.py::TestClient::test_get_option_chain_underlying_price tests/client_test.py::TestClient::test_get_option_chain_vanilla tests/client_test.py::TestClient::test_get_option_chain_volatility tests/client_test.py::TestClient::test_get_order tests/client_test.py::TestClient::test_get_order_str tests/client_test.py::TestClient::test_get_orders_by_path_from_entered_datetime tests/client_test.py::TestClient::test_get_orders_by_path_from_not_datetime tests/client_test.py::TestClient::test_get_orders_by_path_max_results tests/client_test.py::TestClient::test_get_orders_by_path_status tests/client_test.py::TestClient::test_get_orders_by_path_status_and_statuses tests/client_test.py::TestClient::test_get_orders_by_path_status_unchecked tests/client_test.py::TestClient::test_get_orders_by_path_statuses tests/client_test.py::TestClient::test_get_orders_by_path_statuses_unchecked tests/client_test.py::TestClient::test_get_orders_by_path_to_entered_datetime tests/client_test.py::TestClient::test_get_orders_by_path_to_not_datetime tests/client_test.py::TestClient::test_get_orders_by_path_vanilla tests/client_test.py::TestClient::test_get_orders_by_path_vanilla_str tests/client_test.py::TestClient::test_get_orders_by_query_from_entered_datetime tests/client_test.py::TestClient::test_get_orders_by_query_max_results tests/client_test.py::TestClient::test_get_orders_by_query_status tests/client_test.py::TestClient::test_get_orders_by_query_status_and_statuses tests/client_test.py::TestClient::test_get_orders_by_query_status_unchecked tests/client_test.py::TestClient::test_get_orders_by_query_statuses tests/client_test.py::TestClient::test_get_orders_by_query_statuses_unchecked tests/client_test.py::TestClient::test_get_orders_by_query_to_entered_datetime tests/client_test.py::TestClient::test_get_orders_by_query_vanilla tests/client_test.py::TestClient::test_get_preferences tests/client_test.py::TestClient::test_get_preferences_str tests/client_test.py::TestClient::test_get_price_history_end_datetime tests/client_test.py::TestClient::test_get_price_history_end_datetime_str tests/client_test.py::TestClient::test_get_price_history_frequency tests/client_test.py::TestClient::test_get_price_history_frequency_type tests/client_test.py::TestClient::test_get_price_history_frequency_type_unchecked tests/client_test.py::TestClient::test_get_price_history_frequency_unchecked tests/client_test.py::TestClient::test_get_price_history_need_extended_hours_data tests/client_test.py::TestClient::test_get_price_history_num_periods tests/client_test.py::TestClient::test_get_price_history_num_periods_unchecked tests/client_test.py::TestClient::test_get_price_history_period_type tests/client_test.py::TestClient::test_get_price_history_period_type_unchecked tests/client_test.py::TestClient::test_get_price_history_start_datetime tests/client_test.py::TestClient::test_get_price_history_start_datetime_str tests/client_test.py::TestClient::test_get_price_history_vanilla tests/client_test.py::TestClient::test_get_quote tests/client_test.py::TestClient::test_get_quotes tests/client_test.py::TestClient::test_get_saved_order tests/client_test.py::TestClient::test_get_saved_order_str tests/client_test.py::TestClient::test_get_saved_orders_by_path tests/client_test.py::TestClient::test_get_saved_orders_by_path_str tests/client_test.py::TestClient::test_get_streamer_subscription_keys tests/client_test.py::TestClient::test_get_streamer_subscription_keys_str tests/client_test.py::TestClient::test_get_transaction tests/client_test.py::TestClient::test_get_transaction_str tests/client_test.py::TestClient::test_get_transactions tests/client_test.py::TestClient::test_get_transactions_end_date tests/client_test.py::TestClient::test_get_transactions_end_date_datetime tests/client_test.py::TestClient::test_get_transactions_end_date_str tests/client_test.py::TestClient::test_get_transactions_start_date_date tests/client_test.py::TestClient::test_get_transactions_start_date_datetime tests/client_test.py::TestClient::test_get_transactions_start_date_str tests/client_test.py::TestClient::test_get_transactions_str tests/client_test.py::TestClient::test_get_transactions_symbol tests/client_test.py::TestClient::test_get_transactions_type tests/client_test.py::TestClient::test_get_transactions_type_unchecked tests/client_test.py::TestClient::test_get_user_principals_fields tests/client_test.py::TestClient::test_get_user_principals_fields_unchecked tests/client_test.py::TestClient::test_get_user_principals_vanilla tests/client_test.py::TestClient::test_get_watchlist tests/client_test.py::TestClient::test_get_watchlist_str tests/client_test.py::TestClient::test_get_watchlists_for_multiple_accounts tests/client_test.py::TestClient::test_get_watchlists_for_single_account tests/client_test.py::TestClient::test_get_watchlists_for_single_account_str tests/client_test.py::TestClient::test_place_order tests/client_test.py::TestClient::test_place_order_str tests/client_test.py::TestClient::test_replace_order tests/client_test.py::TestClient::test_replace_order_str tests/client_test.py::TestClient::test_replace_saved_order tests/client_test.py::TestClient::test_replace_saved_order_str tests/client_test.py::TestClient::test_replace_watchlist tests/client_test.py::TestClient::test_replace_watchlist_str tests/client_test.py::TestClient::test_search_instruments tests/client_test.py::TestClient::test_search_instruments_unchecked tests/client_test.py::TestClient::test_update_preferences tests/client_test.py::TestClient::test_update_preferences_str tests/client_test.py::TestClient::test_update_watchlist tests/client_test.py::TestClient::test_update_watchlist_str
tda/client.py tda/utils.py
tda/client.py tda/utils.py