Repository: dbt-labs/dbt-core

Issue:
Widen boto3/botocore requirements
### Describe the bug
Been fighting dependency hell for the last hour trying to upgrade dbt-redshift.  I install dbt-redshift, boto3, and awscli in the same project.  Turns out I had to pin boto3<1.10.0 and  awscli==1.16.267 .

boto3/botocore requirements are currently pinned to a specific [range](https://github.com/fishtown-analytics/dbt/commit/36e12528240c7dbe91e921929665acf1fa49fa22#diff-c553dc00af52e44f247b86ac6b0ff29bR28).  My understanding from a [slack conversation](https://getdbt.slack.com/archives/C50NEBJGG/p1580864794040000) is that the Redshift range needs to be in alignment with the range required for snowflake.  It looks like snowflake [currently has a bit wider range](https://github.com/snowflakedb/snowflake-connector-python/blob/master/setup.py#L180), so I think it would be safe for dbt to match.


### Steps To Reproduce
^

### Expected behavior
^

### Screenshots and log output
NA

### System information
**Which database are you using dbt with?**
- [ ] postgres
- [x] redshift
- [ ] bigquery
- [ ] snowflake
- [ ] other (specify: ____________)


**The output of `dbt --version`:**
```
installed version: 0.15.2
   latest version: 0.15.2
```

**The operating system you're using:** Debian Linux

**The output of `python --version`:** 3.6.10




Discussion:
Adding @beckjake to advise! 
Hello, first of all thanks @gnilrets I fought with this issue for a while while trying to use dbt and boto3 in the same package. Pinning boto3 like you recommend fixed it.

Second, I'm not sure if it helps, but just in case: I'm using Pipenv for libraries management, following is the pipenv dependencies conflict message and the output of pipenv graph before and after pinning boto3. 

**Conflict message**
`ERROR: ERROR: Could not find a version that matches botocore<1.13.0,<1.15.0,>=1.14.14,>=1.9.23
Tried: 0.4.1, 0.4.2, 0.5.0, 0.5.1, 0.5.2 ...`

**Before**
```- dbt-redshift [required: ==0.15.2, installed: 0.15.2]
  - boto3 [required: >=1.6.23,<1.10.0, installed: 1.9.253]
    - >=1.14.14 [required: >=1.12.253,<1.13.0, installed: 1.12.253]
      - docutils [required: >=0.10,<0.16, installed: 0.15.2]
      - jmespath [required: >=0.7.1,<1.0.0, installed: 0.9.4]
      - python-dateutil [required: >=2.1,<3.0.0, installed: 2.8.1]
        - six [required: >=1.5, installed: 1.14.0]
      - urllib3 [required: >=1.20,<1.26, installed: 1.24.3]
```

**After fix**
```- dbt-redshift [required: ==0.15.2, installed: 0.15.2]
    - boto3 [required: >=1.6.23,<1.10.0, installed: 1.9.253]
      - botocore [required: >=1.12.253,<1.13.0, installed: 1.12.253]
        - docutils [required: >=0.10,<0.16, installed: 0.15.2]
        - jmespath [required: >=0.7.1,<1.0.0, installed: 0.9.4]
        - python-dateutil [required: >=2.1,<3.0.0, installed: 2.8.1]
          - six [required: >=1.5, installed: 1.14.0]
        - urllib3 [required: >=1.20,<1.26, installed: 1.24.3]
```
Yeah, I landed on this yesterday while doing some local work around versions and `pip install` a lot, so I feel the pain. @drewbanin I think we'll also need to rev the snowflake-connector-python adapter to a newer version while we're at it, in order to get the newer range. I assume it actually installs now, it's been a while.
sounds good @beckjake - adding this one to Barbara Gittings :)

Resolving patch:
diff --git a/plugins/bigquery/setup.py b/plugins/bigquery/setup.py
--- a/plugins/bigquery/setup.py
+++ b/plugins/bigquery/setup.py
@@ -40,10 +40,10 @@
     },
     install_requires=[
         'dbt-core=={}'.format(package_version),
-        'google-cloud-core>=1,<=1.1.0',
-        'google-cloud-bigquery>=1.15.0,<1.24.0',
-        # hidden secret dependency: bq requires this but only documents 1.10.0
-        # through its dependency chain.
+        'google-cloud-core>=1,<=1.3.0',
+        'google-cloud-bigquery>=1.15.0,<1.25.0',
+        # hidden secret dependency: bq 1.23.0 requires this but only documents
+        # 1.10.0 through its dependency chain.
         # see https://github.com/googleapis/google-cloud-python/issues/9965
         'six>=1.13.0',
     ],
diff --git a/plugins/redshift/setup.py b/plugins/redshift/setup.py
--- a/plugins/redshift/setup.py
+++ b/plugins/redshift/setup.py
@@ -41,8 +41,9 @@
     install_requires=[
         'dbt-core=={}'.format(package_version),
         'dbt-postgres=={}'.format(package_version),
-        'boto3>=1.6.23,<1.10.0',
-        'botocore>=1.9.23,<1.13.0',
+        # match snowflake-connector-python supported ranges
+        'boto3>=1.4.4,<1.12',
+        'botocore>=1.5.0,<1.15',
     ],
     zip_safe=False,
     classifiers=[
diff --git a/plugins/snowflake/setup.py b/plugins/snowflake/setup.py
--- a/plugins/snowflake/setup.py
+++ b/plugins/snowflake/setup.py
@@ -40,10 +40,10 @@
     },
     install_requires=[
         'dbt-core=={}'.format(package_version),
-        'snowflake-connector-python>=1.6.12,<2.1',
-        'azure-storage-blob~=2.1',
-        'azure-storage-common~=2.1',
-        'urllib3<1.25.0',
+        'snowflake-connector-python==2.2.0',
+        'azure-common<2.0.0',
+        'azure-storage-blob<12.0.0',
+        'urllib3>=1.20,<1.26.0',
         # this seems sufficiently broad
         'cryptography>=2,<3',
     ],


Test patch: