diff --git a/Dockerfile.apidocs b/Dockerfile.apidocs deleted file mode 100644 index 1287ccbcdff1e..0000000000000 --- a/Dockerfile.apidocs +++ /dev/null @@ -1,75 +0,0 @@ -# Sentry api documentation generation environment -# -# Instructions: -# -# Build the container: -# $ docker build -t sentry:apidocs -f Dockerfile.apidocs . -# Run the container: -# $ docker run --rm -v $(pwd):/usr/src/output sentry:apidocs -# -# The container will dump the generated documentation in markdown and JSON -# formats into the /usr/src/output directory which you should mount as a volume -# -FROM python:2.7.15-slim-stretch - -RUN mkdir -p /usr/share/man/man1 \ - /usr/share/man/man2 \ - /usr/share/man/man3 \ - /usr/share/man/man4 \ - /usr/share/man/man5 \ - /usr/share/man/man6 \ - /usr/share/man/man7 - -RUN groupadd -r redis --gid=998 \ - && useradd -r -g redis --uid=998 redis \ - && groupadd -r postgres --gid=999 \ - && useradd -r -g postgres --uid=999 postgres - -ENV PG_MAJOR 9.6 -ENV PATH /usr/lib/postgresql/$PG_MAJOR/bin:$PATH - -RUN apt-get update && apt-get install -y --no-install-recommends \ - ca-certificates \ - clang \ - curl \ - g++ \ - gcc \ - git \ - libffi-dev \ - libjpeg-dev \ - libpq-dev \ - libxml2-dev \ - libxmlsec1-dev \ - libxslt-dev \ - libyaml-dev \ - llvm \ - bzip2 \ - make \ - postgresql-$PG_MAJOR \ - postgresql-contrib-$PG_MAJOR \ - redis-server \ - unzip \ - && rm -rf /var/lib/apt/lists/* - -# Sane defaults for pip -ENV PIP_NO_CACHE_DIR off -ENV PIP_DISABLE_PIP_VERSION_CHECK on -ENV PYTHONUNBUFFERED 1 - -# Disable yarn installation -ENV SENTRY_LIGHT_BUILD=1 - -# Update postgres configuration to allow local access -RUN rm "/etc/postgresql/$PG_MAJOR/main/pg_hba.conf" \ - && touch "/etc/postgresql/$PG_MAJOR/main/pg_hba.conf" \ - && chown -R postgres "/etc/postgresql/$PG_MAJOR/main/pg_hba.conf" \ - && { echo; echo "host all all 0.0.0.0/0 trust"; } >> "/etc/postgresql/$PG_MAJOR/main/pg_hba.conf" \ - && { echo; echo "local all all trust"; } >> "/etc/postgresql/$PG_MAJOR/main/pg_hba.conf" - -RUN mkdir -p /usr/src/bin -COPY scripts/build-api-docs /usr/bin - -WORKDIR /usr/src -VOLUME /usr/src/output - -CMD [ "/usr/bin/build-api-docs" ] diff --git a/bin/update-api-docs b/bin/update-api-docs deleted file mode 100755 index 60ddfc03b92c9..0000000000000 --- a/bin/update-api-docs +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env bash -echo "--> Building docker image" -docker build -t sentry:apidocs -f Dockerfile.apidocs . - -echo "--> Building API docs" -mkdir -p apidocs -docker run -v $(pwd)/apidocs:/usr/src/output sentry:apidocs - -echo "--> Moving API docs in-place" -rm -rf src/collections/_documentation/api/{events,organizations,projects,releases,teams} -cp -R apidocs/markdown/{events,organizations,projects,releases,teams} src/collections/_documentation/api diff --git a/scripts/build-api-docs b/scripts/build-api-docs deleted file mode 100755 index c4a06c05cb730..0000000000000 --- a/scripts/build-api-docs +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env bash -branch=master - -echo "--> Starting postgres" -su postgres -c 'mkdir -p /var/lib/postgresql/data' -su postgres -c '/usr/lib/postgresql/9.6/bin/initdb -D /var/lib/postgresql/data' -su postgres -c '/usr/lib/postgresql/9.6/bin/pg_ctl -D /var/lib/postgresql/data start' & -su postgres -c 'createdb -U postgres -E utf8 --template template0 sentry_api_docs' -su postgres -c 'psql -U postgres -h 127.0.0.1 -c "CREATE EXTENSION IF NOT EXISTS citext WITH SCHEMA public;"' - -echo "--> Fetching sentry source" -curl -Ls https://github.com/getsentry/sentry/archive/${branch}.zip --output sentry.zip -unzip sentry.zip - -echo "--> Installing sentry dependencies" -cd sentry-${branch} - -export SENTRY_LIGHT_BUILD=1 -pip install -U setuptools -pip install -e '.[dev]' - -echo "--> Starting Redis" -redis-server & - -echo "--> Building API docs" -python api-docs/generator.py --output-path=/usr/src/output --output-format=both diff --git a/src/api/events/delete-group-details.json b/src/api/events/delete-group-details.json deleted file mode 100644 index 267e169ce4fa6..0000000000000 --- a/src/api/events/delete-group-details.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "api_path": "/api/0/issues/{issue_id}/", - "authentication": "required", - "description": "Removes an individual issue.", - "example_request": "DELETE /api/0/issues/5/ HTTP/1.1\nHost: sentry.io\nAuthorization: Bearer ", - "example_response": "HTTP/1.1 202 ACCEPTED\nContent-Length: 0\nX-XSS-Protection: 1; mode=block\nContent-Language: en\nX-Content-Type-Options: nosniff\nVary: Accept-Language, Cookie\nAllow: GET, PUT, DELETE, HEAD, OPTIONS\nX-Frame-Options: deny", - "method": "DELETE", - "parameters": null, - "path_parameters": [ - { - "description": "the ID of the issue to delete.", - "name": "issue_id", - "type": "string" - } - ], - "query_parameters": null, - "sidebar_order": 8, - "title": "Remove an Issue", - "warning": null -} diff --git a/src/api/events/delete-project-group-index.json b/src/api/events/delete-project-group-index.json deleted file mode 100644 index c8d692887d89e..0000000000000 --- a/src/api/events/delete-project-group-index.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "api_path": "/api/0/projects/{organization_slug}/{project_slug}/issues/", - "authentication": "required", - "description": "Permanently remove the given issues. The list of issues to\nmodify is given through the `id` query parameter. It is repeated\nfor each issue that should be removed.\n\nOnly queries by 'id' are accepted.\n\nIf any ids are out of scope this operation will succeed without\nany data mutation.", - "example_request": "DELETE /api/0/projects/the-interstellar-jurisdiction/amazing-plumbing/issues/?id=5&id=6 HTTP/1.1\nHost: sentry.io\nAuthorization: Bearer ", - "example_response": "HTTP/1.1 204 NO CONTENT\nContent-Length: 0\nX-XSS-Protection: 1; mode=block\nContent-Language: en\nX-Content-Type-Options: nosniff\nVary: Accept-Language, Cookie\nAllow: GET, PUT, DELETE, HEAD, OPTIONS\nX-Frame-Options: deny", - "method": "DELETE", - "parameters": null, - "path_parameters": [ - { - "description": "the slug of the organization the issues belong to.", - "name": "organization_slug", - "type": "string" - }, - { - "description": "the slug of the project the issues belong to.", - "name": "project_slug", - "type": "string" - } - ], - "query_parameters": [ - { - "description": "a list of IDs of the issues to be removed. This parameter shall be repeated for each issue.", - "name": "id", - "type": "int" - } - ], - "sidebar_order": 5, - "title": "Bulk Remove a List of Issues", - "warning": null -} diff --git a/src/api/events/get-group-details.json b/src/api/events/get-group-details.json deleted file mode 100644 index ad20875585e3a..0000000000000 --- a/src/api/events/get-group-details.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "api_path": "/api/0/issues/{issue_id}/", - "authentication": "required", - "description": "Return details on an individual issue. This returns the basic stats for\nthe issue (title, last seen, first seen), some overall numbers (number\nof comments, user reports) as well as the summarized event data.", - "example_request": "GET /api/0/issues/1/ HTTP/1.1\nHost: sentry.io\nAuthorization: Bearer ", - "example_response": "HTTP/1.1 200 OK\nContent-Length: 2741\nX-XSS-Protection: 1; mode=block\nContent-Language: en\nX-Content-Type-Options: nosniff\nVary: Accept-Language, Cookie\nAllow: GET, PUT, DELETE, HEAD, OPTIONS\nX-Frame-Options: deny\nContent-Type: application/json\n\n{\n \"activity\": [\n {\n \"data\": {}, \n \"dateCreated\": \"2018-11-06T21:19:55Z\", \n \"id\": \"0\", \n \"type\": \"first_seen\", \n \"user\": null\n }\n ], \n \"annotations\": [], \n \"assignedTo\": null, \n \"count\": \"1\", \n \"culprit\": \"raven.scripts.runner in main\", \n \"firstRelease\": {\n \"authors\": [], \n \"commitCount\": 0, \n \"data\": {}, \n \"dateCreated\": \"2018-11-06T21:19:55.146Z\", \n \"dateReleased\": null, \n \"deployCount\": 0, \n \"firstEvent\": \"2018-11-06T21:19:55.271Z\", \n \"lastCommit\": null, \n \"lastDeploy\": null, \n \"lastEvent\": \"2018-11-06T21:19:55.271Z\", \n \"newGroups\": 0, \n \"owner\": null, \n \"projects\": [\n {\n \"name\": \"Pump Station\", \n \"slug\": \"pump-station\"\n }\n ], \n \"ref\": null, \n \"shortVersion\": \"1764232\", \n \"url\": null, \n \"version\": \"17642328ead24b51867165985996d04b29310337\"\n }, \n \"firstSeen\": \"2018-11-06T21:19:55Z\", \n \"hasSeen\": false, \n \"id\": \"1\", \n \"isBookmarked\": false, \n \"isPublic\": false, \n \"isSubscribed\": true, \n \"lastRelease\": null, \n \"lastSeen\": \"2018-11-06T21:19:55Z\", \n \"level\": \"error\", \n \"logger\": null, \n \"metadata\": {\n \"title\": \"This is an example Python exception\"\n }, \n \"numComments\": 0, \n \"participants\": [], \n \"permalink\": \"https://sentry.io/the-interstellar-jurisdiction/pump-station/issues/1/\", \n \"pluginActions\": [], \n \"pluginContexts\": [], \n \"pluginIssues\": [], \n \"project\": {\n \"id\": \"2\", \n \"name\": \"Pump Station\", \n \"slug\": \"pump-station\"\n }, \n \"seenBy\": [], \n \"shareId\": null, \n \"shortId\": \"PUMP-STATION-1\", \n \"stats\": {\n \"24h\": [\n [\n 1541451600.0, \n 557\n ], \n [\n 1541455200.0, \n 473\n ], \n [\n 1541458800.0, \n 914\n ], \n [\n 1541462400.0, \n 991\n ], \n [\n 1541466000.0, \n 925\n ], \n [\n 1541469600.0, \n 881\n ], \n [\n 1541473200.0, \n 182\n ], \n [\n 1541476800.0, \n 490\n ], \n [\n 1541480400.0, \n 820\n ], \n [\n 1541484000.0, \n 322\n ], \n [\n 1541487600.0, \n 836\n ], \n [\n 1541491200.0, \n 565\n ], \n [\n 1541494800.0, \n 758\n ], \n [\n 1541498400.0, \n 880\n ], \n [\n 1541502000.0, \n 677\n ], \n [\n 1541505600.0, \n 381\n ], \n [\n 1541509200.0, \n 814\n ], \n [\n 1541512800.0, \n 329\n ], \n [\n 1541516400.0, \n 446\n ], \n [\n 1541520000.0, \n 731\n ], \n [\n 1541523600.0, \n 111\n ], \n [\n 1541527200.0, \n 926\n ], \n [\n 1541530800.0, \n 772\n ], \n [\n 1541534400.0, \n 400\n ], \n [\n 1541538000.0, \n 943\n ]\n ], \n \"30d\": [\n [\n 1538870400.0, \n 565\n ], \n [\n 1538956800.0, \n 12862\n ], \n [\n 1539043200.0, \n 15617\n ], \n [\n 1539129600.0, \n 10809\n ], \n [\n 1539216000.0, \n 15065\n ], \n [\n 1539302400.0, \n 12927\n ], \n [\n 1539388800.0, \n 12994\n ], \n [\n 1539475200.0, \n 13139\n ], \n [\n 1539561600.0, \n 11838\n ], \n [\n 1539648000.0, \n 12088\n ], \n [\n 1539734400.0, \n 12338\n ], \n [\n 1539820800.0, \n 12768\n ], \n [\n 1539907200.0, \n 12816\n ], \n [\n 1539993600.0, \n 15356\n ], \n [\n 1540080000.0, \n 10910\n ], \n [\n 1540166400.0, \n 12306\n ], \n [\n 1540252800.0, \n 12912\n ], \n [\n 1540339200.0, \n 14700\n ], \n [\n 1540425600.0, \n 11890\n ], \n [\n 1540512000.0, \n 11684\n ], \n [\n 1540598400.0, \n 13510\n ], \n [\n 1540684800.0, \n 12625\n ], \n [\n 1540771200.0, \n 12811\n ], \n [\n 1540857600.0, \n 13180\n ], \n [\n 1540944000.0, \n 14651\n ], \n [\n 1541030400.0, \n 14161\n ], \n [\n 1541116800.0, \n 12612\n ], \n [\n 1541203200.0, \n 14316\n ], \n [\n 1541289600.0, \n 14742\n ], \n [\n 1541376000.0, \n 12505\n ], \n [\n 1541462400.0, \n 14180\n ]\n ]\n }, \n \"status\": \"unresolved\", \n \"statusDetails\": {}, \n \"subscriptionDetails\": null, \n \"tags\": [], \n \"title\": \"This is an example Python exception\", \n \"type\": \"default\", \n \"userCount\": 0, \n \"userReportCount\": 0\n}", - "method": "GET", - "parameters": null, - "path_parameters": [ - { - "description": "the ID of the issue to retrieve.", - "name": "issue_id", - "type": "string" - } - ], - "query_parameters": null, - "sidebar_order": 6, - "title": "Retrieve an Issue", - "warning": null -} diff --git a/src/api/events/get-group-events-latest.json b/src/api/events/get-group-events-latest.json deleted file mode 100644 index eea0b8a58fe21..0000000000000 --- a/src/api/events/get-group-events-latest.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "api_path": "/api/0/issues/{issue_id}/events/latest/", - "authentication": "", - "description": "Retrieves the details of the latest event for an issue.", - "example_request": "GET /api/0/issues/1/events/latest/ HTTP/1.1\nHost: sentry.io\nAuthorization: Bearer ", - "example_response": "HTTP/1.1 200 OK\nContent-Length: 9366\nX-XSS-Protection: 1; mode=block\nContent-Language: en\nX-Content-Type-Options: nosniff\nVary: Accept-Language, Cookie\nAllow: GET, HEAD, OPTIONS\nX-Frame-Options: deny\nContent-Type: application/json\n\n{\n \"_meta\": {\n \"context\": null, \n \"contexts\": null, \n \"entries\": {}, \n \"message\": null, \n \"packages\": null, \n \"sdk\": null, \n \"tags\": {}, \n \"user\": null\n }, \n \"context\": {\n \"emptyList\": [], \n \"emptyMap\": {}, \n \"length\": 10837790, \n \"results\": [\n 1, \n 2, \n 3, \n 4, \n 5\n ], \n \"session\": {\n \"foo\": \"bar\"\n }, \n \"unauthorized\": false, \n \"url\": \"http://example.org/foo/bar/\"\n }, \n \"contexts\": {}, \n \"dateCreated\": \"2018-11-06T21:19:55Z\", \n \"dateReceived\": \"2018-11-06T21:19:55Z\", \n \"dist\": null, \n \"entries\": [\n {\n \"data\": {\n \"message\": \"This is an example Python exception\"\n }, \n \"type\": \"message\"\n }, \n {\n \"data\": {\n \"frames\": [\n {\n \"absPath\": \"/home/ubuntu/.virtualenvs/getsentry/src/raven/raven/base.py\", \n \"colNo\": null, \n \"context\": [\n [\n 298, \n \" frames = stack\"\n ], \n [\n 299, \n \"\"\n ], \n [\n 300, \n \" data.update({\"\n ], \n [\n 301, \n \" 'sentry.interfaces.Stacktrace': {\"\n ], \n [\n 302, \n \" 'frames': get_stack_info(frames,\"\n ], \n [\n 303, \n \" transformer=self.transform)\"\n ], \n [\n 304, \n \" },\"\n ], \n [\n 305, \n \" })\"\n ], \n [\n 306, \n \"\"\n ], \n [\n 307, \n \" if 'sentry.interfaces.Stacktrace' in data:\"\n ], \n [\n 308, \n \" if self.include_paths:\"\n ]\n ], \n \"errors\": null, \n \"filename\": \"raven/base.py\", \n \"function\": \"build_msg\", \n \"inApp\": false, \n \"instructionAddr\": null, \n \"lineNo\": 303, \n \"module\": \"raven.base\", \n \"package\": null, \n \"platform\": null, \n \"symbol\": null, \n \"symbolAddr\": null, \n \"trust\": null, \n \"vars\": {\n \"'culprit'\": null, \n \"'data'\": {\n \"'message'\": \"u'This is a test message generated using ``raven test``'\", \n \"'sentry.interfaces.Message'\": {\n \"'message'\": \"u'This is a test message generated using ``raven test``'\", \n \"'params'\": []\n }\n }, \n \"'date'\": \"datetime.datetime(2013, 8, 13, 3, 8, 24, 880386)\", \n \"'event_id'\": \"'54a322436e1b47b88e239b78998ae742'\", \n \"'event_type'\": \"'raven.events.Message'\", \n \"'extra'\": {\n \"'go_deeper'\": [\n [\n {\n \"'bar'\": [\n \"'baz'\"\n ], \n \"'foo'\": \"'bar'\"\n }\n ]\n ], \n \"'loadavg'\": [\n 0.37255859375, \n 0.5341796875, \n 0.62939453125\n ], \n \"'user'\": \"'dcramer'\"\n }, \n \"'frames'\": \"\", \n \"'handler'\": \"\", \n \"'k'\": \"'sentry.interfaces.Message'\", \n \"'kwargs'\": {\n \"'level'\": 20, \n \"'message'\": \"'This is a test message generated using ``raven test``'\"\n }, \n \"'public_key'\": null, \n \"'result'\": {\n \"'message'\": \"u'This is a test message generated using ``raven test``'\", \n \"'sentry.interfaces.Message'\": {\n \"'message'\": \"u'This is a test message generated using ``raven test``'\", \n \"'params'\": []\n }\n }, \n \"'self'\": \"\", \n \"'stack'\": true, \n \"'tags'\": null, \n \"'time_spent'\": null, \n \"'v'\": {\n \"'message'\": \"u'This is a test message generated using ``raven test``'\", \n \"'params'\": []\n }\n }\n }, \n {\n \"absPath\": \"/home/ubuntu/.virtualenvs/getsentry/src/raven/raven/base.py\", \n \"colNo\": null, \n \"context\": [\n [\n 454, \n \" if not self.is_enabled():\"\n ], \n [\n 455, \n \" return\"\n ], \n [\n 456, \n \"\"\n ], \n [\n 457, \n \" data = self.build_msg(\"\n ], \n [\n 458, \n \" event_type, data, date, time_spent, extra, stack, tags=tags,\"\n ], \n [\n 459, \n \" **kwargs)\"\n ], \n [\n 460, \n \"\"\n ], \n [\n 461, \n \" self.send(**data)\"\n ], \n [\n 462, \n \"\"\n ], \n [\n 463, \n \" return (data.get('event_id'),)\"\n ], \n [\n 464, \n \"\"\n ]\n ], \n \"errors\": null, \n \"filename\": \"raven/base.py\", \n \"function\": \"capture\", \n \"inApp\": false, \n \"instructionAddr\": null, \n \"lineNo\": 459, \n \"module\": \"raven.base\", \n \"package\": null, \n \"platform\": null, \n \"symbol\": null, \n \"symbolAddr\": null, \n \"trust\": null, \n \"vars\": {\n \"'data'\": null, \n \"'date'\": null, \n \"'event_type'\": \"'raven.events.Message'\", \n \"'extra'\": {\n \"'go_deeper'\": [\n [\n {\n \"'bar'\": [\n \"'baz'\"\n ], \n \"'foo'\": \"'bar'\"\n }\n ]\n ], \n \"'loadavg'\": [\n 0.37255859375, \n 0.5341796875, \n 0.62939453125\n ], \n \"'user'\": \"'dcramer'\"\n }, \n \"'kwargs'\": {\n \"'level'\": 20, \n \"'message'\": \"'This is a test message generated using ``raven test``'\"\n }, \n \"'self'\": \"\", \n \"'stack'\": true, \n \"'tags'\": null, \n \"'time_spent'\": null\n }\n }, \n {\n \"absPath\": \"/home/ubuntu/.virtualenvs/getsentry/src/raven/raven/base.py\", \n \"colNo\": null, \n \"context\": [\n [\n 572, \n \" \\\"\\\"\\\"\"\n ], \n [\n 573, \n \" Creates an event from ``message``.\"\n ], \n [\n 574, \n \"\"\n ], \n [\n 575, \n \" >>> client.captureMessage('My event just happened!')\"\n ], \n [\n 576, \n \" \\\"\\\"\\\"\"\n ], \n [\n 577, \n \" return self.capture('raven.events.Message', message=message, **kwargs)\"\n ], \n [\n 578, \n \"\"\n ], \n [\n 579, \n \" def captureException(self, exc_info=None, **kwargs):\"\n ], \n [\n 580, \n \" \\\"\\\"\\\"\"\n ], \n [\n 581, \n \" Creates an event from an exception.\"\n ], \n [\n 582, \n \"\"\n ]\n ], \n \"errors\": null, \n \"filename\": \"raven/base.py\", \n \"function\": \"captureMessage\", \n \"inApp\": false, \n \"instructionAddr\": null, \n \"lineNo\": 577, \n \"module\": \"raven.base\", \n \"package\": null, \n \"platform\": null, \n \"symbol\": null, \n \"symbolAddr\": null, \n \"trust\": null, \n \"vars\": {\n \"'kwargs'\": {\n \"'data'\": null, \n \"'extra'\": {\n \"'go_deeper'\": [\n [\n {\n \"'bar'\": [\n \"'baz'\"\n ], \n \"'foo'\": \"'bar'\"\n }\n ]\n ], \n \"'loadavg'\": [\n 0.37255859375, \n 0.5341796875, \n 0.62939453125\n ], \n \"'user'\": \"'dcramer'\"\n }, \n \"'level'\": 20, \n \"'stack'\": true, \n \"'tags'\": null\n }, \n \"'message'\": \"'This is a test message generated using ``raven test``'\", \n \"'self'\": \"\"\n }\n }, \n {\n \"absPath\": \"/home/ubuntu/.virtualenvs/getsentry/src/raven/raven/scripts/runner.py\", \n \"colNo\": null, \n \"context\": [\n [\n 72, \n \" level=logging.INFO,\"\n ], \n [\n 73, \n \" stack=True,\"\n ], \n [\n 74, \n \" tags=options.get('tags', {}),\"\n ], \n [\n 75, \n \" extra={\"\n ], \n [\n 76, \n \" 'user': get_uid(),\"\n ], \n [\n 77, \n \" 'loadavg': get_loadavg(),\"\n ], \n [\n 78, \n \" },\"\n ], \n [\n 79, \n \" ))\"\n ], \n [\n 80, \n \"\"\n ], \n [\n 81, \n \" if client.state.did_fail():\"\n ], \n [\n 82, \n \" print('error!')\"\n ]\n ], \n \"errors\": null, \n \"filename\": \"raven/scripts/runner.py\", \n \"function\": \"send_test_message\", \n \"inApp\": false, \n \"instructionAddr\": null, \n \"lineNo\": 77, \n \"module\": \"raven.scripts.runner\", \n \"package\": null, \n \"platform\": null, \n \"symbol\": null, \n \"symbolAddr\": null, \n \"trust\": null, \n \"vars\": {\n \"'client'\": \"\", \n \"'data'\": null, \n \"'k'\": \"'secret_key'\", \n \"'options'\": {\n \"'data'\": null, \n \"'tags'\": null\n }\n }\n }, \n {\n \"absPath\": \"/home/ubuntu/.virtualenvs/getsentry/src/raven/raven/scripts/runner.py\", \n \"colNo\": null, \n \"context\": [\n [\n 107, \n \" print(\\\"Using DSN configuration:\\\")\"\n ], \n [\n 108, \n \" print(\\\" \\\", dsn)\"\n ], \n [\n 109, \n \" print()\"\n ], \n [\n 110, \n \"\"\n ], \n [\n 111, \n \" client = Client(dsn, include_paths=['raven'])\"\n ], \n [\n 112, \n \" send_test_message(client, opts.__dict__)\"\n ]\n ], \n \"errors\": null, \n \"filename\": \"raven/scripts/runner.py\", \n \"function\": \"main\", \n \"inApp\": false, \n \"instructionAddr\": null, \n \"lineNo\": 112, \n \"module\": \"raven.scripts.runner\", \n \"package\": null, \n \"platform\": null, \n \"symbol\": null, \n \"symbolAddr\": null, \n \"trust\": null, \n \"vars\": {\n \"'args'\": [\n \"'test'\", \n \"'https://ebc35f33e151401f9deac549978bda11:f3403f81e12e4c24942d505f086b2cad@sentry.io/1'\"\n ], \n \"'client'\": \"\", \n \"'dsn'\": \"'https://ebc35f33e151401f9deac549978bda11:f3403f81e12e4c24942d505f086b2cad@sentry.io/1'\", \n \"'opts'\": \"\", \n \"'parser'\": \"\", \n \"'root'\": \"\"\n }\n }\n ], \n \"framesOmitted\": null, \n \"hasSystemFrames\": false, \n \"registers\": null\n }, \n \"type\": \"stacktrace\"\n }, \n {\n \"data\": {\n \"context\": [\n [\n 11, \n \"{% endif %}\\n\"\n ], \n [\n 12, \n \"\\n\"\n ], \n [\n 13, \n \"