diff --git a/environment.yml b/environment.yml
index 2278a3d5..2249c72e 100755
--- a/environment.yml
+++ b/environment.yml
@@ -12,6 +12,7 @@ dependencies:
   - jupyter
   - sphinx
   - sphinx-gallery
+  - pillow
   - doc8
   - pytest
   - pytest-cov
diff --git a/examples/Basic_Usage.py b/examples/Basic_Usage.py
index 0d08be78..d86a8aa6 100644
--- a/examples/Basic_Usage.py
+++ b/examples/Basic_Usage.py
@@ -16,7 +16,14 @@ contained within.
 from __future__ import print_function
 
 from siphon.catalog import TDSCatalog
+from siphon.http_util import session_manager
 
 ###########################################
 cat = TDSCatalog('http://thredds.ucar.edu/thredds/catalog.xml')
 print(list(cat.catalog_refs))
+
+###########################################
+# Basic HTTP authentication can also be used by using the HTTP session manager
+# and setting some default options for HTTP sessions
+session_manager.set_session_options(auth=('username', 'password'))
+cat = TDSCatalog('https://rda.ucar.edu/thredds/catalog.xml')
diff --git a/siphon/catalog.py b/siphon/catalog.py
index 2215241c..0ae912d7 100644
--- a/siphon/catalog.py
+++ b/siphon/catalog.py
@@ -18,7 +18,7 @@ except ImportError:
     # Python 3
     from urllib.parse import urljoin, urlparse
 
-from .http_util import create_http_session, urlopen
+from .http_util import session_manager
 from .metadata import TDSCatalogMetadata
 
 logging.basicConfig(level=logging.ERROR)
@@ -250,7 +250,7 @@ class TDSCatalog(object):
             The URL of a THREDDS client catalog
 
         """
-        session = create_http_session()
+        session = session_manager.create_session()
 
         # get catalog.xml file
         resp = session.get(catalog_url)
@@ -488,7 +488,7 @@ class Dataset(object):
         if catalog_url != '':
             resolver_base = catalog_url.split('catalog.xml')[0]
             resolver_url = resolver_base + self.url_path
-            resolver_xml = urlopen(resolver_url)
+            resolver_xml = session_manager.urlopen(resolver_url)
             tree = ET.parse(resolver_xml)
             root = tree.getroot()
             if 'name' in root.attrib:
@@ -682,7 +682,7 @@ class Dataset(object):
             from .ncss import NCSS
             provider = NCSS
         elif service == 'HTTPServer':
-            provider = urlopen
+            provider = session_manager.urlopen
         else:
             raise ValueError(service + ' is not an access method supported by Siphon')
 
diff --git a/siphon/http_util.py b/siphon/http_util.py
index fd1c0218..525d5830 100644
--- a/siphon/http_util.py
+++ b/siphon/http_util.py
@@ -18,8 +18,6 @@ import requests
 
 from . import __version__
 
-user_agent = 'Siphon ({})'.format(__version__)
-
 HTTPError = requests.HTTPError
 
 
@@ -49,49 +47,74 @@ class UTC(tzinfo):
 utc = UTC()
 
 
-def create_http_session():
-    """Create a new HTTP session with our user-agent set.
+class HTTPSessionManager(object):
+    """Manage the creation of sessions for HTTP access."""
 
-    Returns
-    -------
-    session : requests.Session
-        The created session
+    def __init__(self):
+        """Initialize ``HTTPSessionManager``."""
+        self.user_agent = 'Siphon ({})'.format(__version__)
+        self.options = {}
 
-    See Also
-    --------
-    urlopen
+    def set_session_options(self, **kwargs):
+        """Set options for created session instances.
 
-    """
-    ret = requests.Session()
-    ret.headers['User-Agent'] = user_agent
-    return ret
+        Takes keyword arguments and sets them as attributes on the returned
+        :class:`requests.Session` instance.
 
+        See Also
+        --------
+        create_session
 
-def urlopen(url, **kwargs):
-    """GET a file-like object for a URL using HTTP.
+        """
+        self.options = kwargs
 
-    This is a thin wrapper around :meth:`requests.Session.get` that returns a file-like object
-    wrapped around the resulting content.
+    def create_session(self):
+        """Create a new HTTP session with our user-agent set.
 
-    Parameters
-    ----------
-    url : str
-        The URL to request
+        Returns
+        -------
+        session : requests.Session
+            The created session
 
-    kwargs : arbitrary keyword arguments
-        Additional keyword arguments to pass to :meth:`requests.Session.get`.
+        See Also
+        --------
+        urlopen, set_session_options
 
-    Returns
-    -------
-    fobj : file-like object
-        A file-like interface to the content in the response
+        """
+        ret = requests.Session()
+        ret.headers['User-Agent'] = self.user_agent
+        for k, v in self.options.items():
+            setattr(ret, k, v)
+        return ret
 
-    See Also
-    --------
-    :meth:`requests.Session.get`
+    def urlopen(self, url, **kwargs):
+        """GET a file-like object for a URL using HTTP.
 
-    """
-    return BytesIO(create_http_session().get(url, **kwargs).content)
+        This is a thin wrapper around :meth:`requests.Session.get` that returns a file-like
+        object wrapped around the resulting content.
+
+        Parameters
+        ----------
+        url : str
+            The URL to request
+
+        kwargs : arbitrary keyword arguments
+            Additional keyword arguments to pass to :meth:`requests.Session.get`.
+
+        Returns
+        -------
+        fobj : file-like object
+            A file-like interface to the content in the response
+
+        See Also
+        --------
+        :meth:`requests.Session.get`
+
+        """
+        return BytesIO(self.create_session().get(url, **kwargs).content)
+
+
+session_manager = HTTPSessionManager()
 
 
 def parse_iso_date(s):
@@ -352,7 +375,7 @@ class HTTPEndPoint(object):
 
         """
         self._base = url
-        self._session = create_http_session()
+        self._session = session_manager.create_session()
         self._get_metadata()
 
     def get_query(self, query):
@@ -458,9 +481,10 @@ class HTTPEndPoint(object):
                 text = resp.reason
             else:
                 text = resp.text
