diff --git a/docs/source/glossary.rst b/docs/source/glossary.rst
index 857b617..cb73968 100644
--- a/docs/source/glossary.rst
+++ b/docs/source/glossary.rst
@@ -14,8 +14,8 @@ Glossary
         format of the files is unchanged in this case, but may be decompressed.
 
     Catalog
-        A collection of entries, each of which corresponds to a specific :term:`Data-set`. Within Intake, a catalog is
-        most commonly defined in a :term:`YAML` file, but there are other possibilities, such as connecting to an Intake
+        A collection of entries, each of which corresponds to a specific :term:`Data-set`. Within these docs, a catalog is
+        most commonly defined in a :term:`YAML` file, for simplicity, but there are other possibilities, such as connecting to an Intake
         server or another third-party data service, like a SQL database. Thus, catalogs form a hierarchy: any
         catalog can contain other, nested catalogs.
 
diff --git a/docs/source/persisting.rst b/docs/source/persisting.rst
index 47b092f..0d2ce3c 100644
--- a/docs/source/persisting.rst
+++ b/docs/source/persisting.rst
@@ -30,7 +30,7 @@ optional packages to be installed.
 
 Example::
 
-    cat = intake.load_catalog('mycat.yaml')  # load a remote cat
+    cat = intake.open_catalog('mycat.yaml')  # load a remote cat
     source = cat.csvsource()  # source pointing to remote data
     source.persist()
 
@@ -40,7 +40,7 @@ To control whether a catalog will automatically give you the persisted version o
 source in this way using the argument ``persist_mode``, e.g., to ignore locally
 persisted versions, you could have done::
 
-    cat = intake.load_catalog('mycat.yaml', persist_mode='never')
+    cat = intake.open_catalog('mycat.yaml', persist_mode='never')
     or
     source = cat.csvsource(persist_mode='never')
 
diff --git a/docs/source/quickstart.rst b/docs/source/quickstart.rst
index 57068cf..4aa4538 100644
--- a/docs/source/quickstart.rst
+++ b/docs/source/quickstart.rst
@@ -110,12 +110,15 @@ working with Dask collections (Bag, Array or Data-frames).
 Opening a Catalog
 -----------------
 
-It is often useful to move the descriptions of data sources out of your code and into a specification
-file that can be
-reused and shared with other projects and people.  Intake calls this a
-":term:`Catalog file`", which contains
-a list of named
-entries describing how to load data sources.  The ``intake example`` command, above, created a catalog file
+A :term:`Catalog` is a collection of data sources, with the type and arguments prescribed for each, and
+arbitrary metadata about each source.
+In the simplest case, a catalog can be described by a file in YAML format, a
+":term:`Catalog file`". In real usage, catalogues can be defined in a number of ways, such as remote
+ files, by
+connecting to a third-party data service (e.g., SQL server) or through an Intake :term:`Server` protocol, which
+can implement any number of ways to search and deliver data sources.
+
+The ``intake example`` command, above, created a catalog file
 with the following :term:`YAML`-syntax content:
 
 .. code-block:: yaml
@@ -209,6 +212,7 @@ called ``intake.cat``.
 Using the GUI
 -------------
 
-A graphical data browser is available in the Jupyter notebook environment. It will show the
+A graphical data browser is available in the Jupyter notebook environment or standalone web-server.
+It will show the
 contents of any installed catalogs, plus allows for selecting local and remote catalogs,
 to browse and select entries from these. See :doc:`gui`.
diff --git a/intake/__init__.py b/intake/__init__.py
index eaf777e..27850eb 100644
--- a/intake/__init__.py
+++ b/intake/__init__.py
@@ -8,13 +8,14 @@
 import re
 import logging
 import warnings
+import sys
 
 from ._version import get_versions
 __version__ = get_versions()['version']
 del get_versions
 from . import source
 from .source.base import Schema, DataSource
-from .catalog.base import Catalog, RemoteCatalog
+from .catalog.base import RemoteCatalog
 from .catalog import local
 from .catalog.default import load_combo_catalog
 from .catalog.local import MergedCatalog, EntrypointsCatalog
@@ -30,6 +31,13 @@ for name, driver in autodiscover().items():
     register_driver(name, driver)
 
 logger = logging.getLogger('intake')
+if sys.version_info >= (3, 7):
+    def __getattr__(attr):
+        if attr == 'Catalog':
+            from .catalog.base import Catalog
+            warnings.warn('deprecation: intake.Catalog now references the base class intake.catalog.base.Catalog\n '
+                          'If you want to open a generic URL, you should use intake.open_catalog')
+            return Catalog
 
 
 def make_open_functions():
@@ -153,5 +161,4 @@ def open_catalog(uri=None, **kwargs):
     return registry[driver](uri, **kwargs)
 
 
-Catalog = open_catalog
 gui = InstanceMaker()
diff --git a/intake/cli/client/subcommands/describe.py b/intake/cli/client/subcommands/describe.py
index ce2b342..0b279ff 100644
--- a/intake/cli/client/subcommands/describe.py
+++ b/intake/cli/client/subcommands/describe.py
@@ -20,7 +20,7 @@ log = logging.getLogger(__name__)
 # External imports
 
 # Intake imports
-from intake import Catalog
+from intake import open_catalog
 from intake.cli.util import print_entry_info, Subcommand
 
 #-----------------------------------------------------------------------------
@@ -39,5 +39,5 @@ class Describe(Subcommand):
         self.parser.add_argument('name', metavar='NAME', type=str, help='Catalog name')
 
     def invoke(self, args):
-        catalog = Catalog(args.uri)
+        catalog = open_catalog(args.uri)
         print_entry_info(catalog, args.name)
diff --git a/intake/cli/client/subcommands/discover.py b/intake/cli/client/subcommands/discover.py
index df06bfa..7625dd4 100644
--- a/intake/cli/client/subcommands/discover.py
+++ b/intake/cli/client/subcommands/discover.py
@@ -20,7 +20,7 @@ log = logging.getLogger(__name__)
 # External imports
 
 # Intake imports
-from intake import Catalog
+from intake import open_catalog
 from intake.cli.util import Subcommand
 
 #-----------------------------------------------------------------------------
@@ -39,6 +39,6 @@ class Discover(Subcommand):
         self.parser.add_argument('name', metavar='NAME', type=str, help='Catalog name')
 
     def invoke(self, args):
-        catalog = Catalog(args.uri)
+        catalog = open_catalog(args.uri)
         with catalog[args.name].get() as f:
             print(f.discover())
diff --git a/intake/cli/client/subcommands/exists.py b/intake/cli/client/subcommands/exists.py
index 632f32b..b6279fb 100644
--- a/intake/cli/client/subcommands/exists.py
+++ b/intake/cli/client/subcommands/exists.py
@@ -20,7 +20,7 @@ log = logging.getLogger(__name__)
 # External imports
 
 # Intake imports
-from intake import Catalog
+from intake import open_catalog
 from intake.cli.util import Subcommand
 
 #-----------------------------------------------------------------------------
@@ -39,5 +39,5 @@ class Exists(Subcommand):
         self.parser.add_argument('name', metavar='NAME', type=str, help='Catalog name')
 
     def invoke(self, args):
-        catalog = Catalog(args.uri)
+        catalog = open_catalog(args.uri)
         print(args.name in catalog)
diff --git a/intake/cli/client/subcommands/get.py b/intake/cli/client/subcommands/get.py
index 42f6a09..5b8dc19 100644
--- a/intake/cli/client/subcommands/get.py
+++ b/intake/cli/client/subcommands/get.py
@@ -20,7 +20,7 @@ log = logging.getLogger(__name__)
 # External imports
 
 # Intake imports
-from intake import Catalog
+from intake import open_catalog
 from intake.cli.util import Subcommand
 
 #-----------------------------------------------------------------------------
