<img src="https://github.com/spectacles-ci/spectacles/raw/master/docs/img/logo.png" width="600">
[![CircleCI](https://circleci.com/gh/spectacles-ci/spectacles.svg?style=svg)](https://circleci.com/gh/spectacles-ci/spectacles)
[![downloads](https://img.shields.io/pypi/dm/spectacles)](https://img.shields.io/pypi/dm/spectacles)
## What is Spectacles?
**[Spectacles](https://spectacles.dev/?utm_source=github&utm_medium=readme) is a continuous integration tool for Looker and LookML.** Spectacles runs **validators** which perform a range of tests on your Looker instance and your LookML. Each validator interacts with the Looker API to run tests that ensure your Looker instance is running smoothly.
From the command line, you can run the following validators as subcommands (e.g. `spectacles sql`):
✅ [**SQL** validation](https://docs.spectacles.dev/cli/tutorials/validators#the-sql-validator) - tests the `sql` field of each dimension for database errors
✅ [**Assert** validation](https://docs.spectacles.dev/cli/tutorials/validators#the-assert-validator) - runs [Looker data tests](https://docs.looker.com/reference/model-params/test)
✅ [**Content** validation](https://docs.spectacles.dev/cli/tutorials/validators#the-content-validator) - tests for errors in Looks and Dashboards
✅ [**LookML** validation](https://docs.spectacles.dev/cli/tutorials/validators/#the-lookml-validator) - runs [LookML validator](https://cloud.google.com/looker/docs/lookml-validation)
## Installation
Spectacles CLI is distributed on PyPi and is easy to install with pip:
```bash
pip install spectacles
```
> 📣 You can also use Spectacles as a **full-service web application**! Check out **[our website](https://spectacles.dev/?utm_source=github&utm_medium=readme)** to learn more.
## Documentation
You can find detailed documentation for the CLI and web app on our docs page: [docs.spectacles.dev](https://docs.spectacles.dev/cli/tutorials/getting-started).
## Why we built this
Occasionally, when we make changes to LookML or our data warehouse, we break downstream experiences in Looker:
* Changing the name of a database column without changing the corresponding `sql` field in our Looker view, leaving our users with a database error when using that field
* Adding an invalid join to an explore that fans out our data, inflating a key metric that drives our business without realising
* Editing LookML without remembering to check the Content Validator for errors, disrupting Dashboards and Looks that our users rely on
* Giving a new dimension a confusing name, causing other developers in our team to spend extra time trying to figure out how it should be used
**We believe in the power of testing and continuous integration for analytics.** We believe that automated tests should catch these errors before they're ever pushed to production.
We wanted a single tool to perform these checks for us, so we built Spectacles to enhance the business intelligence layer of analytics CI pipelines.
## Community
Have a question or just want to chat Spectacles or Looker? [Join us in Slack.](https://join.slack.com/t/spectacles-ci/shared_invite/zt-akmm4mo6-XnPcUUaG3Z5~giRc_5JaUQ)
Raw data
{
"_id": null,
"home_page": null,
"name": "spectacles",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.9",
"maintainer_email": null,
"keywords": "Looker, LookML, CI, continuous integration, testing, validation",
"author": "Spectacles",
"author_email": "hello@spectacles.dev",
"download_url": "https://files.pythonhosted.org/packages/34/c1/cc990df809ebca7146f2bbc233dd4e83c8d75a24879a9ebadb9f62675b56/spectacles-2.4.10.tar.gz",
"platform": null,
"description": "<img src=\"https://github.com/spectacles-ci/spectacles/raw/master/docs/img/logo.png\" width=\"600\">\n\n[![CircleCI](https://circleci.com/gh/spectacles-ci/spectacles.svg?style=svg)](https://circleci.com/gh/spectacles-ci/spectacles)\n[![downloads](https://img.shields.io/pypi/dm/spectacles)](https://img.shields.io/pypi/dm/spectacles)\n\n## What is Spectacles?\n\n**[Spectacles](https://spectacles.dev/?utm_source=github&utm_medium=readme) is a continuous integration tool for Looker and LookML.** Spectacles runs **validators** which perform a range of tests on your Looker instance and your LookML. Each validator interacts with the Looker API to run tests that ensure your Looker instance is running smoothly.\n\nFrom the command line, you can run the following validators as subcommands (e.g. `spectacles sql`):\n\n\u2705 [**SQL** validation](https://docs.spectacles.dev/cli/tutorials/validators#the-sql-validator) - tests the `sql` field of each dimension for database errors\n\n\u2705 [**Assert** validation](https://docs.spectacles.dev/cli/tutorials/validators#the-assert-validator) - runs [Looker data tests](https://docs.looker.com/reference/model-params/test)\n\n\u2705 [**Content** validation](https://docs.spectacles.dev/cli/tutorials/validators#the-content-validator) - tests for errors in Looks and Dashboards\n\n\u2705 [**LookML** validation](https://docs.spectacles.dev/cli/tutorials/validators/#the-lookml-validator) - runs [LookML validator](https://cloud.google.com/looker/docs/lookml-validation)\n\n## Installation\n\nSpectacles CLI is distributed on PyPi and is easy to install with pip:\n\n```bash\npip install spectacles\n```\n\n> \ud83d\udce3 You can also use Spectacles as a **full-service web application**! Check out **[our website](https://spectacles.dev/?utm_source=github&utm_medium=readme)** to learn more.\n\n## Documentation\n\nYou can find detailed documentation for the CLI and web app on our docs page: [docs.spectacles.dev](https://docs.spectacles.dev/cli/tutorials/getting-started).\n\n## Why we built this\n\nOccasionally, when we make changes to LookML or our data warehouse, we break downstream experiences in Looker:\n\n* Changing the name of a database column without changing the corresponding `sql` field in our Looker view, leaving our users with a database error when using that field\n* Adding an invalid join to an explore that fans out our data, inflating a key metric that drives our business without realising\n* Editing LookML without remembering to check the Content Validator for errors, disrupting Dashboards and Looks that our users rely on\n* Giving a new dimension a confusing name, causing other developers in our team to spend extra time trying to figure out how it should be used\n\n**We believe in the power of testing and continuous integration for analytics.** We believe that automated tests should catch these errors before they're ever pushed to production.\n\nWe wanted a single tool to perform these checks for us, so we built Spectacles to enhance the business intelligence layer of analytics CI pipelines.\n\n## Community\n\nHave a question or just want to chat Spectacles or Looker? [Join us in Slack.](https://join.slack.com/t/spectacles-ci/shared_invite/zt-akmm4mo6-XnPcUUaG3Z5~giRc_5JaUQ)\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A command-line, continuous integration tool for Looker and LookML.",
"version": "2.4.10",
"project_urls": {
"Documentation": "https://docs.spectacles.dev/cli/tutorials/getting-started",
"Homepage": "https://spectacles.dev",
"Repository": "https://github.com/spectacles-ci/spectacles"
},
"split_keywords": [
"looker",
" lookml",
" ci",
" continuous integration",
" testing",
" validation"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "b233e9ed74a5076dfb673f89d349b3440d3757d2036dc1b97509d4199a995ae0",
"md5": "0a010d3de8dbf3d554ab7f1d09ba2b66",
"sha256": "bdbf325f2a140a217f845773fe2bf85a9d6bb64f1cfa5f9cc339093560d31a8d"
},
"downloads": -1,
"filename": "spectacles-2.4.10-py3-none-any.whl",
"has_sig": false,
"md5_digest": "0a010d3de8dbf3d554ab7f1d09ba2b66",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.9",
"size": 47735,
"upload_time": "2024-08-12T10:40:29",
"upload_time_iso_8601": "2024-08-12T10:40:29.675475Z",
"url": "https://files.pythonhosted.org/packages/b2/33/e9ed74a5076dfb673f89d349b3440d3757d2036dc1b97509d4199a995ae0/spectacles-2.4.10-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "34c1cc990df809ebca7146f2bbc233dd4e83c8d75a24879a9ebadb9f62675b56",
"md5": "53364b41bacebf38436246c9f62f1a1c",
"sha256": "6652c3b656bf4214423a1335d940b6e2693b00f411a90b212bfd01f8739e7bac"
},
"downloads": -1,
"filename": "spectacles-2.4.10.tar.gz",
"has_sig": false,
"md5_digest": "53364b41bacebf38436246c9f62f1a1c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.9",
"size": 42826,
"upload_time": "2024-08-12T10:40:31",
"upload_time_iso_8601": "2024-08-12T10:40:31.225781Z",
"url": "https://files.pythonhosted.org/packages/34/c1/cc990df809ebca7146f2bbc233dd4e83c8d75a24879a9ebadb9f62675b56/spectacles-2.4.10.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-08-12 10:40:31",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "spectacles-ci",
"github_project": "spectacles",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"circle": true,
"tox": true,
"lcname": "spectacles"
}