-            raise requests.HTTPError('Error accessing {0}: {1:d} {2}'.format(resp.request.url,
-                                                                             resp.status_code,
-                                                                             text))
+            raise requests.HTTPError('Error accessing {0}\n'
+                                     'Server Error ({1:d}: {2})'.format(resp.request.url,
+                                                                        resp.status_code,
+                                                                        text))
         return resp
 
     def _get_metadata(self):
diff --git a/siphon/simplewebservice/acis.py b/siphon/simplewebservice/acis.py
index d4c4d67d..9b6ae607 100644
--- a/siphon/simplewebservice/acis.py
+++ b/siphon/simplewebservice/acis.py
@@ -5,7 +5,7 @@
 
 import requests
 
-from ..http_util import create_http_session
+from ..http_util import session_manager
 
 
 def acis_request(method, params):
@@ -51,7 +51,8 @@ def acis_request(method, params):
     timeout = 300 if method == 'MultiStnData' else 60
 
     try:
-        response = create_http_session().post(base_url + method, json=params, timeout=timeout)
+        response = session_manager.create_session().post(base_url + method, json=params,
+                                                         timeout=timeout)
         return response.json()
     except requests.exceptions.Timeout:
         raise AcisApiException('Connection Timeout')

Better Server Error Handling
When hitting a data server that is down, I receive a seemingly random assortment of inconsistent error messages each time I do so. For example, Java errors, even "too many open file" errors. It would be great to be given a single, consistent "Server temporarily unavailable" error so I know I'm doing nothing wrong!