@@ -39,6 +39,6 @@ class Get(Subcommand):
         self.parser.add_argument('name', metavar='NAME', type=str, help='Catalog name')
 
     def invoke(self, args):
-        catalog = Catalog(args.uri)
+        catalog = open_catalog(args.uri)
         with catalog[args.name].get() as f:
             print(f.read())
diff --git a/intake/cli/client/subcommands/list.py b/intake/cli/client/subcommands/list.py
index 420d211..387eb8b 100644
--- a/intake/cli/client/subcommands/list.py
+++ b/intake/cli/client/subcommands/list.py
@@ -20,7 +20,7 @@ log = logging.getLogger(__name__)
 # External imports
 
 # Intake imports
-from intake import Catalog
+from intake import open_catalog
 from intake.cli.util import print_entry_info, Subcommand
 
 #-----------------------------------------------------------------------------
@@ -39,7 +39,7 @@ class List(Subcommand):
         self.parser.add_argument('uri', metavar='URI', type=str, help='Catalog URI')
 
     def invoke(self, args):
-        catalog = Catalog(args.uri)
+        catalog = open_catalog(args.uri)
         for entry in list(catalog):
             if args.full:
                 print_entry_info(catalog, entry)
diff --git a/intake/cli/client/subcommands/precache.py b/intake/cli/client/subcommands/precache.py
index 2078e0f..6d53df2 100644
--- a/intake/cli/client/subcommands/precache.py
+++ b/intake/cli/client/subcommands/precache.py
@@ -20,7 +20,7 @@ log = logging.getLogger(__name__)
 # External imports
 
 # Intake imports
-from intake import Catalog
+from intake import open_catalog
 from intake.cli.util import Subcommand
 
 #-----------------------------------------------------------------------------
@@ -38,7 +38,7 @@ class Precache(Subcommand):
         self.parser.add_argument('uri', metavar='URI', type=str, help='Catalog URI')
 
     def invoke(self, args):
-        catalog = Catalog(args.uri)
+        catalog = open_catalog(args.uri)
         for entry in list(catalog):
             s = catalog[entry]()
             if s.cache:

Unify catalog read
At the moment there is a `intake.Catalog` alias for `intake.open_catalog` and there is also `intake.load_catalog`. It'd be nice to at least consolidate around one approach in the docs. Additionally, it'd be nice to get rid of the top level `Catalog` since it is confusing that it is not a class.
diff --git a/intake/catalog/tests/conftest.py b/intake/catalog/tests/conftest.py
index 3a65762..6739bd8 100644
--- a/intake/catalog/tests/conftest.py
+++ b/intake/catalog/tests/conftest.py
@@ -1,9 +1,9 @@
 import os.path
 import pytest
-from intake import Catalog
+from intake import open_catalog
 
 
 @pytest.fixture
 def catalog1():
     path = os.path.dirname(__file__)
-    return Catalog(os.path.join(path, 'catalog1.yml'))
+    return open_catalog(os.path.join(path, 'catalog1.yml'))
diff --git a/intake/catalog/tests/test_auth_integration.py b/intake/catalog/tests/test_auth_integration.py
index 8ff9e43..4ba8ec5 100644
--- a/intake/catalog/tests/test_auth_integration.py
+++ b/intake/catalog/tests/test_auth_integration.py
@@ -13,7 +13,7 @@ import time
 
 import pytest
 
-from intake import Catalog
+from intake import open_catalog
 
 from intake.auth.secret import SecretClientAuth
 from intake.auth.base import AuthenticationFailure
@@ -71,7 +71,7 @@ sources:
 
 def test_secret_auth(intake_server_with_auth):
     auth = SecretClientAuth(secret='test_secret')
-    catalog = Catalog(intake_server_with_auth, auth=auth)
+    catalog = open_catalog(intake_server_with_auth, auth=auth)
 
     entries = list(catalog)
     assert entries == ['example']
@@ -82,4 +82,4 @@ def test_secret_auth(intake_server_with_auth):
 def test_secret_auth_fail(intake_server_with_auth):
     auth = SecretClientAuth(secret='test_wrong_secret')
     with pytest.raises(AuthenticationFailure):
-        Catalog(intake_server_with_auth, auth=auth)
+        open_catalog(intake_server_with_auth, auth=auth)
diff --git a/intake/catalog/tests/test_local.py b/intake/catalog/tests/test_local.py
index 18dce1a..b5dc04e 100644
--- a/intake/catalog/tests/test_local.py
+++ b/intake/catalog/tests/test_local.py
@@ -16,7 +16,7 @@ import pytest
 import pandas
 
 from .util import assert_items_equal
-from intake import Catalog, open_catalog
+from intake import open_catalog
 from intake.catalog import exceptions, local
 from intake.catalog.local import get_dir, UserParameter, LocalCatalogEntry
 from intake.utils import make_path_posix
@@ -266,7 +266,7 @@ def test_user_parameter_validation_allowed():
 ])
 def test_parser_validation_error(filename):
     with pytest.raises(exceptions.ValidationError):
-        Catalog(abspath(filename + ".yml"))
+        open_catalog(abspath(filename + ".yml"))
 
 
 @pytest.mark.parametrize("filename", [
@@ -275,7 +275,7 @@ def test_parser_validation_error(filename):
 ])
 def test_parser_obsolete_error(filename):
     with pytest.raises(exceptions.ObsoleteError):
-        Catalog(abspath(filename + ".yml"))
+        open_catalog(abspath(filename + ".yml"))
 
 
 def test_union_catalog():
@@ -283,7 +283,7 @@ def test_union_catalog():
     uri1 = os.path.join(path, 'catalog_union_1.yml')
     uri2 = os.path.join(path, 'catalog_union_2.yml')
 
-    union_cat = Catalog([uri1, uri2])
+    union_cat = open_catalog([uri1, uri2])
 
     assert_items_equal(list(union_cat), ['entry1', 'entry1_part', 'use_example1'])
 
@@ -323,14 +323,14 @@ def test_persist_local_cat(temp_cache):
     uri1 = os.path.join(path, 'catalog_union_1.yml')
     uri2 = os.path.join(path, 'catalog_union_2.yml')
 
-    s = Catalog([uri1, uri2])
+    s = open_catalog([uri1, uri2])
     s2 = s.persist()
     assert isinstance(s2, YAMLFileCatalog)
     assert set(s) == set(s2)
 
 
 def test_empty_catalog():
-    cat = Catalog()
+    cat = open_catalog()
     assert list(cat) == []
 
 
@@ -344,7 +344,7 @@ def test_duplicate_data_sources():
     uri = os.path.join(path, 'catalog_dup_sources.yml')
 
     with pytest.raises(exceptions.DuplicateKeyError):
-        Catalog(uri)
+        open_catalog(uri)
 
 
 def test_duplicate_parameters():
@@ -352,7 +352,7 @@ def test_duplicate_parameters():
     uri = os.path.join(path, 'catalog_dup_parameters.yml')
 
     with pytest.raises(exceptions.DuplicateKeyError):
-        Catalog(uri)
+        open_catalog(uri)
 
 
 @pytest.fixture
@@ -379,7 +379,7 @@ sources:
 
 def test_catalog_file_removal(temp_catalog_file):
     cat_dir = os.path.dirname(temp_catalog_file)
-    cat = Catalog(cat_dir + '/*')
+    cat = open_catalog(cat_dir + '/*')
     assert set(cat) == {'a', 'b'}
 
     os.remove(temp_catalog_file)
@@ -490,7 +490,7 @@ def test_default_expansions():
 
 def test_remote_cat(http_server):
     url = http_server + 'catalog1.yml'
-    cat = Catalog(url)
+    cat = open_catalog(url)
     assert 'entry1' in cat
     assert cat.entry1.describe()
 
diff --git a/intake/catalog/tests/test_reload_integration.py b/intake/catalog/tests/test_reload_integration.py
index 46ab823..6fc75de 100644
--- a/intake/catalog/tests/test_reload_integration.py
+++ b/intake/catalog/tests/test_reload_integration.py
@@ -14,7 +14,7 @@ import time
 import pytest
 
 from .util import assert_items_equal
-from intake import Catalog
+from intake import open_catalog
 
 TMP_DIR = tempfile.mkdtemp()
 TEST_CATALOG_PATH = [TMP_DIR]
@@ -54,7 +54,7 @@ sources:
 
 
 def test_reload_updated_config(intake_server_with_config):
-    catalog = Catalog(intake_server_with_config)
+    catalog = open_catalog(intake_server_with_config)
 
     entries = list(catalog)
     assert entries == ['use_example1']
@@ -82,7 +82,7 @@ sources:
 
 
 def test_reload_updated_directory(intake_server_with_config):
-    catalog = Catalog(intake_server_with_config)
+    catalog = open_catalog(intake_server_with_config)
 
     orig_entries = list(catalog)
     assert 'example2' not in orig_entries
@@ -110,7 +110,7 @@ def test_reload_missing_remote_directory(intake_server):
         pass
 
     time.sleep(1)
-    catalog = Catalog(intake_server)
+    catalog = open_catalog(intake_server)
     assert_items_equal(list(catalog), [])
 
     os.mkdir(TMP_DIR)
@@ -136,7 +136,7 @@ sources:
 
 
 def test_reload_missing_local_directory(tempdir):
-    catalog = Catalog(tempdir + '/*')
+    catalog = open_catalog(tempdir + '/*')
     assert_items_equal(list(catalog), [])
 
     with open(os.path.join(tempdir, YAML_FILENAME), 'w') as f:
diff --git a/intake/catalog/tests/test_remote_integration.py b/intake/catalog/tests/test_remote_integration.py
index eacfd14..2ca2514 100644
--- a/intake/catalog/tests/test_remote_integration.py
+++ b/intake/catalog/tests/test_remote_integration.py
@@ -13,14 +13,14 @@ import pandas as pd
 
 from intake.source.tests.util import verify_datasource_interface
 from .util import assert_items_equal
-from intake import Catalog, RemoteCatalog
+from intake import open_catalog, RemoteCatalog
 from intake.catalog.remote import RemoteCatalogEntry
 
 TEST_CATALOG_PATH = os.path.join(os.path.dirname(__file__), 'catalog1.yml')
 
 
 def test_info_describe(intake_server):
-    catalog = Catalog(intake_server)
+    catalog = open_catalog(intake_server)
 
     assert_items_equal(list(catalog), ['use_example1', 'nested', 'entry1',
                                        'entry1_part', 'remote_env',
@@ -47,11 +47,11 @@ def test_bad_url(intake_server):
     bad_url = intake_server + '/nonsense_prefix'
 
     with pytest.raises(Exception):
-        Catalog(bad_url)
+        open_catalog(bad_url)
 
 
 def test_metadata(intake_server):
-    catalog = Catalog(intake_server)
+    catalog = open_catalog(intake_server)
     assert hasattr(catalog, 'metadata')
     assert catalog.metadata['test'] is True
     assert catalog.version == 1
@@ -59,7 +59,7 @@ def test_metadata(intake_server):
 
 def test_nested_remote(intake_server):
     from intake.catalog.local import LocalCatalogEntry
-    catalog = Catalog()
+    catalog = open_catalog()
     catalog._entries = {
         'server': LocalCatalogEntry('server', 'remote test', 'intake_remote',
                                     True, {'url': intake_server}, [],
@@ -70,7 +70,7 @@ def test_nested_remote(intake_server):
 
 def test_remote_direct(intake_server):
     from intake.container.dataframe import RemoteDataFrame
-    catalog = Catalog(intake_server)
+    catalog = open_catalog(intake_server)
     s0 = catalog.entry1()
     s0.discover()
     s = RemoteDataFrame(intake_server.replace('intake', 'http'), {},
@@ -83,20 +83,20 @@ def test_remote_direct(intake_server):
 
 
 def test_entry_metadata(intake_server):
-    catalog = Catalog(intake_server)
+    catalog = open_catalog(intake_server)
     entry = catalog['arr']
     assert entry.metadata == entry().metadata
 
 
 def test_unknown_source(intake_server):
-    catalog = Catalog(intake_server)
+    catalog = open_catalog(intake_server)
 
     with pytest.raises(Exception):
         catalog['does_not_exist'].describe()
 
 
 def test_remote_datasource_interface(intake_server):
-    catalog = Catalog(intake_server)
+    catalog = open_catalog(intake_server)
 
     d = catalog['entry1'].get()
 
@@ -104,14 +104,14 @@ def test_remote_datasource_interface(intake_server):
 
 
 def test_environment_evaluation(intake_server):
-    catalog = Catalog(intake_server)
+    catalog = open_catalog(intake_server)
     import os
     os.environ['INTAKE_TEST'] = 'client'
     catalog['remote_env']
 
 
 def test_read(intake_server):
-    catalog = Catalog(intake_server)
+    catalog = open_catalog(intake_server)
 
     d = catalog['entry1'].get()
 
@@ -138,7 +138,7 @@ def test_read(intake_server):
 
 
 def test_read_direct(intake_server):
-    catalog = Catalog(intake_server)
+    catalog = open_catalog(intake_server)
 
     d = catalog['entry1_part'].get(part='2')
     test_dir = os.path.dirname(__file__)
@@ -167,7 +167,7 @@ def test_read_direct(intake_server):
 
 
 def test_read_chunks(intake_server):
-    catalog = Catalog(intake_server)
+    catalog = open_catalog(intake_server)
 
     d = catalog.entry1.get()
 
@@ -183,7 +183,7 @@ def test_read_chunks(intake_server):
 
 
 def test_read_partition(intake_server):
-    catalog = Catalog(intake_server)
+    catalog = open_catalog(intake_server)
 
     d = catalog.entry1.get()
 
@@ -198,21 +198,21 @@ def test_read_partition(intake_server):
 
 
 def test_close(intake_server):
-    catalog = Catalog(intake_server)
+    catalog = open_catalog(intake_server)
 
     d = catalog.entry1.get()
     d.close()
 
 
 def test_with(intake_server):
-    catalog = Catalog(intake_server)
+    catalog = open_catalog(intake_server)
 
     with catalog.entry1.get() as f:
         assert f.discover()
 
 
 def test_pickle(intake_server):
-    catalog = Catalog(intake_server)
+    catalog = open_catalog(intake_server)
 
     d = catalog.entry1.get()
 
@@ -229,7 +229,7 @@ def test_pickle(intake_server):
 
 
 def test_to_dask(intake_server):
-    catalog = Catalog(intake_server)
+    catalog = open_catalog(intake_server)
     d = catalog.entry1.get()
     df = d.to_dask()
 
@@ -239,7 +239,7 @@ def test_to_dask(intake_server):
 def test_remote_env(intake_server):
     import os
     os.environ['INTAKE_TEST'] = 'client'
-    catalog = Catalog(intake_server)
+    catalog = open_catalog(intake_server)
     with pytest.raises(Exception) as e:
         catalog.remote_env.get()
     assert 'path-server' in str(e.value)
@@ -249,7 +249,7 @@ def test_remote_env(intake_server):
     assert 'path-client' in str(e.value)
 
     # prevents *client* from getting env
-    catalog = Catalog(intake_server, getenv=False)
+    catalog = open_catalog(intake_server, getenv=False)
     with pytest.raises(Exception) as e:
         catalog.local_env.get()
     assert 'INTAKE_TEST' in str(e.value)
@@ -258,7 +258,7 @@ def test_remote_env(intake_server):
 def test_remote_sequence(intake_server):
     import glob
     d = os.path.dirname(TEST_CATALOG_PATH)
-    catalog = Catalog(intake_server)
+    catalog = open_catalog(intake_server)
     assert 'text' in catalog
     s = catalog.text()
     s.discover()
@@ -268,7 +268,7 @@ def test_remote_sequence(intake_server):
 
 
 def test_remote_arr(intake_server):
-    catalog = Catalog(intake_server)
+    catalog = open_catalog(intake_server)
     assert 'arr' in catalog
     s = catalog.arr()
     s.discover()
@@ -280,7 +280,7 @@ def test_remote_arr(intake_server):
 
 def test_pagination(intake_server):
     PAGE_SIZE = 2
-    catalog = Catalog(intake_server, page_size=PAGE_SIZE)
+    catalog = open_catalog(intake_server, page_size=PAGE_SIZE)
     assert len(catalog._entries._page_cache) == 0
     assert len(catalog._entries._direct_lookup_cache) == 0
     # Trigger fetching one specific name.
@@ -305,7 +305,7 @@ def test_pagination(intake_server):
 
 def test_dir(intake_server):
     PAGE_SIZE = 2
-    catalog = Catalog(intake_server, page_size=PAGE_SIZE)
+    catalog = open_catalog(intake_server, page_size=PAGE_SIZE)
     assert len(catalog._entries._page_cache) == 0
     assert len(catalog._entries._direct_lookup_cache) == 0
     assert not catalog._entries.complete
@@ -342,7 +342,7 @@ def test_dir(intake_server):
     assert len(record) == 0
 
     # Load without pagination (with also loads everything).
-    catalog = Catalog(intake_server, page_size=None)
+    catalog = open_catalog(intake_server, page_size=None)
     assert catalog._entries.complete
     with pytest.warns(None) as record:
         assert set(catalog) == set(catalog._ipython_key_completions_())
@@ -351,7 +351,7 @@ def test_dir(intake_server):
 
 
 def test_getitem_and_getattr(intake_server):
-    catalog = Catalog(intake_server)
+    catalog = open_catalog(intake_server)
     catalog['arr']
     with pytest.raises(KeyError):
         catalog['doesnotexist']
@@ -372,8 +372,8 @@ def test_getitem_and_getattr(intake_server):
 
 
 def test_search(intake_server):
-    remote_catalog = Catalog(intake_server)
-    local_catalog = Catalog(TEST_CATALOG_PATH)
+    remote_catalog = open_catalog(intake_server)
+    local_catalog = open_catalog(TEST_CATALOG_PATH)
 
     # Basic example
     remote_results = remote_catalog.search('entry1')
@@ -418,18 +418,18 @@ def test_search(intake_server):
 
 
 def test_access_subcatalog(intake_server):
-    catalog = Catalog(intake_server)
+    catalog = open_catalog(intake_server)
     catalog['nested']
 
 
 def test_len(intake_server):
-    remote_catalog = Catalog(intake_server)
-    local_catalog = Catalog(TEST_CATALOG_PATH)
+    remote_catalog = open_catalog(intake_server)
+    local_catalog = open_catalog(TEST_CATALOG_PATH)
     assert sum(1 for entry in local_catalog) == len(remote_catalog)
 
 
 def test_datetime(intake_server):
-    catalog = Catalog(intake_server)
+    catalog = open_catalog(intake_server)
     info = catalog["datetime"].describe()
     print(info)
     expected = {
diff --git a/intake/cli/server/tests/test_server.py b/intake/cli/server/tests/test_server.py
index ead28ca..6129c00 100644
--- a/intake/cli/server/tests/test_server.py
+++ b/intake/cli/server/tests/test_server.py
@@ -18,7 +18,7 @@ from tornado.ioloop import IOLoop
 from tornado.testing import AsyncHTTPTestCase
 import msgpack
 
-from intake import Catalog, open_catalog
+from intake import open_catalog
 from intake.container.serializer import MsgPackSerializer, GzipCompressor
 from intake.cli.server.server import IntakeServer
 from intake.compat import unpack_kwargs, pack_kwargs
@@ -30,7 +30,7 @@ catalog_file = make_path_posix(
 
 class TestServerV1Base(AsyncHTTPTestCase):
     def get_app(self):
-        local_catalog = Catalog(catalog_file)
+        local_catalog = open_catalog(catalog_file)
         self.server = IntakeServer(local_catalog)
         return self.server.make_app()
 
diff --git a/intake/tests/test_config.py b/intake/tests/test_config.py
index 4d00355..27ef3fd 100644
--- a/intake/tests/test_config.py
+++ b/intake/tests/test_config.py
@@ -89,11 +89,11 @@ def test_conf_auth():
 
             # with cat
             with pytest.raises(Exception):
-                intake.Catalog('intake://localhost:5556')
+                intake.open_catalog('intake://localhost:5556')
 
-            cat = intake.Catalog('intake://localhost:5556',
-                                 storage_options={'headers':
-                                                  {'intake-secret': 'test'}})
+            cat = intake.open_catalog('intake://localhost:5556',
+                                      storage_options={'headers':
+                                                       {'intake-secret': 'test'}})
             assert 'entry1' in cat
 
 
diff --git a/intake/tests/test_top_level.py b/intake/tests/test_top_level.py
index 90849ef..dea2180 100644
--- a/intake/tests/test_top_level.py
+++ b/intake/tests/test_top_level.py
@@ -15,6 +15,7 @@ import intake
 import appdirs
 import pytest
 from intake.utils import make_path_posix
+import intake.catalog.local
 
 
 def copy_test_file(filename, target_dir):
@@ -40,6 +41,7 @@ def user_catalog():
     # files already there)
     os.remove(target_catalog)
 
+
 @pytest.fixture
 def tmp_path_catalog():
     tmp_path = posixpath.join(tempfile.gettempdir(), 'intake')
@@ -70,7 +72,7 @@ def test_user_catalog(user_catalog):
 
 
 def test_open_styles(tmp_path_catalog):
-    cat = intake.Catalog(tmp_path_catalog)
+    cat = intake.catalog.local.YAMLFileCatalog(tmp_path_catalog)
     cat2 = intake.open_catalog(tmp_path_catalog)
     assert list(cat) == list(cat2)
     cat2 = intake.open_catalog([tmp_path_catalog])
@@ -107,3 +109,8 @@ def test_bad_open():
 def test_output_notebook():
     pytest.importorskip('hvplot')
     intake.output_notebook()
+
+
+def test_old_usage():
+    with pytest.warns(UserWarning):
+        intake.Catalog()

docs/environment.yml
pip install -e .[complete]
parse_log_pytest
environment.yml
intake-parquet zarr notebook panel==0.5.1 hvplot==0.4.0 pytest
apt-get update apt-get install -y libsnappy-dev
3.7
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
alabaster @ file:///home/ktietz/src/ci/alabaster_1611921544520/work
anyio @ file:///tmp/build/80754af9/anyio_1644481697509/work/dist
appdirs==1.4.4
argon2-cffi @ file:///opt/conda/conda-bld/argon2-cffi_1645000214183/work
argon2-cffi-bindings @ file:///tmp/build/80754af9/argon2-cffi-bindings_1644569681205/work
asciitree==0.3.3
attrs @ file:///croot/attrs_1668696182826/work
Babel @ file:///croot/babel_1671781930836/work
backcall @ file:///home/ktietz/src/ci/backcall_1611930011877/work
beautifulsoup4 @ file:///opt/conda/conda-bld/beautifulsoup4_1650462163268/work
bleach @ file:///opt/conda/conda-bld/bleach_1641577558959/work
bokeh @ file:///tmp/abs_34854e1f-d7d3-4f22-85d9-1075588e4ecdga64o0qg/croots/recipe/bokeh_1658136654619/work
Bottleneck @ file:///opt/conda/conda-bld/bottleneck_1657175564434/work
brotlipy==0.7.0
certifi @ file:///croot/certifi_1671487769961/work/certifi
cffi @ file:///croot/cffi_1670423208954/work
charset-normalizer @ file:///tmp/build/80754af9/charset-normalizer_1630003229654/work
click @ file:///tmp/build/80754af9/click_1646056591685/work
cloudpickle @ file:///tmp/build/80754af9/cloudpickle_1632508026186/work
colorama @ file:///croot/colorama_1672386526460/work
colorcet @ file:///croot/colorcet_1668084511401/work
cramjam==2.8.3
cryptography @ file:///croot/cryptography_1677533068310/work
cycler @ file:///tmp/build/80754af9/cycler_1637851556182/work
cytoolz @ file:///croot/cytoolz_1667465931118/work
dask==2.10.1
debugpy @ file:///tmp/build/80754af9/debugpy_1637091426235/work
decorator @ file:///opt/conda/conda-bld/decorator_1643638310831/work
defusedxml @ file:///tmp/build/80754af9/defusedxml_1615228127516/work
distributed @ file:///tmp/build/80754af9/distributed_1605066520545/work
docutils @ file:///opt/conda/conda-bld/docutils_1657175430858/work
entrypoints @ file:///tmp/build/80754af9/entrypoints_1649908585034/work
exceptiongroup==1.2.2
fasteners==0.19
fastjsonschema @ file:///opt/conda/conda-bld/python-fastjsonschema_1661371079312/work
fastparquet==0.8.1
flit_core @ file:///opt/conda/conda-bld/flit-core_1644941570762/work/source/flit_core
fonttools==4.25.0
fsspec @ file:///croot/fsspec_1670336592807/work
HeapDict @ file:///Users/ktietz/demo/mc3/conda-bld/heapdict_1630598515714/work
holoviews==1.12.7
hvplot==0.4.0
idna @ file:///croot/idna_1666125576474/work
imagesize @ file:///opt/conda/conda-bld/imagesize_1657179498843/work
importlib-metadata @ file:///tmp/build/80754af9/importlib-metadata_1648562407465/work
importlib-resources @ file:///tmp/build/80754af9/importlib_resources_1625135880749/work
iniconfig==2.0.0
-e git+https://github.com/intake/intake.git@b12e06b23a7bd638301336e799284d30e75fe182#egg=intake
intake-parquet==0.3.0
ipykernel @ file:///opt/conda/conda-bld/ipykernel_1662361798230/work
ipython @ file:///tmp/abs_94gruux8u8/croots/recipe/ipython_1659529858706/work
ipython-genutils @ file:///tmp/build/80754af9/ipython_genutils_1606773439826/work
jedi @ file:///tmp/build/80754af9/jedi_1644299024593/work
Jinja2 @ file:///croot/jinja2_1666908132255/work
jsonschema @ file:///croot/jsonschema_1676558650973/work
jupyter-server @ file:///croot/jupyter_server_1671707632269/work
jupyter_client @ file:///croot/jupyter_client_1676329080601/work
jupyter_core @ file:///croot/jupyter_core_1668084443243/work
jupyterlab-pygments @ file:///tmp/build/80754af9/jupyterlab_pygments_1601490720602/work
kiwisolver @ file:///croot/kiwisolver_1672387140495/work
locket @ file:///opt/conda/conda-bld/locket_1652903118915/work
lxml @ file:///opt/conda/conda-bld/lxml_1657545139709/work
Markdown @ file:///croot/markdown_1671541909495/work
MarkupSafe @ file:///opt/conda/conda-bld/markupsafe_1654597864307/work
matplotlib @ file:///croot/matplotlib-suite_1667356714455/work
matplotlib-inline @ file:///opt/conda/conda-bld/matplotlib-inline_1662014470464/work
mistune @ file:///tmp/build/80754af9/mistune_1594373098390/work
msgpack @ file:///opt/conda/conda-bld/msgpack-python_1652362659880/work
msgpack-numpy @ file:///tmp/build/80754af9/msgpack-numpy_1605111757211/work
munkres==1.1.4
nbclassic @ file:///croot/nbclassic_1676902904845/work
nbclient @ file:///tmp/build/80754af9/nbclient_1650308370114/work
nbconvert @ file:///croot/nbconvert_1668450669124/work
nbformat @ file:///croot/nbformat_1670352325207/work
nest-asyncio @ file:///croot/nest-asyncio_1672387112409/work
notebook @ file:///croot/notebook_1668179881751/work
notebook_shim @ file:///croot/notebook-shim_1668160579331/work
numcodecs==0.10.2
numexpr @ file:///croot/numexpr_1668713893690/work
numpy @ file:///opt/conda/conda-bld/numpy_and_numpy_base_1653915516269/work
numpydoc @ file:///croot/numpydoc_1668085905352/work
packaging @ file:///croot/packaging_1671697413597/work
pandas==1.3.5
pandocfilters @ file:///opt/conda/conda-bld/pandocfilters_1643405455980/work
panel==0.5.1
param @ file:///croot/param_1671697421807/work
parso @ file:///opt/conda/conda-bld/parso_1641458642106/work
partd @ file:///opt/conda/conda-bld/partd_1647245470509/work
pexpect @ file:///tmp/build/80754af9/pexpect_1605563209008/work
pickleshare @ file:///tmp/build/80754af9/pickleshare_1606932040724/work
Pillow==9.4.0
pkgutil_resolve_name @ file:///opt/conda/conda-bld/pkgutil-resolve-name_1661463321198/work
pluggy==1.2.0
prometheus-client @ file:///tmp/abs_d3zeliano1/croots/recipe/prometheus_client_1659455100375/work
prompt-toolkit @ file:///croot/prompt-toolkit_1672387306916/work
psutil @ file:///opt/conda/conda-bld/psutil_1656431268089/work
ptyprocess @ file:///tmp/build/80754af9/ptyprocess_1609355006118/work/dist/ptyprocess-0.7.0-py2.py3-none-any.whl
pyarrow==12.0.1
pycparser @ file:///tmp/build/80754af9/pycparser_1636541352034/work
pyct @ file:///croot/pyct_1675441480074/work
Pygments @ file:///opt/conda/conda-bld/pygments_1644249106324/work
pyOpenSSL @ file:///croot/pyopenssl_1677607685877/work
pyparsing @ file:///opt/conda/conda-bld/pyparsing_1661452539315/work
pyrsistent @ file:///tmp/build/80754af9/pyrsistent_1636098896055/work
PySocks @ file:///tmp/build/80754af9/pysocks_1594394576006/work
pytest==7.4.4
python-dateutil @ file:///tmp/build/80754af9/python-dateutil_1626374649649/work
python-snappy @ file:///croot/python-snappy_1670943913523/work
pytz @ file:///croot/pytz_1671697431263/work
pyviz-comms @ file:///tmp/build/80754af9/pyviz_comms_1623747165329/work
PyYAML @ file:///croot/pyyaml_1670514731622/work
pyzmq @ file:///opt/conda/conda-bld/pyzmq_1657724186960/work
requests @ file:///opt/conda/conda-bld/requests_1657734628632/work
Send2Trash @ file:///tmp/build/80754af9/send2trash_1632406701022/work
six @ file:///tmp/build/80754af9/six_1644875935023/work
sniffio @ file:///tmp/build/80754af9/sniffio_1614030478629/work
snowballstemmer @ file:///tmp/build/80754af9/snowballstemmer_1637937080595/work
sortedcontainers @ file:///tmp/build/80754af9/sortedcontainers_1623949099177/work
soupsieve @ file:///croot/soupsieve_1666296392845/work
Sphinx @ file:///opt/conda/conda-bld/sphinx_1657784123546/work
sphinx-rtd-theme @ file:///Users/ktietz/demo/mc3/conda-bld/sphinx_rtd_theme_1629455006846/work
sphinxcontrib-applehelp @ file:///home/ktietz/src/ci/sphinxcontrib-applehelp_1611920841464/work
sphinxcontrib-devhelp @ file:///home/ktietz/src/ci/sphinxcontrib-devhelp_1611920923094/work
sphinxcontrib-htmlhelp @ file:///tmp/build/80754af9/sphinxcontrib-htmlhelp_1623945626792/work
sphinxcontrib-jsmath @ file:///home/ktietz/src/ci/sphinxcontrib-jsmath_1611920942228/work
sphinxcontrib-qthelp @ file:///home/ktietz/src/ci/sphinxcontrib-qthelp_1611921055322/work
sphinxcontrib-serializinghtml @ file:///tmp/build/80754af9/sphinxcontrib-serializinghtml_1624451540180/work
tblib @ file:///Users/ktietz/demo/mc3/conda-bld/tblib_1629402031467/work
terminado @ file:///croot/terminado_1671751832461/work
testpath==0.3.1
tinycss2 @ file:///croot/tinycss2_1668168815555/work
tomli==2.0.1
toolz @ file:///croot/toolz_1667464077321/work
tornado @ file:///opt/conda/conda-bld/tornado_1662061693373/work
tqdm @ file:///opt/conda/conda-bld/tqdm_1664392687731/work
traitlets @ file:///croot/traitlets_1671143879854/work
typing_extensions @ file:///croot/typing_extensions_1669924550328/work
urllib3 @ file:///croot/urllib3_1673575502006/work
wcwidth @ file:///Users/ktietz/demo/mc3/conda-bld/wcwidth_1629357192024/work
webencodings==0.5.1
websocket-client @ file:///tmp/build/80754af9/websocket-client_1614804260725/work
zarr==2.12.0
zict==2.1.0
zipp @ file:///croot/zipp_1672387121353/work

name: intake
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
  - alabaster=0.7.12=pyhd3eb1b0_0
  - anyio=3.5.0=py37h06a4308_0
  - appdirs=1.4.4=pyhd3eb1b0_0
  - argon2-cffi=21.3.0=pyhd3eb1b0_0
  - argon2-cffi-bindings=21.2.0=py37h7f8727e_0
  - attrs=22.1.0=py37h06a4308_0
  - babel=2.11.0=py37h06a4308_0
  - backcall=0.2.0=pyhd3eb1b0_0
  - beautifulsoup4=4.11.1=py37h06a4308_0
  - blas=1.0=openblas
  - bleach=4.1.0=pyhd3eb1b0_0
  - bokeh=2.4.3=py37h06a4308_0
  - bottleneck=1.3.5=py37h7deecbd_0
  - brotli=1.0.9=h5eee18b_9
  - brotli-bin=1.0.9=h5eee18b_9
  - brotlipy=0.7.0=py37h27cfd23_1003
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2022.12.7=py37h06a4308_0
  - cffi=1.15.1=py37h5eee18b_3
  - charset-normalizer=2.0.4=pyhd3eb1b0_0
  - click=8.0.4=py37h06a4308_0
  - cloudpickle=2.0.0=pyhd3eb1b0_0
  - colorama=0.4.6=py37h06a4308_0
  - colorcet=3.0.1=py37h06a4308_0
  - cryptography=39.0.1=py37h9ce1e76_0
  - cycler=0.11.0=pyhd3eb1b0_0
  - cytoolz=0.12.0=py37h5eee18b_0
  - dask=2.10.1=py_0
  - dask-core=2.10.1=py_0
  - debugpy=1.5.1=py37h295c915_0
  - decorator=5.1.1=pyhd3eb1b0_0
  - defusedxml=0.7.1=pyhd3eb1b0_0
  - distributed=2.30.1=py37h06a4308_0
  - docutils=0.18.1=py37h06a4308_3
  - entrypoints=0.4=py37h06a4308_0
  - flit-core=3.6.0=pyhd3eb1b0_0
  - fonttools=4.25.0=pyhd3eb1b0_0
  - freetype=2.12.1=h4a9f257_0
  - fsspec=2022.11.0=py37h06a4308_0
  - giflib=5.2.2=h5eee18b_0
  - heapdict=1.0.1=pyhd3eb1b0_0
  - icu=58.2=he6710b0_3
  - idna=3.4=py37h06a4308_0
  - imagesize=1.4.1=py37h06a4308_0
  - importlib-metadata=4.11.3=py37h06a4308_0
  - importlib_metadata=4.11.3=hd3eb1b0_0
  - importlib_resources=5.2.0=pyhd3eb1b0_1
  - ipykernel=6.15.2=py37h06a4308_0
  - ipython=7.31.1=py37h06a4308_1
  - ipython_genutils=0.2.0=pyhd3eb1b0_1
  - jedi=0.18.1=py37h06a4308_1
  - jinja2=3.1.2=py37h06a4308_0
  - jpeg=9e=h5eee18b_3
  - jsonschema=4.17.3=py37h06a4308_0
  - jupyter_client=7.4.9=py37h06a4308_0
  - jupyter_core=4.11.2=py37h06a4308_0
  - jupyter_server=1.23.4=py37h06a4308_0
  - jupyterlab_pygments=0.1.2=py_0
  - kiwisolver=1.4.4=py37h6a678d5_0
  - lcms2=2.16=hb9589c4_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - lerc=4.0.0=h6a678d5_0
  - libbrotlicommon=1.0.9=h5eee18b_9
  - libbrotlidec=1.0.9=h5eee18b_9
  - libbrotlienc=1.0.9=h5eee18b_9
  - libdeflate=1.22=h5eee18b_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgfortran-ng=11.2.0=h00389a5_1
  - libgfortran5=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libopenblas=0.3.21=h043d6bf_0
  - libpng=1.6.39=h5eee18b_0
  - libsodium=1.0.18=h7b6447c_0
  - libstdcxx-ng=11.2.0=h1234567_1
  - libtiff=4.5.1=hffd6297_1
  - libwebp=1.2.4=h11a3e52_1
  - libwebp-base=1.2.4=h5eee18b_1
  - libxml2=2.9.14=h74e7548_0
  - libxslt=1.1.35=h4e12654_0
  - locket=1.0.0=py37h06a4308_0
  - lxml=4.9.1=py37h1edc446_0
  - lz4-c=1.9.4=h6a678d5_1
  - markdown=3.4.1=py37h06a4308_0
  - markupsafe=2.1.1=py37h7f8727e_0
  - matplotlib-base=3.5.3=py37hf590b9c_0
  - matplotlib-inline=0.1.6=py37h06a4308_0
  - mistune=0.8.4=py37h14c3975_1001
  - msgpack-numpy=0.4.7.1=pyhd3eb1b0_0
  - msgpack-python=1.0.3=py37hd09550d_0
  - munkres=1.1.4=py_0
  - nbclassic=0.5.2=py37h06a4308_0
  - nbclient=0.5.13=py37h06a4308_0
  - nbconvert=6.5.4=py37h06a4308_0
  - nbformat=5.7.0=py37h06a4308_0
  - ncurses=6.4=h6a678d5_0
  - nest-asyncio=1.5.6=py37h06a4308_0
  - notebook=6.5.2=py37h06a4308_0
  - notebook-shim=0.2.2=py37h06a4308_0
  - numexpr=2.8.4=py37hd2a5715_0
  - numpy=1.21.5=py37hf838250_3
  - numpy-base=1.21.5=py37h1e6e340_3
  - numpydoc=1.5.0=py37h06a4308_0
  - openssl=1.1.1w=h7f8727e_0
  - packaging=22.0=py37h06a4308_0
  - pandas=1.3.5=py37h8c16a72_0
  - pandocfilters=1.5.0=pyhd3eb1b0_0
  - param=1.12.3=py37h06a4308_0
  - parso=0.8.3=pyhd3eb1b0_0
  - partd=1.2.0=pyhd3eb1b0_1
  - pexpect=4.8.0=pyhd3eb1b0_3
  - pickleshare=0.7.5=pyhd3eb1b0_1003
  - pillow=9.4.0=py37h6a678d5_0
  - pip=22.3.1=py37h06a4308_0
  - pkgutil-resolve-name=1.3.10=py37h06a4308_0
  - prometheus_client=0.14.1=py37h06a4308_0
  - prompt-toolkit=3.0.36=py37h06a4308_0
  - psutil=5.9.0=py37h5eee18b_0
  - ptyprocess=0.7.0=pyhd3eb1b0_2
  - pycparser=2.21=pyhd3eb1b0_0
  - pyct=0.5.0=py37h06a4308_0
  - pygments=2.11.2=pyhd3eb1b0_0
  - pyopenssl=23.0.0=py37h06a4308_0
  - pyparsing=3.0.9=py37h06a4308_0
  - pyrsistent=0.18.0=py37heee7806_0
  - pysocks=1.7.1=py37_1
  - python=3.7.16=h7a1cb2a_0
  - python-dateutil=2.8.2=pyhd3eb1b0_0
  - python-fastjsonschema=2.16.2=py37h06a4308_0
  - python-snappy=0.6.1=py37h6a678d5_0
  - pytz=2022.7=py37h06a4308_0
  - pyviz_comms=2.0.2=pyhd3eb1b0_0
  - pyyaml=6.0=py37h5eee18b_1
  - pyzmq=23.2.0=py37h6a678d5_0
  - readline=8.2=h5eee18b_0
  - requests=2.28.1=py37h06a4308_0
  - send2trash=1.8.0=pyhd3eb1b0_1
  - setuptools=65.6.3=py37h06a4308_0
  - six=1.16.0=pyhd3eb1b0_1
  - snappy=1.2.1=h6a678d5_0
  - sniffio=1.2.0=py37h06a4308_1
  - snowballstemmer=2.2.0=pyhd3eb1b0_0
  - sortedcontainers=2.4.0=pyhd3eb1b0_0
  - soupsieve=2.3.2.post1=py37h06a4308_0
  - sphinx=5.0.2=py37h06a4308_0
  - sphinx_rtd_theme=0.4.3=pyhd3eb1b0_0
  - sphinxcontrib-applehelp=1.0.2=pyhd3eb1b0_0
  - sphinxcontrib-devhelp=1.0.2=pyhd3eb1b0_0
  - sphinxcontrib-htmlhelp=2.0.0=pyhd3eb1b0_0
  - sphinxcontrib-jsmath=1.0.1=pyhd3eb1b0_0
  - sphinxcontrib-qthelp=1.0.3=pyhd3eb1b0_0
  - sphinxcontrib-serializinghtml=1.1.5=pyhd3eb1b0_0
  - sqlite=3.45.3=h5eee18b_0
  - tblib=1.7.0=pyhd3eb1b0_0
  - terminado=0.17.1=py37h06a4308_0
  - tinycss2=1.2.1=py37h06a4308_0
  - tk=8.6.14=h39e8969_0
  - toolz=0.12.0=py37h06a4308_0
  - tornado=6.2=py37h5eee18b_0
  - tqdm=4.64.1=py37h06a4308_0
  - traitlets=5.7.1=py37h06a4308_0
  - typing-extensions=4.4.0=py37h06a4308_0
  - typing_extensions=4.4.0=py37h06a4308_0
  - urllib3=1.26.14=py37h06a4308_0
  - wcwidth=0.2.5=pyhd3eb1b0_0
  - webencodings=0.5.1=py37_1
  - websocket-client=0.58.0=py37h06a4308_4
  - wheel=0.38.4=py37h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - yaml=0.2.5=h7b6447c_0
  - zeromq=4.3.5=h6a678d5_0
  - zict=2.1.0=py37h06a4308_0
  - zipp=3.11.0=py37h06a4308_0
  - zlib=1.2.13=h5eee18b_1
  - zstd=1.5.6=hc292b87_0
  - pip:
      - asciitree==0.3.3
      - cramjam==2.8.3
      - exceptiongroup==1.2.2
      - fasteners==0.19
      - fastparquet==0.8.1
      - holoviews==1.12.7
      - hvplot==0.4.0
      - iniconfig==2.0.0
      - intake-parquet==0.3.0
      - numcodecs==0.10.2
      - panel==0.5.1
      - pluggy==1.2.0
      - pyarrow==12.0.1
      - pytest==7.4.4
      - testpath==0.3.1
      - tomli==2.0.1
      - zarr==2.12.0
prefix: /opt/conda/envs/intake

intake/tests/test_top_level.py::test_old_usage
intake/catalog/tests/test_local.py::test_get_dir intake/catalog/tests/test_local.py::test_remote_cat intake/cli/server/tests/test_server.py::TestServerV1Source::test_read_part_compressed intake/cli/server/tests/test_server.py::TestServerV1Source::test_read_partition
intake/catalog/tests/test_auth_integration.py::test_secret_auth intake/catalog/tests/test_auth_integration.py::test_secret_auth_fail intake/catalog/tests/test_local.py::test_local_catalog intake/catalog/tests/test_local.py::test_get_items intake/catalog/tests/test_local.py::test_nested intake/catalog/tests/test_local.py::test_nested_gets_name_from_super intake/catalog/tests/test_local.py::test_hash intake/catalog/tests/test_local.py::test_getitem intake/catalog/tests/test_local.py::test_source_plugin_config intake/catalog/tests/test_local.py::test_metadata intake/catalog/tests/test_local.py::test_use_source_plugin_from_config intake/catalog/tests/test_local.py::test_entry_dir_function intake/catalog/tests/test_local.py::test_user_parameter_default_value[bool-False] intake/catalog/tests/test_local.py::test_user_parameter_default_value[datetime-expected1] intake/catalog/tests/test_local.py::test_user_parameter_default_value[float-0.0] intake/catalog/tests/test_local.py::test_user_parameter_default_value[int-0] intake/catalog/tests/test_local.py::test_user_parameter_default_value[list-expected4] intake/catalog/tests/test_local.py::test_user_parameter_default_value[str-] intake/catalog/tests/test_local.py::test_user_parameter_default_value[unicode-] intake/catalog/tests/test_local.py::test_user_parameter_repr intake/catalog/tests/test_local.py::test_user_parameter_coerce_value[bool-true-True] intake/catalog/tests/test_local.py::test_user_parameter_coerce_value[bool-0-False] intake/catalog/tests/test_local.py::test_user_parameter_coerce_value[datetime-given2-expected2] intake/catalog/tests/test_local.py::test_user_parameter_coerce_value[datetime-2018-01-01 intake/catalog/tests/test_local.py::test_user_parameter_coerce_value[datetime-1234567890000000000-expected4] intake/catalog/tests/test_local.py::test_user_parameter_coerce_value[float-3.14-3.14] intake/catalog/tests/test_local.py::test_user_parameter_coerce_value[int-1-1] intake/catalog/tests/test_local.py::test_user_parameter_coerce_value[list-given7-expected7] intake/catalog/tests/test_local.py::test_user_parameter_coerce_value[str-1-1] intake/catalog/tests/test_local.py::test_user_parameter_coerce_value[unicode-foo-foo] intake/catalog/tests/test_local.py::test_user_parameter_coerce_special_datetime[now] intake/catalog/tests/test_local.py::test_user_parameter_coerce_special_datetime[today] intake/catalog/tests/test_local.py::test_user_parameter_coerce_min[float-100.0-100.0] intake/catalog/tests/test_local.py::test_user_parameter_coerce_min[int-20-20] intake/catalog/tests/test_local.py::test_user_parameter_coerce_min[int-20.0-20] intake/catalog/tests/test_local.py::test_user_parameter_coerce_max[float-100.0-100.0] intake/catalog/tests/test_local.py::test_user_parameter_coerce_max[int-20-20] intake/catalog/tests/test_local.py::test_user_parameter_coerce_max[int-20.0-20] intake/catalog/tests/test_local.py::test_user_parameter_coerce_allowed[float-given0-expected0] intake/catalog/tests/test_local.py::test_user_parameter_coerce_allowed[int-given1-expected1] intake/catalog/tests/test_local.py::test_user_parameter_validation_range intake/catalog/tests/test_local.py::test_user_parameter_validation_allowed intake/catalog/tests/test_local.py::test_parser_validation_error[catalog_non_dict] intake/catalog/tests/test_local.py::test_parser_validation_error[data_source_missing] intake/catalog/tests/test_local.py::test_parser_validation_error[data_source_name_non_string] intake/catalog/tests/test_local.py::test_parser_validation_error[data_source_non_dict] intake/catalog/tests/test_local.py::test_parser_validation_error[data_source_value_non_dict] intake/catalog/tests/test_local.py::test_parser_validation_error[params_missing_required] intake/catalog/tests/test_local.py::test_parser_validation_error[params_name_non_string] intake/catalog/tests/test_local.py::test_parser_validation_error[params_non_dict] intake/catalog/tests/test_local.py::test_parser_validation_error[params_value_bad_choice] intake/catalog/tests/test_local.py::test_parser_validation_error[params_value_bad_type] intake/catalog/tests/test_local.py::test_parser_validation_error[params_value_non_dict] intake/catalog/tests/test_local.py::test_parser_validation_error[plugins_non_dict] intake/catalog/tests/test_local.py::test_parser_validation_error[plugins_source_missing] intake/catalog/tests/test_local.py::test_parser_validation_error[plugins_source_missing_key] intake/catalog/tests/test_local.py::test_parser_validation_error[plugins_source_non_dict] intake/catalog/tests/test_local.py::test_parser_validation_error[plugins_source_non_list] intake/catalog/tests/test_local.py::test_parser_obsolete_error[obsolete_data_source_list] intake/catalog/tests/test_local.py::test_parser_obsolete_error[obsolete_params_list] intake/catalog/tests/test_local.py::test_union_catalog intake/catalog/tests/test_local.py::test_persist_local_cat intake/catalog/tests/test_local.py::test_empty_catalog intake/catalog/tests/test_local.py::test_nonexistent_error intake/catalog/tests/test_local.py::test_duplicate_data_sources intake/catalog/tests/test_local.py::test_duplicate_parameters intake/catalog/tests/test_local.py::test_catalog_file_removal intake/catalog/tests/test_local.py::test_flatten_duplicate_error intake/catalog/tests/test_local.py::test_multi_cat_names intake/catalog/tests/test_local.py::test_name_of_builtin intake/catalog/tests/test_local.py::test_cat_with_declared_name intake/catalog/tests/test_local.py::test_cat_with_no_declared_name_gets_name_from_dir_if_file_named_catalog intake/catalog/tests/test_local.py::test_default_expansions intake/catalog/tests/test_local.py::test_multi_plugins intake/catalog/tests/test_local.py::test_no_plugins intake/catalog/tests/test_local.py::test_explicit_entry_driver intake/catalog/tests/test_local.py::test_getitem_and_getattr intake/catalog/tests/test_local.py::test_dot_names intake/catalog/tests/test_local.py::test_listing intake/catalog/tests/test_local.py::test_dict_save intake/catalog/tests/test_local.py::test_dict_adddel intake/catalog/tests/test_local.py::test_filter intake/catalog/tests/test_local.py::test_no_instance intake/catalog/tests/test_local.py::test_fsspec_integration intake/catalog/tests/test_local.py::test_cat_add intake/catalog/tests/test_reload_integration.py::test_reload_updated_config intake/catalog/tests/test_reload_integration.py::test_reload_updated_directory intake/catalog/tests/test_reload_integration.py::test_reload_missing_remote_directory intake/catalog/tests/test_reload_integration.py::test_reload_missing_local_directory intake/catalog/tests/test_remote_integration.py::test_info_describe intake/catalog/tests/test_remote_integration.py::test_bad_url intake/catalog/tests/test_remote_integration.py::test_metadata intake/catalog/tests/test_remote_integration.py::test_nested_remote intake/catalog/tests/test_remote_integration.py::test_remote_direct intake/catalog/tests/test_remote_integration.py::test_entry_metadata intake/catalog/tests/test_remote_integration.py::test_unknown_source intake/catalog/tests/test_remote_integration.py::test_remote_datasource_interface intake/catalog/tests/test_remote_integration.py::test_environment_evaluation intake/catalog/tests/test_remote_integration.py::test_read intake/catalog/tests/test_remote_integration.py::test_read_direct intake/catalog/tests/test_remote_integration.py::test_read_chunks intake/catalog/tests/test_remote_integration.py::test_read_partition intake/catalog/tests/test_remote_integration.py::test_close intake/catalog/tests/test_remote_integration.py::test_with intake/catalog/tests/test_remote_integration.py::test_pickle intake/catalog/tests/test_remote_integration.py::test_to_dask intake/catalog/tests/test_remote_integration.py::test_remote_env intake/catalog/tests/test_remote_integration.py::test_remote_sequence intake/catalog/tests/test_remote_integration.py::test_remote_arr intake/catalog/tests/test_remote_integration.py::test_pagination intake/catalog/tests/test_remote_integration.py::test_dir intake/catalog/tests/test_remote_integration.py::test_getitem_and_getattr intake/catalog/tests/test_remote_integration.py::test_search intake/catalog/tests/test_remote_integration.py::test_access_subcatalog intake/catalog/tests/test_remote_integration.py::test_len intake/catalog/tests/test_remote_integration.py::test_datetime intake/cli/server/tests/test_server.py::TestServerV1Info::test_info intake/cli/server/tests/test_server.py::TestServerV1Source::test_bad_action intake/cli/server/tests/test_server.py::TestServerV1Source::test_idle_timer intake/cli/server/tests/test_server.py::TestServerV1Source::test_no_format intake/cli/server/tests/test_server.py::TestServerV1Source::test_open intake/cli/server/tests/test_server.py::TestServerV1Source::test_open_direct intake/cli/server/tests/test_server.py::test_flatten_flag intake/cli/server/tests/test_server.py::test_port_flag intake/cli/server/tests/test_server.py::test_address_flag intake/tests/test_config.py::test_load_conf[conf0] intake/tests/test_config.py::test_load_conf[conf1] intake/tests/test_config.py::test_load_conf[conf2] intake/tests/test_config.py::test_basic intake/tests/test_config.py::test_cli intake/tests/test_config.py::test_conf intake/tests/test_config.py::test_conf_auth intake/tests/test_config.py::test_pathdirs intake/tests/test_top_level.py::test_autoregister_open intake/tests/test_top_level.py::test_default_catalogs intake/tests/test_top_level.py::test_user_catalog intake/tests/test_top_level.py::test_open_styles intake/tests/test_top_level.py::test_path_catalog intake/tests/test_top_level.py::test_bad_open
intake/cli/client/subcommands/exists.py intake/cli/client/subcommands/precache.py intake/__init__.py docs/source/persisting.rst docs/source/glossary.rst intake/cli/client/subcommands/get.py intake/cli/client/subcommands/discover.py docs/source/quickstart.rst intake/cli/client/subcommands/list.py intake/cli/client/subcommands/describe.py
intake/cli/client/subcommands/exists.py intake/cli/client/subcommands/precache.py intake/__init__.py docs/source/persisting.rst docs/source/glossary.rst intake/cli/client/subcommands/get.py intake/cli/client/subcommands/discover.py docs/source/quickstart.rst intake/cli/client/subcommands/list.py intake/cli/client/subcommands/describe.py