* Fix hard-coding of amd64 platform and make amd64 package installation conditional
* Cleanup Dockerfile for best practices
* Enable BuildKit for docker building
If you run the docker-compose on a Mac with the new M1 chip, you will get the "Unable to locate package msodbcsql17" error. Because there are currently no msodbcsql17 packages for arm64 architecture. The solution was to change the base image in the Dockerfile to change the installation to the older AMD architecture.
FROM --platform=linux/amd64 python:3.7-slim-buster
Fixes#5300 and fixes#5307
There have been upstream (`python:37-slim` image) changes that
bring in `pip` version 20.3.1, which makes new `2020-resolver`
the default. Due to that, un-resolvable dependency conflicts
in `requirements_all_ds.txt` now cause the build to fail.
This is a workaround until the package versions can be updated
to work with the new pip resolver.
* Test Cypress on package list
* Skip Puppeteer Chromium as well
* Put back missing npm install on netlify.toml
* Netlify: move env vars to build.environment
* Remove cypress:install script
* Update Cypress dockerfile
* Copy package-lock.json to Cypress dockerfile
* Add build arg to Dockerfile to control if we should build frontend assets
* Move more env settings into the shared one.
* Use build arg in docker-compose to skip frontend build.
* CirlceCI: Skip building frontend assets in backend tests
* Create dummy template files
* Expand file names manually.
* Add build arg to skip dev dependencies.
* Update Dockerfile
* Reverse logic of skip_dev_deps to what it should be.
* Add visualizations project settings
* Move visualizations to redash-visualizations
* Delete shared components
* Remove antd from deps
* Remove p-r-5 from table utils
* Remove visualization deps from package.json
* Rename package and change its version
* Test preinstall script
* Update Dockerfile build for frontend
* Test adding dockerignore
* Update jest tests
* Add step for jest tests
* Include viz-lib on dev commands
* User prettier v1 for now
* Delete unused libs on the app
* Add readme draft (to be finished)
* Add getOptions to Editor
* Add required libraries and finish basic example
* Bump version
* ODBC Based Databricks connector.
* Install Databricks' ODBC driver in Docker image
* Add useragent string.
* Add Types enum to redash.query_runner to replace the seprate constants.
* Databricks connector:
1. Parse types.
2. Send additional connection options.
3. Correctly parse errors.
* Switch to TYPE constants to use code with Python 2.
* Add note about the Databricks driver terms and conditions.
* Show message about Databricks driver terms and conditions.
* Handle cases when the query doesn't return any results.
* Update redash/query_runner/databricks.py
Co-Authored-By: Jesse <jesse@whitehouse.dev>
* Use new Databricks logo
* Fix connection string options
Co-authored-by: Jesse <jesse@whitehouse.dev>
* Remove --max-old-space-size=4096 from build
Looks like it's no longer needed.
* Update to node v12.
* Add build:old-node-version for those who have Node < 12.
* Make core app compatible with Python 3
No backward compatibility with Python 2.7 is kept.
This commit mostly contains changes made with 2to3 and manual
tweaking when necessary.
* Use Python 3.7 as base docker image
Since it is not possible to change redash/base:debian to Python 3
without breaking future relases, its Dockerfile is temporarly
copied here.
* Upgrade some requirements to newest versions
Some of the older versions were not compatible with Python 3.
* Migrate tests to Python 3
* Build frontend on Python 3
* Make the HMAC sign function compatible with Python 3
In Python 3, HMAC only works with bytes so the strings and the
float used in the sign function need to be encoded.
Hopefully this is still backward compatible with already generated
signatures.
* Use assertCountEqual instead of assertItemsEqual
The latter is not available in Python 3.
See https://bugs.python.org/issue17866
* Remove redundant encoding header for Python 3 modules
* Remove redundant string encoding in CLI
* Rename list() functions in CLI
These functions shadow the builtin list function which is
problematic since 2to3 adds a fair amount of calls to the builtin
list when it finds dict.keys() and dict.values().
Only the Python function is renamed, from the perspective of the
CLI nothing changes.
* Replace usage of Exception.message in CLI
`message` is not available anymore, instead use the string
representation of the exception.
* Adapt test handlers to Python 3
* Fix test that relied on dict ordering
* Make sure test results are always uploaded (#4215)
* Support encoding memoryview to JSON
psycopg2 returns `buffer` objects in Python 2.7 and `memoryview`
in Python 3. See #3156
* Fix test relying on object address ordering
* Decode bytes returned from Redis
* Stop using e.message for most exceptions
Exception.message is not available in Python 3 anymore, except
for some exceptions defined by third-party libraries.
* Fix writing XLSX files in Python 3
The buffer for the file should be made of bytes and the actual
content written to it strings.
Note: I do not know why the diff is so large as it's only a two
lines change. Probably a white space or file encoding issue.
* Fix test by comparing strings to strings
* Fix another exception message unavailable in Python 3
* Fix export to CSV in Python 3
The UnicodeWriter is not used anymore. In Python 3, the interface
provided by the CSV module only deals with strings, in and out.
The encoding of the output is left to the user, in our case
it is given to Flask via `make_response`.
* (Python 3) Use Redis' decode_responses=True option (#4232)
* Fix test_outdated_queries_works_scheduled_queries_tracker (use utcnow)
* Make sure Redis connection uses decoded_responses option
* Remove unused imports.
* Use Redis' decode_responses option
* Remove cases of explicit Redis decoding
* Rename helper function and make sure it doesn't apply twice.
* Don't add decode_responses to Celery Redis connection URL
* Fix displaying error while connecting to SQLite
The exception message is always a string in Python 3, so no
need to try to decode things.
* Fix another missing exception message
* Handle JSON encoding for datasources returning bytes
SimpleJSON assumes the bytes it receives contain text data, so it
tries to UTF-8 encode them. It is sometimes not true, for instance
the SQLite datasource returns bytes for BLOB types, which typically
do not contain text but truly binary data.
This commit disables SimpleJSON auto encoding of bytes to str and
instead uses the same method as for memoryviews: generating a
hex representation of the data.
* Fix Python 3 compatibility with RQ
* Revert some changes 2to3 tends to do (#4261)
- Revert some changes 2to3 tends to do when it errs on the side of caution regarding dict view objects.
- Also fixed some naming issues with one character variables in list comprehensions.
- Fix Flask warning.
* Upgrade dependencies
* Remove useless `iter` added by 2to3
* Fix get_next_path tests (#4280)
* Removed setting SERVER_NAME in tests setup to avoid a warning.
* Change get_next_path to not return empty string in case of a domain only value.
* Fix redirect tests:
Since version 0.15 of Werkzeug it uses full path for fixing the location header instead of the root path.
* Remove explicit dependency for Werkzeug
* Switched pytz and certifi to unbinded versions.
* Switch to new library for getting country from IP
`python-geoip-geolite2` is not compatible with Python 3, instead
use `maxminddb-geolite2` which is very similar as it includes
the geolite2 database in the package .
* Python 3 RQ modifications (#4281)
* show current worker job (alongside with minor cosmetic column tweaks)
* avoid loading entire job data for queued jobs
* track general RQ queues (default, periodic and schemas)
* get all active RQ queues
* call get_celery_queues in another place
* merge dicts the Python 3 way
* extend the result_ttl of refresh_queries to 600 seconds to allow it to continue running periodically even after longer executions
* Remove legacy Python flake8 tests
* Decouple extensions from Flask app.
This separates the extension registry from the Flask app and also introduces a separate registry for preriodic tasks.
Fix#3466.
* Address review feedback.
* Update redash/extensions.py
Co-Authored-By: jezdez <jannis@leidel.info>
* Minor comment in requirements.
* Refactoring after getting feedback.
* Uncoupled bin/bundle-extensions from Flas app instance.
* Load bundles in bundle script and don’t rely on Flask.
* Upgraded to importlib-metadata 0.9.
* Add missing requirement.
* Fix TypeError.
* Added requirements for bundle_extension script.
* Install bundles requirement file correctly.
* Decouple bundle loading code from Redash.
* Install bundle requirements from requirements.txt.
* Use circleci/node for build-docker-image step, too.
* Speed up builds by skipping requirements_all_ds.txt
* Update docker compose file version
* Start services before running commands
* Add boto and Athena dependencies to requirements_dev.txt
1. Simplify user creation to create a non system user (so the uid will usually
match the host user).
2. Set the user to redash & remove the need to change user in docker entrypoint.
I realized that it makes more sense to run Webpack on the host machine
as usually you will need to install Node's tools on the host to enjoy
better intelisense and eslint support in the editor.
On top of that, installing Node.js on most developer machines should be
relatively easy.