I've attached an example of the "too many open files" error.
![capture](https://user-images.githubusercontent.com/31324211/38883097-93452324-4231-11e8-8a1d-00fcc490aa63.PNG)

diff --git a/siphon/cdmr/tests/test_ncstream.py b/siphon/cdmr/tests/test_ncstream.py
index 6e02264b..75206ea8 100644
--- a/siphon/cdmr/tests/test_ncstream.py
+++ b/siphon/cdmr/tests/test_ncstream.py
@@ -29,8 +29,8 @@ def get_test_latest_url(query=None):
 @recorder.use_cassette('latest_rap_ncstream_header')
 def get_header_remote():
     """Get a header from a remote data source."""
-    from siphon.http_util import urlopen
-    return urlopen(get_test_latest_url('req=header'))
+    from siphon.http_util import session_manager
+    return session_manager.urlopen(get_test_latest_url('req=header'))
 
 
 @pytest.mark.parametrize('src, result', [(b'\xb6\xe0\x02', 45110), (b'\x17\n\x0b', 23)])
diff --git a/siphon/tests/test_http_util.py b/siphon/tests/test_http_util.py
index 3eebf13d..460d5ab0 100644
--- a/siphon/tests/test_http_util.py
+++ b/siphon/tests/test_http_util.py
@@ -7,8 +7,8 @@ from datetime import datetime, timedelta
 
 import pytest
 
-from siphon.http_util import (create_http_session, DataQuery, HTTPEndPoint, HTTPError,
-                              parse_iso_date, urlopen, utc)
+from siphon.http_util import (DataQuery, HTTPEndPoint, HTTPError,
+                              parse_iso_date, session_manager, utc)
 import siphon.testing
 
 recorder = siphon.testing.get_recorder(__file__)
@@ -17,18 +17,30 @@ recorder = siphon.testing.get_recorder(__file__)
 @recorder.use_cassette('top_thredds_catalog')
 def test_urlopen():
     """Test siphon's urlopen wrapper."""
-    fobj = urlopen('http://thredds-test.unidata.ucar.edu/thredds/catalog.xml')
+    fobj = session_manager.urlopen('http://thredds-test.unidata.ucar.edu/thredds/catalog.xml')
     assert fobj.read(2) == b'<?'
 
 
 @recorder.use_cassette('top_thredds_catalog')
 def test_session():
-    """Test that https sessions contain the proper user agent."""
-    session = create_http_session()
+    """Test that http sessions contain the proper user agent."""
+    session = session_manager.create_session()
     resp = session.get('http://thredds-test.unidata.ucar.edu/thredds/catalog.xml')
     assert resp.request.headers['user-agent'].startswith('Siphon')
 
 
+@recorder.use_cassette('top_thredds_catalog')
+def test_session_options():
+    """Test that http sessions receive proper options."""
+    auth = ('foo', 'bar')
+    session_manager.set_session_options(auth=auth)
+    try:
+        session = session_manager.create_session()
+        assert session.auth == auth
+    finally:
+        session_manager.set_session_options()
+
+
 def test_parse_iso():
     """Test parsing ISO-formatted dates."""
     parsed = parse_iso_date('2015-06-15T12:00:00Z')
diff --git a/siphon/tests/test_ncss_dataset.py b/siphon/tests/test_ncss_dataset.py
index 1b7e3a4f..956f1c5d 100644
--- a/siphon/tests/test_ncss_dataset.py
+++ b/siphon/tests/test_ncss_dataset.py
@@ -6,7 +6,7 @@
 import logging
 import xml.etree.ElementTree as ET
 
-from siphon.http_util import urlopen
+from siphon.http_util import session_manager
 from siphon.ncss_dataset import _Types, NCSSDataset
 from siphon.testing import get_recorder
 
@@ -559,7 +559,7 @@ def test_dataset_elements_full_ncss_station():
     """Test parsing the dataset from a full ncss station page."""
     url = ('http://thredds.ucar.edu/thredds/ncss/nws/synoptic/'
            'ncdecoded/Surface_Synoptic_Point_Data_fc.cdmr/dataset.xml')
-    element = ET.fromstring(urlopen(url).read())
+    element = ET.fromstring(session_manager.urlopen(url).read())
     parsed = NCSSDataset(element)
     assert parsed
 
@@ -570,7 +570,7 @@ def test_dataset_elements_full_ncss_grid():
     url = ('http://thredds.ucar.edu/thredds/ncss/grib/NCEP/GFS/'
            'Global_0p5deg/GFS_Global_0p5deg_20150602_0000.grib2/'
            'dataset.xml')
-    element = ET.fromstring(urlopen(url).read())
+    element = ET.fromstring(session_manager.urlopen(url).read())
     parsed = NCSSDataset(element)
     assert parsed
 
@@ -580,6 +580,6 @@ def test_dataset_parsing_tds5(recwarn):
     """Test parsing the dataset from TDS 5."""
     url = ('http://thredds-test.unidata.ucar.edu/thredds/ncss/grid/casestudies/irma/model/'
            'gfs/GFS_Global_0p5deg_20170903_1200.grib2/dataset.xml')
-    element = ET.fromstring(urlopen(url).read())
+    element = ET.fromstring(session_manager.urlopen(url).read())
     NCSSDataset(element)
     assert len(recwarn) == 0

environment.yml
pip install -e .[dev]
parse_log_pytest
environment.yml
pytest
apt-get update apt-get install -y libhdf5-serial-dev libnetcdf-dev
3.6
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
alabaster @ file:///home/conda/feedstock_root/build_artifacts/alabaster_1673645646525/work
appdirs @ file:///home/conda/feedstock_root/build_artifacts/appdirs_1603108395799/work
argon2-cffi @ file:///home/conda/feedstock_root/build_artifacts/argon2-cffi_1633990451307/work
async_generator @ file:///home/conda/feedstock_root/build_artifacts/async_generator_1722652753231/work
attrs @ file:///home/conda/feedstock_root/build_artifacts/attrs_1671632566681/work
Babel @ file:///home/conda/feedstock_root/build_artifacts/babel_1667688356751/work
backcall @ file:///home/conda/feedstock_root/build_artifacts/backcall_1592338393461/work
backports.functools-lru-cache @ file:///home/conda/feedstock_root/build_artifacts/backports.functools_lru_cache_1702571698061/work
beautifulsoup4 @ file:///home/conda/feedstock_root/build_artifacts/beautifulsoup4_1705564648255/work
bleach @ file:///home/conda/feedstock_root/build_artifacts/bleach_1696630167146/work
brotlipy==0.7.0
Cartopy @ file:///home/conda/feedstock_root/build_artifacts/cartopy_1630680837223/work
certifi==2021.5.30
cffi @ file:///home/conda/feedstock_root/build_artifacts/cffi_1631636256886/work
cftime @ file:///home/conda/feedstock_root/build_artifacts/cftime_1632539733990/work
charset-normalizer @ file:///home/conda/feedstock_root/build_artifacts/charset-normalizer_1661170624537/work
colorama @ file:///home/conda/feedstock_root/build_artifacts/colorama_1655412516417/work
coverage @ file:///home/conda/feedstock_root/build_artifacts/coverage_1633450575846/work
cryptography @ file:///home/conda/feedstock_root/build_artifacts/cryptography_1634230300355/work
cycler @ file:///home/conda/feedstock_root/build_artifacts/cycler_1635519461629/work
decorator @ file:///home/conda/feedstock_root/build_artifacts/decorator_1641555617451/work
defusedxml @ file:///home/conda/feedstock_root/build_artifacts/defusedxml_1615232257335/work
doc8 @ file:///home/conda/feedstock_root/build_artifacts/doc8_1652824562281/work
docutils @ file:///home/conda/feedstock_root/build_artifacts/docutils_1618676244774/work
entrypoints @ file:///home/conda/feedstock_root/build_artifacts/entrypoints_1643888246732/work
flake8 @ file:///home/conda/feedstock_root/build_artifacts/flake8_1659645013175/work
flake8-builtins @ file:///home/conda/feedstock_root/build_artifacts/flake8-builtins_1589815207697/work
flake8-comprehensions @ file:///home/conda/feedstock_root/build_artifacts/flake8-comprehensions_1641851052064/work
flake8-copyright @ file:///home/conda/feedstock_root/build_artifacts/flake8-copyright_1676003148518/work
flake8-docstrings @ file:///home/conda/feedstock_root/build_artifacts/flake8-docstrings_1616176909510/work
flake8-import-order @ file:///home/conda/feedstock_root/build_artifacts/flake8-import-order_1669670271290/work
flake8-mutable==1.2.0
flake8-pep3101==1.3.0
flake8-polyfill==1.0.2
flake8-print @ file:///home/conda/feedstock_root/build_artifacts/flake8-print_1606721773021/work
flake8-quotes @ file:///home/conda/feedstock_root/build_artifacts/flake8-quotes_1707605925191/work
idna @ file:///home/conda/feedstock_root/build_artifacts/idna_1726459485162/work
imagesize @ file:///home/conda/feedstock_root/build_artifacts/imagesize_1656939531508/work
importlib-metadata @ file:///home/conda/feedstock_root/build_artifacts/importlib-metadata_1630267465156/work
importlib-resources @ file:///home/conda/feedstock_root/build_artifacts/importlib_resources_1635615662634/work
iniconfig @ file:///home/conda/feedstock_root/build_artifacts/iniconfig_1603384189793/work
ipykernel @ file:///home/conda/feedstock_root/build_artifacts/ipykernel_1620912934572/work/dist/ipykernel-5.5.5-py3-none-any.whl
ipyparallel==8.2.1
ipython @ file:///home/conda/feedstock_root/build_artifacts/ipython_1609697613279/work
ipython_genutils @ file:///home/conda/feedstock_root/build_artifacts/ipython_genutils_1716278396992/work
ipywidgets @ file:///home/conda/feedstock_root/build_artifacts/ipywidgets_1679421482533/work
jedi @ file:///home/conda/feedstock_root/build_artifacts/jedi_1605054537831/work
Jinja2 @ file:///home/conda/feedstock_root/build_artifacts/jinja2_1636510082894/work
jsonschema @ file:///home/conda/feedstock_root/build_artifacts/jsonschema_1634752161479/work
jupyter @ file:///home/conda/feedstock_root/build_artifacts/jupyter_1696255489086/work
jupyter-client @ file:///home/conda/feedstock_root/build_artifacts/jupyter_client_1642858610849/work
jupyter-console @ file:///home/conda/feedstock_root/build_artifacts/jupyter_console_1676328545892/work
jupyter-core @ file:///home/conda/feedstock_root/build_artifacts/jupyter_core_1631852698933/work
jupyterlab-pygments @ file:///home/conda/feedstock_root/build_artifacts/jupyterlab_pygments_1601375948261/work
jupyterlab-widgets @ file:///home/conda/feedstock_root/build_artifacts/jupyterlab_widgets_1655961217661/work
kiwisolver @ file:///home/conda/feedstock_root/build_artifacts/kiwisolver_1610099771815/work
MarkupSafe @ file:///home/conda/feedstock_root/build_artifacts/markupsafe_1621455668064/work
matplotlib @ file:///home/conda/feedstock_root/build_artifacts/matplotlib-suite_1611858699142/work
mccabe @ file:///home/conda/feedstock_root/build_artifacts/mccabe_1643049622439/work
MetPy @ file:///home/conda/feedstock_root/build_artifacts/metpy_1619715517718/work
mistune @ file:///home/conda/feedstock_root/build_artifacts/mistune_1673904152039/work
more-itertools @ file:///home/conda/feedstock_root/build_artifacts/more-itertools_1690211628840/work
multidict @ file:///home/conda/feedstock_root/build_artifacts/multidict_1633329770033/work
nbclient @ file:///home/conda/feedstock_root/build_artifacts/nbclient_1637327213451/work
nbconvert @ file:///home/conda/feedstock_root/build_artifacts/nbconvert_1605401832871/work
nbformat @ file:///home/conda/feedstock_root/build_artifacts/nbformat_1617383142101/work
nest_asyncio @ file:///home/conda/feedstock_root/build_artifacts/nest-asyncio_1705850609492/work
netCDF4 @ file:///home/conda/feedstock_root/build_artifacts/netcdf4_1633096406418/work
nose==1.3.7
notebook @ file:///home/conda/feedstock_root/build_artifacts/notebook_1616419146127/work
numpy @ file:///home/conda/feedstock_root/build_artifacts/numpy_1626681920064/work
olefile @ file:///home/conda/feedstock_root/build_artifacts/olefile_1602866521163/work
packaging @ file:///home/conda/feedstock_root/build_artifacts/packaging_1637239678211/work
pandas==1.1.5
pandocfilters @ file:///home/conda/feedstock_root/build_artifacts/pandocfilters_1631603243851/work
parso @ file:///home/conda/feedstock_root/build_artifacts/parso_1595548966091/work
pbr @ file:///home/conda/feedstock_root/build_artifacts/pbr_1724777609752/work
pep8-naming @ file:///home/conda/feedstock_root/build_artifacts/pep8-naming_1628397497711/work
pexpect @ file:///home/conda/feedstock_root/build_artifacts/pexpect_1667297516076/work
pickleshare @ file:///home/conda/feedstock_root/build_artifacts/pickleshare_1602536217715/work
Pillow @ file:///home/conda/feedstock_root/build_artifacts/pillow_1630696616009/work
Pint @ file:///home/conda/feedstock_root/build_artifacts/pint_1630435029884/work
pluggy @ file:///home/conda/feedstock_root/build_artifacts/pluggy_1631522669284/work
pooch @ file:///home/conda/feedstock_root/build_artifacts/pooch_1643032624649/work
prometheus-client @ file:///home/conda/feedstock_root/build_artifacts/prometheus_client_1689032443210/work
prompt-toolkit @ file:///home/conda/feedstock_root/build_artifacts/prompt-toolkit_1670414775770/work
protobuf==3.18.0
psutil==7.0.0
ptyprocess @ file:///home/conda/feedstock_root/build_artifacts/ptyprocess_1609419310487/work/dist/ptyprocess-0.7.0-py2.py3-none-any.whl
py @ file:///home/conda/feedstock_root/build_artifacts/py_1636301881863/work
pycodestyle @ file:///home/conda/feedstock_root/build_artifacts/pycodestyle_1659638152915/work
pycparser @ file:///home/conda/feedstock_root/build_artifacts/pycparser_1636257122734/work
pydocstyle @ file:///home/conda/feedstock_root/build_artifacts/pydocstyle_1672787369895/work
pyflakes @ file:///home/conda/feedstock_root/build_artifacts/pyflakes_1659210156976/work
Pygments @ file:///home/conda/feedstock_root/build_artifacts/pygments_1672682006896/work
pyOpenSSL @ file:///home/conda/feedstock_root/build_artifacts/pyopenssl_1663846997386/work
pyparsing @ file:///home/conda/feedstock_root/build_artifacts/pyparsing_1724616129934/work
pyproj @ file:///home/conda/feedstock_root/build_artifacts/pyproj_1614924419699/work
PyQt5==5.12.3
PyQt5_sip==4.19.18
PyQtChart==5.12
PyQtWebEngine==5.12.1
pyrsistent @ file:///home/conda/feedstock_root/build_artifacts/pyrsistent_1610146795286/work
pyshp @ file:///home/conda/feedstock_root/build_artifacts/pyshp_1659002966020/work
PySocks @ file:///home/conda/feedstock_root/build_artifacts/pysocks_1610291458349/work
pytest==6.2.5
pytest-cov @ file:///home/conda/feedstock_root/build_artifacts/pytest-cov_1664412836798/work
pytest-flake8 @ file:///home/conda/feedstock_root/build_artifacts/pytest-flake8_1646767752166/work
pytest-runner @ file:///home/conda/feedstock_root/build_artifacts/pytest-runner_1646127837850/work
python-dateutil @ file:///home/conda/feedstock_root/build_artifacts/python-dateutil_1626286286081/work
pytz @ file:///home/conda/feedstock_root/build_artifacts/pytz_1693930252784/work
PyYAML==5.4.1
pyzmq @ file:///home/conda/feedstock_root/build_artifacts/pyzmq_1631793305981/work
qtconsole @ file:///home/conda/feedstock_root/build_artifacts/qtconsole-base_1640876679830/work
QtPy @ file:///home/conda/feedstock_root/build_artifacts/qtpy_1643828301492/work
requests @ file:///home/conda/feedstock_root/build_artifacts/requests_1656534056640/work
restructuredtext-lint @ file:///home/conda/feedstock_root/build_artifacts/restructuredtext_lint_1645724685739/work
scipy @ file:///home/conda/feedstock_root/build_artifacts/scipy_1629411471490/work
Send2Trash @ file:///home/conda/feedstock_root/build_artifacts/send2trash_1682601222253/work
Shapely @ file:///home/conda/feedstock_root/build_artifacts/shapely_1628205367507/work
-e git+https://github.com/Unidata/siphon.git@f0571050bf34460038f0841954ea7c9b828bccc5#egg=siphon
six @ file:///home/conda/feedstock_root/build_artifacts/six_1620240208055/work
snowballstemmer @ file:///home/conda/feedstock_root/build_artifacts/snowballstemmer_1637143057757/work
soupsieve @ file:///home/conda/feedstock_root/build_artifacts/soupsieve_1658207591808/work
Sphinx @ file:///home/conda/feedstock_root/build_artifacts/sphinx_1658872348413/work
sphinx-gallery @ file:///home/conda/feedstock_root/build_artifacts/sphinx-gallery_1700542355088/work
sphinxcontrib-applehelp @ file:///home/conda/feedstock_root/build_artifacts/sphinxcontrib-applehelp_1674487779667/work
sphinxcontrib-devhelp==1.0.2
sphinxcontrib-htmlhelp @ file:///home/conda/feedstock_root/build_artifacts/sphinxcontrib-htmlhelp_1675256494457/work
sphinxcontrib-jsmath @ file:///home/conda/feedstock_root/build_artifacts/sphinxcontrib-jsmath_1691604704163/work
sphinxcontrib-qthelp==1.0.3
sphinxcontrib-serializinghtml @ file:///home/conda/feedstock_root/build_artifacts/sphinxcontrib-serializinghtml_1649380998999/work
stevedore @ file:///home/conda/feedstock_root/build_artifacts/stevedore_1629395095970/work
terminado @ file:///home/conda/feedstock_root/build_artifacts/terminado_1631128154882/work
testpath @ file:///home/conda/feedstock_root/build_artifacts/testpath_1645693042223/work
toml @ file:///home/conda/feedstock_root/build_artifacts/toml_1604308577558/work
tomli @ file:///home/conda/feedstock_root/build_artifacts/tomli_1635181214134/work
tornado @ file:///home/conda/feedstock_root/build_artifacts/tornado_1610094701020/work
tqdm==4.64.1
traitlets @ file:///home/conda/feedstock_root/build_artifacts/traitlets_1631041982274/work
typing_extensions @ file:///home/conda/feedstock_root/build_artifacts/typing_extensions_1644850595256/work
urllib3 @ file:///home/conda/feedstock_root/build_artifacts/urllib3_1678635778344/work
vcrpy @ file:///home/conda/feedstock_root/build_artifacts/vcrpy_1602284745577/work
wcwidth @ file:///home/conda/feedstock_root/build_artifacts/wcwidth_1699959196938/work
webencodings @ file:///home/conda/feedstock_root/build_artifacts/webencodings_1694681268211/work
widgetsnbextension @ file:///home/conda/feedstock_root/build_artifacts/widgetsnbextension_1655939017940/work
wrapt @ file:///home/conda/feedstock_root/build_artifacts/wrapt_1633440474617/work
xarray @ file:///home/conda/feedstock_root/build_artifacts/xarray_1621474818012/work
yarl @ file:///home/conda/feedstock_root/build_artifacts/yarl_1625232870338/work
zipp @ file:///home/conda/feedstock_root/build_artifacts/zipp_1633302054558/work

name: siphon
channels:
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=conda_forge
  - _openmp_mutex=4.5=2_gnu
  - alabaster=0.7.13=pyhd8ed1ab_0
  - alsa-lib=1.2.7.2=h166bdaf_0
  - appdirs=1.4.4=pyh9f0ad1d_0
  - argon2-cffi=21.1.0=py36h8f6f2f9_0
  - async_generator=1.10=pyhd8ed1ab_1
  - attrs=22.2.0=pyh71513ae_0
  - babel=2.11.0=pyhd8ed1ab_0
  - backcall=0.2.0=pyh9f0ad1d_0
  - backports=1.0=pyhd8ed1ab_4
  - backports.functools_lru_cache=2.0.0=pyhd8ed1ab_0
  - beautifulsoup4=4.12.3=pyha770c72_0
  - bleach=6.1.0=pyhd8ed1ab_0
  - brotlipy=0.7.0=py36h8f6f2f9_1001
  - bzip2=1.0.8=h4bc722e_7
  - c-ares=1.34.4=hb9d3cd8_0
  - ca-certificates=2025.1.31=hbcca054_0
  - cartopy=0.19.0.post1=py36hbcbf2fa_1
  - certifi=2021.5.30=py36h5fab9bb_0
  - cffi=1.14.6=py36hd8eec40_1
  - cftime=1.5.1=py36he33b4a0_0
  - charset-normalizer=2.1.1=pyhd8ed1ab_0
  - colorama=0.4.5=pyhd8ed1ab_0
  - coverage=6.0=py36h8f6f2f9_1
  - cryptography=35.0.0=py36hb60f036_0
  - curl=7.87.0=h6312ad2_0
  - cycler=0.11.0=pyhd8ed1ab_0
  - dbus=1.13.6=h5008d03_3
  - decorator=5.1.1=pyhd8ed1ab_0
  - defusedxml=0.7.1=pyhd8ed1ab_0
  - doc8=0.11.2=pyhd8ed1ab_0
  - docutils=0.17.1=py36h5fab9bb_0
  - entrypoints=0.4=pyhd8ed1ab_0
  - expat=2.6.4=h5888daf_0
  - flake8=5.0.4=pyhd8ed1ab_0
  - flake8-builtins=1.5.3=pyh9f0ad1d_0
  - flake8-comprehensions=3.8.0=pyhd8ed1ab_0
  - flake8-copyright=0.2.4=pyhd8ed1ab_0
  - flake8-docstrings=1.6.0=pyhd8ed1ab_0
  - flake8-import-order=0.18.2=pyhd8ed1ab_0
  - flake8-mutable=1.2.0=py_1
  - flake8-pep3101=1.3.0=py_0
  - flake8-polyfill=1.0.2=py_0
  - flake8-print=4.0.0=pyhd8ed1ab_0
  - flake8-quotes=3.4.0=pyhd8ed1ab_0
  - font-ttf-dejavu-sans-mono=2.37=hab24e00_0
  - font-ttf-inconsolata=3.000=h77eed37_0
  - font-ttf-source-code-pro=2.038=h77eed37_0
  - font-ttf-ubuntu=0.83=h77eed37_3
  - fontconfig=2.14.2=h14ed4e7_0
  - fonts-conda-ecosystem=1=0
  - fonts-conda-forge=1=0
  - freetype=2.12.1=h267a509_2
  - geos=3.9.1=h9c3ff4c_2
  - gettext=0.23.1=h5888daf_0
  - gettext-tools=0.23.1=h5888daf_0
  - glib=2.80.2=hf974151_0
  - glib-tools=2.80.2=hb6ce0ca_0
  - gst-plugins-base=1.20.3=h57caac4_2
  - gstreamer=1.20.3=hd4edc92_2
  - hdf4=4.2.15=h9772cbc_5
  - hdf5=1.12.1=nompi_h2386368_104
  - icu=69.1=h9c3ff4c_0
  - idna=3.10=pyhd8ed1ab_0
  - imagesize=1.4.1=pyhd8ed1ab_0
  - importlib-metadata=4.8.1=py36h5fab9bb_0
  - importlib_metadata=4.8.1=hd8ed1ab_1
  - importlib_resources=5.4.0=pyhd8ed1ab_0
  - iniconfig=1.1.1=pyh9f0ad1d_0
  - ipykernel=5.5.5=py36hcb3619a_0
  - ipython=7.16.1=py36he448a4c_2
  - ipython_genutils=0.2.0=pyhd8ed1ab_1
  - ipywidgets=7.7.4=pyhd8ed1ab_0
  - jedi=0.17.2=py36h5fab9bb_1
  - jinja2=3.0.3=pyhd8ed1ab_0
  - jpeg=9e=h0b41bf4_3
  - jsonschema=4.1.2=pyhd8ed1ab_0
  - jupyter=1.0.0=pyhd8ed1ab_10
  - jupyter_client=7.1.2=pyhd8ed1ab_0
  - jupyter_console=6.5.1=pyhd8ed1ab_0
  - jupyter_core=4.8.1=py36h5fab9bb_0
  - jupyterlab_pygments=0.1.2=pyh9f0ad1d_0
  - jupyterlab_widgets=1.1.1=pyhd8ed1ab_0
  - keyutils=1.6.1=h166bdaf_0
  - kiwisolver=1.3.1=py36h605e78d_1
  - krb5=1.20.1=hf9c8cef_0
  - lcms2=2.12=hddcbb42_0
  - ld_impl_linux-64=2.43=h712a8e2_4
  - lerc=3.0=h9c3ff4c_0
  - libasprintf=0.23.1=h8e693c7_0
  - libasprintf-devel=0.23.1=h8e693c7_0
  - libblas=3.9.0=20_linux64_openblas
  - libcblas=3.9.0=20_linux64_openblas
  - libclang=13.0.1=default_hb5137d0_10
  - libcurl=7.87.0=h6312ad2_0
  - libdeflate=1.10=h7f98852_0
  - libedit=3.1.20250104=pl5321h7949ede_0
  - libev=4.33=hd590300_2
  - libevent=2.1.10=h9b69904_4
  - libexpat=2.6.4=h5888daf_0
  - libffi=3.4.6=h2dba641_0
  - libgcc=14.2.0=h767d61c_2
  - libgcc-ng=14.2.0=h69a702a_2
  - libgettextpo=0.23.1=h5888daf_0
  - libgettextpo-devel=0.23.1=h5888daf_0
  - libgfortran=14.2.0=h69a702a_2
  - libgfortran-ng=14.2.0=h69a702a_2
  - libgfortran5=14.2.0=hf1ad2bd_2
  - libglib=2.80.2=hf974151_0
  - libgomp=14.2.0=h767d61c_2
  - libiconv=1.18=h4ce23a2_1
  - liblapack=3.9.0=20_linux64_openblas
  - libllvm13=13.0.1=hf817b99_2
  - liblzma=5.6.4=hb9d3cd8_0
  - liblzma-devel=5.6.4=hb9d3cd8_0
  - libnetcdf=4.8.1=nompi_h329d8a1_102
  - libnghttp2=1.51.0=hdcd2b5c_0
  - libnsl=2.0.1=hd590300_0
  - libogg=1.3.5=h4ab18f5_0
  - libopenblas=0.3.25=pthreads_h413a1c8_0
  - libopus=1.3.1=h7f98852_1
  - libpng=1.6.43=h2797004_0
  - libpq=14.5=h2baec63_5
  - libprotobuf=3.18.0=h780b84a_1
  - libsodium=1.0.18=h36c2ea0_1
  - libsqlite=3.46.0=hde9e2c9_0
  - libssh2=1.10.0=haa6b8db_3
  - libstdcxx=14.2.0=h8f9b012_2
  - libstdcxx-ng=14.2.0=h4852527_2
  - libtiff=4.3.0=h0fcbabc_4
  - libuuid=2.38.1=h0b41bf4_0
  - libvorbis=1.3.7=h9c3ff4c_0
  - libwebp-base=1.5.0=h851e524_0
  - libxcb=1.13=h7f98852_1004
  - libxkbcommon=1.0.3=he3ba5ed_0
  - libxml2=2.9.14=haae042b_4
  - libzip=1.9.2=hc869a4a_1
  - libzlib=1.2.13=h4ab18f5_6
  - markupsafe=2.0.1=py36h8f6f2f9_0
  - matplotlib=3.3.4=py36h5fab9bb_0
  - matplotlib-base=3.3.4=py36hd391965_0
  - mccabe=0.7.0=pyhd8ed1ab_0
  - metpy=1.0.1=pyhd8ed1ab_0
  - mistune=0.8.4=pyh1a96a4e_1006
  - more-itertools=10.0.0=pyhd8ed1ab_0
  - multidict=5.2.0=py36h8f6f2f9_0
  - mysql-common=8.0.32=h14678bc_0
  - mysql-libs=8.0.32=h54cf53e_0
  - nbclient=0.5.9=pyhd8ed1ab_0
  - nbconvert=6.0.7=py36h5fab9bb_3
  - nbformat=5.1.3=pyhd8ed1ab_0
  - ncurses=6.5=h2d0b736_3
  - nest-asyncio=1.6.0=pyhd8ed1ab_0
  - netcdf4=1.5.7=nompi_py36h775750b_103
  - notebook=6.3.0=py36h5fab9bb_0
  - nspr=4.36=h5888daf_0
  - nss=3.100=hca3bf56_0
  - numpy=1.19.5=py36hfc0c790_2
  - olefile=0.46=pyh9f0ad1d_1
  - openjpeg=2.5.0=h7d73246_0
  - openssl=1.1.1w=hd590300_0
  - packaging=21.3=pyhd8ed1ab_0
  - pandas=1.1.5=py36h284efc9_0
  - pandoc=2.19.2=h32600fe_2
  - pandocfilters=1.5.0=pyhd8ed1ab_0
  - parso=0.7.1=pyh9f0ad1d_0
  - pbr=6.1.0=pyhd8ed1ab_0
  - pcre2=10.43=hcad00b1_0
  - pep8-naming=0.12.1=pyhd8ed1ab_0
  - pexpect=4.8.0=pyh1a96a4e_2
  - pickleshare=0.7.5=py_1003
  - pillow=8.3.2=py36h676a545_0
  - pint=0.17=pyhd8ed1ab_1
  - pip=21.3.1=pyhd8ed1ab_0
  - pluggy=1.0.0=py36h5fab9bb_1
  - pooch=1.6.0=pyhd8ed1ab_0
  - proj=7.2.0=h277dcde_2
  - prometheus_client=0.17.1=pyhd8ed1ab_0
  - prompt-toolkit=3.0.36=pyha770c72_0
  - prompt_toolkit=3.0.36=hd8ed1ab_0
  - protobuf=3.18.0=py36hc4f0c31_0
  - pthread-stubs=0.4=hb9d3cd8_1002
  - ptyprocess=0.7.0=pyhd3deb0d_0
  - py=1.11.0=pyh6c4a22f_0
  - pycodestyle=2.9.1=pyhd8ed1ab_0
  - pycparser=2.21=pyhd8ed1ab_0
  - pydocstyle=6.2.0=pyhd8ed1ab_0
  - pyflakes=2.5.0=pyhd8ed1ab_0
  - pygments=2.14.0=pyhd8ed1ab_0
  - pyopenssl=22.0.0=pyhd8ed1ab_1
  - pyparsing=3.1.4=pyhd8ed1ab_0
  - pyproj=3.0.1=py36h13f0598_0
  - pyqt=5.12.3=py36h5fab9bb_7
  - pyqt-impl=5.12.3=py36h7ec31b9_7
  - pyqt5-sip=4.19.18=py36hc4f0c31_7
  - pyqtchart=5.12=py36h7ec31b9_7
  - pyqtwebengine=5.12.1=py36h7ec31b9_7
  - pyrsistent=0.17.3=py36h8f6f2f9_2
  - pyshp=2.3.1=pyhd8ed1ab_0
  - pysocks=1.7.1=py36h5fab9bb_3
  - pytest=6.2.5=py36h5fab9bb_0
  - pytest-cov=4.0.0=pyhd8ed1ab_0
  - pytest-flake8=1.1.0=pyhd8ed1ab_0
  - pytest-runner=5.3.2=pyhd8ed1ab_0
  - python=3.6.15=hb7a2778_0_cpython
  - python-dateutil=2.8.2=pyhd8ed1ab_0
  - python_abi=3.6=2_cp36m
  - pytz=2023.3.post1=pyhd8ed1ab_0
  - pyyaml=5.4.1=py36h8f6f2f9_1
  - pyzmq=22.3.0=py36h7068817_0
  - qt=5.12.9=h1304e3e_6
  - qtconsole-base=5.2.2=pyhd8ed1ab_1
  - qtpy=2.0.1=pyhd8ed1ab_0
  - readline=8.2=h8c095d6_2
  - requests=2.28.1=pyhd8ed1ab_0
  - restructuredtext_lint=1.4.0=pyhd8ed1ab_0
  - scipy=1.5.3=py36h81d768a_1
  - send2trash=1.8.2=pyh41d4057_0
  - setuptools=58.0.4=py36h5fab9bb_2
  - shapely=1.7.1=py36hff28ebb_5
  - six=1.16.0=pyh6c4a22f_0
  - snowballstemmer=2.2.0=pyhd8ed1ab_0
  - soupsieve=2.3.2.post1=pyhd8ed1ab_0
  - sphinx=5.1.1=pyh6c4a22f_0
  - sphinx-gallery=0.15.0=pyhd8ed1ab_0
  - sphinxcontrib-applehelp=1.0.4=pyhd8ed1ab_0
  - sphinxcontrib-devhelp=1.0.2=py_0
  - sphinxcontrib-htmlhelp=2.0.1=pyhd8ed1ab_0
  - sphinxcontrib-jsmath=1.0.1=pyhd8ed1ab_0
  - sphinxcontrib-qthelp=1.0.3=py_0
  - sphinxcontrib-serializinghtml=1.1.5=pyhd8ed1ab_2
  - sqlite=3.46.0=h6d4b2fc_0
  - stevedore=3.4.0=py36h5fab9bb_0
  - terminado=0.12.1=py36h5fab9bb_0
  - testpath=0.6.0=pyhd8ed1ab_0
  - tk=8.6.13=noxft_h4845f30_101
  - toml=0.10.2=pyhd8ed1ab_0
  - tomli=1.2.2=pyhd8ed1ab_0
  - tornado=6.1=py36h8f6f2f9_1
  - traitlets=4.3.3=pyhd8ed1ab_2
  - typing-extensions=4.1.1=hd8ed1ab_0
  - typing_extensions=4.1.1=pyha770c72_0
  - urllib3=1.26.15=pyhd8ed1ab_0
  - vcrpy=4.1.1=py_0
  - wcwidth=0.2.10=pyhd8ed1ab_0
  - webencodings=0.5.1=pyhd8ed1ab_2
  - wheel=0.37.1=pyhd8ed1ab_0
  - widgetsnbextension=3.6.1=pyha770c72_0
  - wrapt=1.13.1=py36h8f6f2f9_0
  - xarray=0.18.2=pyhd8ed1ab_0
  - xorg-libxau=1.0.12=hb9d3cd8_0
  - xorg-libxdmcp=1.1.5=hb9d3cd8_0
  - xz=5.6.4=hbcc6ac9_0
  - xz-gpl-tools=5.6.4=hbcc6ac9_0
  - xz-tools=5.6.4=hb9d3cd8_0
  - yaml=0.2.5=h7f98852_2
  - yarl=1.6.3=py36h8f6f2f9_2
  - zeromq=4.3.5=h59595ed_1
  - zipp=3.6.0=pyhd8ed1ab_0
  - zlib=1.2.13=h4ab18f5_6
  - zstd=1.5.6=ha6fb4c9_0
  - pip:
      - ipyparallel==8.2.1
      - nose==1.3.7
      - psutil==7.0.0
      - tqdm==4.64.1
prefix: /opt/conda/envs/siphon

siphon/cdmr/tests/test_ncstream.py::test_read_var_int[\xb6\xe0\x02-45110] siphon/cdmr/tests/test_ncstream.py::test_read_var_int[\x17\n\x0b-23] siphon/cdmr/tests/test_ncstream.py::test_header_message_def siphon/cdmr/tests/test_ncstream.py::test_local_data siphon/cdmr/tests/test_ncstream.py::test_bad_magic siphon/tests/test_http_util.py::test_urlopen siphon/tests/test_http_util.py::test_session siphon/tests/test_http_util.py::test_session_options siphon/tests/test_http_util.py::test_parse_iso siphon/tests/test_http_util.py::test_data_query_basic siphon/tests/test_http_util.py::test_data_query_repeated_vars siphon/tests/test_http_util.py::test_data_query_time_reset siphon/tests/test_http_util.py::test_data_query_time_reset2 siphon/tests/test_http_util.py::test_data_query_time_reset3 siphon/tests/test_http_util.py::test_data_query_time_format siphon/tests/test_http_util.py::test_data_query_spatial_reset siphon/tests/test_http_util.py::test_data_query_spatial_reset2 siphon/tests/test_http_util.py::test_data_query_iter siphon/tests/test_http_util.py::test_data_query_items siphon/tests/test_http_util.py::test_data_query_add siphon/tests/test_http_util.py::test_http_error_no_header siphon/tests/test_http_util.py::TestEndPoint::test_basic siphon/tests/test_http_util.py::TestEndPoint::test_trailing_slash siphon/tests/test_http_util.py::TestEndPoint::test_query siphon/tests/test_http_util.py::TestEndPoint::test_get_error siphon/tests/test_http_util.py::TestEndPoint::test_url_path siphon/tests/test_ncss_dataset.py::TestSimpleTypes::test_attribute_byte siphon/tests/test_ncss_dataset.py::TestSimpleTypes::test_attribute_invalid_byte siphon/tests/test_ncss_dataset.py::TestSimpleTypes::test_attribute_short siphon/tests/test_ncss_dataset.py::TestSimpleTypes::test_attribute_invalid_short siphon/tests/test_ncss_dataset.py::TestSimpleTypes::test_attribute_int siphon/tests/test_ncss_dataset.py::TestSimpleTypes::test_attribute_invalid_int siphon/tests/test_ncss_dataset.py::TestSimpleTypes::test_attribute_long siphon/tests/test_ncss_dataset.py::TestSimpleTypes::test_attribute_invalid_long siphon/tests/test_ncss_dataset.py::TestSimpleTypes::test_attribute_float siphon/tests/test_ncss_dataset.py::TestSimpleTypes::test_attribute_invalid_float siphon/tests/test_ncss_dataset.py::TestSimpleTypes::test_attribute_float_nan siphon/tests/test_ncss_dataset.py::TestSimpleTypes::test_attribute_double siphon/tests/test_ncss_dataset.py::TestSimpleTypes::test_attribute_invalid_double siphon/tests/test_ncss_dataset.py::TestSimpleTypes::test_attribute_double_nan siphon/tests/test_ncss_dataset.py::TestSimpleTypes::test_attribute_string_implicit siphon/tests/test_ncss_dataset.py::TestSimpleTypes::test_attribute_string_explicit siphon/tests/test_ncss_dataset.py::TestSimpleTypes::test_attribute_boolean_true siphon/tests/test_ncss_dataset.py::TestSimpleTypes::test_attribute_boolean_false siphon/tests/test_ncss_dataset.py::TestSimpleTypes::test_attribute_boolean_invalid siphon/tests/test_ncss_dataset.py::TestSimpleTypes::test_value_1 siphon/tests/test_ncss_dataset.py::TestSimpleTypes::test_value_2 siphon/tests/test_ncss_dataset.py::TestSimpleTypes::test_value_3 siphon/tests/test_ncss_dataset.py::TestSimpleTypes::test_value_4 siphon/tests/test_ncss_dataset.py::TestSimpleTypes::test_value_range_inc0 siphon/tests/test_ncss_dataset.py::TestSimpleTypes::test_projection_box siphon/tests/test_ncss_dataset.py::TestSimpleTypes::test_axis_ref siphon/tests/test_ncss_dataset.py::TestSimpleTypes::test_coord_trans_ref siphon/tests/test_ncss_dataset.py::TestSimpleTypes::test_grid siphon/tests/test_ncss_dataset.py::TestSimpleTypes::test_parameter siphon/tests/test_ncss_dataset.py::TestSimpleTypes::test_feature_type siphon/tests/test_ncss_dataset.py::TestSimpleTypes::test_variable siphon/tests/test_ncss_dataset.py::test_dataset_elements_axis siphon/tests/test_ncss_dataset.py::test_dataset_elements_grid_set siphon/tests/test_ncss_dataset.py::test_dataset_elements_coord_transform_valid siphon/tests/test_ncss_dataset.py::test_dataset_elements_lat_lon_box siphon/tests/test_ncss_dataset.py::test_dataset_elements_time_span siphon/tests/test_ncss_dataset.py::test_dataset_elements_accept_list siphon/tests/test_ncss_dataset.py::test_dataset_elements_station_accept_list siphon/tests/test_ncss_dataset.py::test_dataset_elements_full_ncss_station siphon/tests/test_ncss_dataset.py::test_dataset_elements_full_ncss_grid siphon/tests/test_ncss_dataset.py::test_dataset_parsing_tds5
siphon/simplewebservice/acis.py examples/Basic_Usage.py siphon/catalog.py siphon/http_util.py environment.yml
siphon/simplewebservice/acis.py examples/Basic_Usage.py siphon/catalog.py siphon/http_util.py environment.yml