Repository: dbt-labs/dbt-core

Issue:
What should `pip install dbt` do after v1?
Split off from https://github.com/dbt-labs/dbt-core/issues/3968

Everyone will be able and encouraged to do the following after v1:
- `pip install dbt-core`
- `pip install dbt-<adapter>`

The big question is, what to do with the PyPi package named `dbt`, defined in this repo as a thing _separate_ from `dbt-core`? Note that this is just a cosmetic consideration—it shouldn't change anything about how we're packaging/distributing the underlying components—we just know that a lot of people are still using `pip install dbt`. Starting in v1, this could:

1. **Full backwards compatibility, with warning:** Raise a deprecation warning, then install `dbt-core`, `dbt-postgres`, `dbt-redshift`, `dbt-bigquery`. This might be tricky if we've released a newer patch/prerelease of dbt-core than the others, but I think our compatibility operator (`~=`) could work here
2. **Very limited backwards compatibility, with warning**: Raise a deprecation warning, then install only the code contained in this repository (`dbt-core` + `dbt-postgres`, or `dbt-core` only), knowing that most people will encounter errors and have to switch)
3. **Raise an explicit error:** If all of that is too tricky to figure out, we should keep it simple and just raise a good old fashioned error message when someone tries `pip install dbt` (unqualified) or `pip install dbt==1.0.0`: "Going forward, you must install dbt-<adapter`"

I'm leaning toward the first option right now. I'm very open to other opinions.


Discussion:

Resolving patch:
diff --git a/core/setup.py b/core/setup.py
--- a/core/setup.py
+++ b/core/setup.py
@@ -19,21 +19,23 @@
     sys.exit(1)
 
 
-def read(fname):
-    return open(os.path.join(os.path.dirname(__file__), fname)).read()
+this_directory = os.path.abspath(os.path.dirname(__file__))
+with open(os.path.join(this_directory, 'README.md')) as f:
+    long_description = f.read()
 
 
 package_name = "dbt-core"
 package_version = "1.0.0b2"
-description = """dbt (data build tool) is a command line tool that helps \
-analysts and engineers transform data in their warehouse more effectively"""
+description = """With dbt, data analysts and engineers can build analytics \
+the way engineers build applications."""
 
 
 setup(
     name=package_name,
     version=package_version,
     description=description,
-    long_description=description,
+    long_description=long_description,
+    long_description_content_type='text/markdown',
     author="dbt Labs",
     author_email="info@dbtlabs.com",
     url="https://github.com/dbt-labs/dbt-core",
diff --git a/plugins/postgres/setup.py b/plugins/postgres/setup.py
--- a/plugins/postgres/setup.py
+++ b/plugins/postgres/setup.py
@@ -54,7 +54,7 @@ def _dbt_psycopg2_name():
     name=package_name,
     version=package_version,
     description=description,
-    long_description=description,
+    long_description=long_description,
     long_description_content_type='text/markdown',
     author="dbt Labs",
     author_email="info@dbtlabs.com",
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -2,6 +2,18 @@
 import os
 import sys
 
+
+if 'sdist' not in sys.argv:
+    print('')
+    print('As of v1.0.0, `pip install dbt` is no longer supported.')
+    print('Instead, please use either:')
+    print('  - `pip install dbt-core`, for core functionality')
+    print('  - `pip install dbt-<adapter>`, to use dbt with your database, platform, or query engine')
+    print('See full list: https://docs.getdbt.com/docs/available-adapters')
+    print('')
+    sys.exit(1)
+
+
 if sys.version_info < (3, 6):
     print('Error: dbt does not support this version of Python.')
     print('Please upgrade to Python 3.6 or higher.')
@@ -40,14 +52,9 @@
     author="dbt Labs",
     author_email="info@dbtlabs.com",
     url="https://github.com/dbt-labs/dbt-core",
-    packages=[],
-    install_requires=[
-        'dbt-core=={}'.format(package_version),
-        'dbt-postgres=={}'.format(package_version),
-    ],
     zip_safe=False,
     classifiers=[
-        'Development Status :: 5 - Production/Stable',
+        'Development Status :: 7 - Inactive',
 
         'License :: OSI Approved :: Apache Software License',
 


Test patch: