Compare commits
29 Commits
v0.80.0-cl
...
v0.77.2-in
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c3811d83c6 | ||
|
|
b44720a2dd | ||
|
|
85eb759ae5 | ||
|
|
b80a68f265 | ||
|
|
9ef9e522a1 | ||
|
|
c57268030e | ||
|
|
62c315da55 | ||
|
|
41b1c72309 | ||
|
|
91925bc9a0 | ||
|
|
5217771af2 | ||
|
|
28a01876b3 | ||
|
|
760fb76b8d | ||
|
|
a881a2b0e0 | ||
|
|
205d9e45e3 | ||
|
|
f15bf15826 | ||
|
|
8b42a3d64d | ||
|
|
f34ebc2bc7 | ||
|
|
010369f11c | ||
|
|
52ae3ad8c7 | ||
|
|
570152d497 | ||
|
|
03d9460671 | ||
|
|
68731f9b25 | ||
|
|
0dd76eca8a | ||
|
|
893bd20a2d | ||
|
|
176bcbf466 | ||
|
|
9e498ddcc0 | ||
|
|
666a1fd0c7 | ||
|
|
8bc2f3e5b7 | ||
|
|
33458514d3 |
@@ -1,7 +1,6 @@
|
|||||||
.git
|
.git
|
||||||
.github
|
.github
|
||||||
.vscode
|
.vscode
|
||||||
.devenv
|
|
||||||
README.md
|
README.md
|
||||||
deploy
|
deploy
|
||||||
sample-apps
|
sample-apps
|
||||||
|
|||||||
10
.github/workflows/build-enterprise.yaml
vendored
10
.github/workflows/build-enterprise.yaml
vendored
@@ -73,7 +73,7 @@ jobs:
|
|||||||
uses: actions/cache@v4
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
path: frontend/.env
|
path: frontend/.env
|
||||||
key: enterprise-dotenv-${{ github.sha }}
|
key: dotenv-${{ github.sha }}
|
||||||
js-build:
|
js-build:
|
||||||
uses: signoz/primus.workflows/.github/workflows/js-build.yaml@main
|
uses: signoz/primus.workflows/.github/workflows/js-build.yaml@main
|
||||||
needs: prepare
|
needs: prepare
|
||||||
@@ -81,10 +81,10 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
PRIMUS_REF: main
|
PRIMUS_REF: main
|
||||||
JS_SRC: frontend
|
JS_SRC: frontend
|
||||||
JS_INPUT_ARTIFACT_CACHE_KEY: enterprise-dotenv-${{ github.sha }}
|
JS_INPUT_ARTIFACT_CACHE_KEY: dotenv-${{ github.sha }}
|
||||||
JS_INPUT_ARTIFACT_PATH: frontend/.env
|
JS_INPUT_ARTIFACT_PATH: frontend/.env
|
||||||
JS_OUTPUT_ARTIFACT_CACHE_KEY: enterprise-jsbuild-${{ github.sha }}
|
JS_OUTPUT_ARTIFACT_CACHE_KEY: jsbuild-${{ github.sha }}
|
||||||
JS_OUTPUT_ARTIFACT_PATH: frontend/build
|
JS_OUTPUT_ARTIFACT_PATH: frontend/build
|
||||||
DOCKER_BUILD: false
|
DOCKER_BUILD: false
|
||||||
DOCKER_MANIFEST: false
|
DOCKER_MANIFEST: false
|
||||||
go-build:
|
go-build:
|
||||||
@@ -93,7 +93,7 @@ jobs:
|
|||||||
secrets: inherit
|
secrets: inherit
|
||||||
with:
|
with:
|
||||||
PRIMUS_REF: main
|
PRIMUS_REF: main
|
||||||
GO_INPUT_ARTIFACT_CACHE_KEY: enterprise-jsbuild-${{ github.sha }}
|
GO_INPUT_ARTIFACT_CACHE_KEY: jsbuild-${{ github.sha }}
|
||||||
GO_INPUT_ARTIFACT_PATH: frontend/build
|
GO_INPUT_ARTIFACT_PATH: frontend/build
|
||||||
GO_BUILD_CONTEXT: ./ee/query-service
|
GO_BUILD_CONTEXT: ./ee/query-service
|
||||||
GO_BUILD_FLAGS: >-
|
GO_BUILD_FLAGS: >-
|
||||||
|
|||||||
21
.github/workflows/build-staging.yaml
vendored
21
.github/workflows/build-staging.yaml
vendored
@@ -64,13 +64,22 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
mkdir -p frontend
|
mkdir -p frontend
|
||||||
echo 'CI=1' > frontend/.env
|
echo 'CI=1' > frontend/.env
|
||||||
echo 'TUNNEL_URL=https://telemetry.staging.signoz.cloud/tunnel' >> frontend/.env
|
echo 'INTERCOM_APP_ID="${{ secrets.INTERCOM_APP_ID }}"' >> frontend/.env
|
||||||
echo 'TUNNEL_DOMAIN=https://telemetry.staging.signoz.cloud' >> frontend/.env
|
echo 'SEGMENT_ID="${{ secrets.SEGMENT_ID }}"' >> frontend/.env
|
||||||
|
echo 'SENTRY_AUTH_TOKEN="${{ secrets.SENTRY_AUTH_TOKEN }}"' >> frontend/.env
|
||||||
|
echo 'SENTRY_ORG="${{ secrets.SENTRY_ORG }}"' >> frontend/.env
|
||||||
|
echo 'SENTRY_PROJECT_ID="${{ secrets.SENTRY_PROJECT_ID }}"' >> frontend/.env
|
||||||
|
echo 'SENTRY_DSN="${{ secrets.SENTRY_DSN }}"' >> frontend/.env
|
||||||
|
echo 'TUNNEL_URL="${{ secrets.TUNNEL_URL }}"' >> frontend/.env
|
||||||
|
echo 'TUNNEL_DOMAIN="${{ secrets.TUNNEL_DOMAIN }}"' >> frontend/.env
|
||||||
|
echo 'POSTHOG_KEY="${{ secrets.POSTHOG_KEY }}"' >> frontend/.env
|
||||||
|
echo 'CUSTOMERIO_ID="${{ secrets.CUSTOMERIO_ID }}"' >> frontend/.env
|
||||||
|
echo 'CUSTOMERIO_SITE_ID="${{ secrets.CUSTOMERIO_SITE_ID }}"' >> frontend/.env
|
||||||
- name: cache-dotenv
|
- name: cache-dotenv
|
||||||
uses: actions/cache@v4
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
path: frontend/.env
|
path: frontend/.env
|
||||||
key: staging-dotenv-${{ github.sha }}
|
key: dotenv-${{ github.sha }}
|
||||||
js-build:
|
js-build:
|
||||||
uses: signoz/primus.workflows/.github/workflows/js-build.yaml@main
|
uses: signoz/primus.workflows/.github/workflows/js-build.yaml@main
|
||||||
needs: prepare
|
needs: prepare
|
||||||
@@ -78,9 +87,9 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
PRIMUS_REF: main
|
PRIMUS_REF: main
|
||||||
JS_SRC: frontend
|
JS_SRC: frontend
|
||||||
JS_INPUT_ARTIFACT_CACHE_KEY: staging-dotenv-${{ github.sha }}
|
JS_INPUT_ARTIFACT_CACHE_KEY: dotenv-${{ github.sha }}
|
||||||
JS_INPUT_ARTIFACT_PATH: frontend/.env
|
JS_INPUT_ARTIFACT_PATH: frontend/.env
|
||||||
JS_OUTPUT_ARTIFACT_CACHE_KEY: staging-jsbuild-${{ github.sha }}
|
JS_OUTPUT_ARTIFACT_CACHE_KEY: jsbuild-${{ github.sha }}
|
||||||
JS_OUTPUT_ARTIFACT_PATH: frontend/build
|
JS_OUTPUT_ARTIFACT_PATH: frontend/build
|
||||||
DOCKER_BUILD: false
|
DOCKER_BUILD: false
|
||||||
DOCKER_MANIFEST: false
|
DOCKER_MANIFEST: false
|
||||||
@@ -90,7 +99,7 @@ jobs:
|
|||||||
secrets: inherit
|
secrets: inherit
|
||||||
with:
|
with:
|
||||||
PRIMUS_REF: main
|
PRIMUS_REF: main
|
||||||
GO_INPUT_ARTIFACT_CACHE_KEY: staging-jsbuild-${{ github.sha }}
|
GO_INPUT_ARTIFACT_CACHE_KEY: jsbuild-${{ github.sha }}
|
||||||
GO_INPUT_ARTIFACT_PATH: frontend/build
|
GO_INPUT_ARTIFACT_PATH: frontend/build
|
||||||
GO_BUILD_CONTEXT: ./ee/query-service
|
GO_BUILD_CONTEXT: ./ee/query-service
|
||||||
GO_BUILD_FLAGS: >-
|
GO_BUILD_FLAGS: >-
|
||||||
|
|||||||
55
.github/workflows/integrationci.yaml
vendored
55
.github/workflows/integrationci.yaml
vendored
@@ -1,55 +0,0 @@
|
|||||||
name: integrationci
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
types:
|
|
||||||
- labeled
|
|
||||||
pull_request_target:
|
|
||||||
types:
|
|
||||||
- labeled
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
test:
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
src:
|
|
||||||
- bootstrap
|
|
||||||
sqlstore-provider:
|
|
||||||
- postgres
|
|
||||||
- sqlite
|
|
||||||
clickhouse-version:
|
|
||||||
- 24.1.2-alpine
|
|
||||||
- 24.12-alpine
|
|
||||||
schema-migrator-version:
|
|
||||||
- v0.111.38
|
|
||||||
postgres-version:
|
|
||||||
- 15
|
|
||||||
if: |
|
|
||||||
((github.event_name == 'pull_request' && ! github.event.pull_request.head.repo.fork && github.event.pull_request.user.login != 'dependabot[bot]' && ! contains(github.event.pull_request.labels.*.name, 'safe-to-test')) ||
|
|
||||||
(github.event_name == 'pull_request_target' && contains(github.event.pull_request.labels.*.name, 'safe-to-test'))) && contains(github.event.pull_request.labels.*.name, 'safe-to-integrate')
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: python
|
|
||||||
uses: actions/setup-python@v5
|
|
||||||
with:
|
|
||||||
python-version: 3.13
|
|
||||||
- name: poetry
|
|
||||||
run: |
|
|
||||||
python -m pip install poetry==2.1.2
|
|
||||||
python -m poetry config virtualenvs.in-project true
|
|
||||||
cd tests/integration && poetry install --no-root
|
|
||||||
- name: run
|
|
||||||
run: |
|
|
||||||
cd tests/integration && \
|
|
||||||
poetry run pytest -ra \
|
|
||||||
--basetemp=./tmp/ \
|
|
||||||
-vv \
|
|
||||||
--capture=no \
|
|
||||||
src/${{matrix.src}} \
|
|
||||||
--sqlstore-provider ${{matrix.sqlstore-provider}} \
|
|
||||||
--postgres-version ${{matrix.postgres-version}} \
|
|
||||||
--clickhouse-version ${{matrix.clickhouse-version}} \
|
|
||||||
--schema-migrator-version ${{matrix.schema-migrator-version}}
|
|
||||||
4
.github/workflows/prereleaser.yaml
vendored
4
.github/workflows/prereleaser.yaml
vendored
@@ -1,9 +1,9 @@
|
|||||||
name: prereleaser
|
name: prereleaser
|
||||||
|
|
||||||
on:
|
on:
|
||||||
# schedule every wednesday 6:30 AM UTC (12:00 PM IST)
|
# schedule every wednesday 9:30 AM UTC (3pm IST)
|
||||||
schedule:
|
schedule:
|
||||||
- cron: '30 6 * * 3'
|
- cron: '30 9 * * 3'
|
||||||
|
|
||||||
# allow manual triggering of the workflow by a maintainer
|
# allow manual triggering of the workflow by a maintainer
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|||||||
147
.gitignore
vendored
147
.gitignore
vendored
@@ -80,153 +80,6 @@ deploy/common/clickhouse/user_scripts/
|
|||||||
|
|
||||||
queries.active
|
queries.active
|
||||||
|
|
||||||
# tmp
|
|
||||||
**/tmp/**
|
|
||||||
|
|
||||||
# .devenv tmp files
|
# .devenv tmp files
|
||||||
.devenv/**/tmp/**
|
.devenv/**/tmp/**
|
||||||
.qodo
|
|
||||||
|
|
||||||
### Python ###
|
|
||||||
# Byte-compiled / optimized / DLL files
|
|
||||||
__pycache__/
|
|
||||||
*.py[cod]
|
|
||||||
*$py.class
|
|
||||||
|
|
||||||
# C extensions
|
|
||||||
*.so
|
|
||||||
|
|
||||||
# Distribution / packaging
|
|
||||||
.Python
|
|
||||||
build/
|
|
||||||
develop-eggs/
|
|
||||||
dist/
|
|
||||||
downloads/
|
|
||||||
eggs/
|
|
||||||
.eggs/
|
|
||||||
lib/
|
|
||||||
lib64/
|
|
||||||
parts/
|
|
||||||
sdist/
|
|
||||||
var/
|
|
||||||
wheels/
|
|
||||||
share/python-wheels/
|
|
||||||
*.egg-info/
|
|
||||||
.installed.cfg
|
|
||||||
*.egg
|
|
||||||
MANIFEST
|
|
||||||
|
|
||||||
# PyInstaller
|
|
||||||
# Usually these files are written by a python script from a template
|
|
||||||
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
||||||
*.manifest
|
|
||||||
*.spec
|
|
||||||
|
|
||||||
# Installer logs
|
|
||||||
pip-log.txt
|
|
||||||
pip-delete-this-directory.txt
|
|
||||||
|
|
||||||
# Unit test / coverage reports
|
|
||||||
htmlcov/
|
|
||||||
.tox/
|
|
||||||
.nox/
|
|
||||||
.coverage
|
|
||||||
.coverage.*
|
|
||||||
.cache
|
|
||||||
nosetests.xml
|
|
||||||
coverage.xml
|
|
||||||
*.cover
|
|
||||||
*.py,cover
|
|
||||||
.hypothesis/
|
|
||||||
.pytest_cache/
|
|
||||||
cover/
|
|
||||||
|
|
||||||
# Translations
|
|
||||||
*.mo
|
|
||||||
*.pot
|
|
||||||
|
|
||||||
# Django stuff:
|
|
||||||
*.log
|
|
||||||
local_settings.py
|
|
||||||
db.sqlite3
|
|
||||||
db.sqlite3-journal
|
|
||||||
|
|
||||||
# Flask stuff:
|
|
||||||
instance/
|
|
||||||
.webassets-cache
|
|
||||||
|
|
||||||
# Scrapy stuff:
|
|
||||||
.scrapy
|
|
||||||
|
|
||||||
# Sphinx documentation
|
|
||||||
docs/_build/
|
|
||||||
|
|
||||||
# PyBuilder
|
|
||||||
.pybuilder/
|
|
||||||
target/
|
|
||||||
|
|
||||||
# Jupyter Notebook
|
|
||||||
.ipynb_checkpoints
|
|
||||||
|
|
||||||
# IPython
|
|
||||||
profile_default/
|
|
||||||
ipython_config.py
|
|
||||||
|
|
||||||
# Celery stuff
|
|
||||||
celerybeat-schedule
|
|
||||||
celerybeat.pid
|
|
||||||
|
|
||||||
# SageMath parsed files
|
|
||||||
*.sage.py
|
|
||||||
|
|
||||||
# Environments
|
|
||||||
.env
|
|
||||||
.venv
|
|
||||||
env/
|
|
||||||
venv/
|
|
||||||
ENV/
|
|
||||||
env.bak/
|
|
||||||
venv.bak/
|
|
||||||
|
|
||||||
# Spyder project settings
|
|
||||||
.spyderproject
|
|
||||||
.spyproject
|
|
||||||
|
|
||||||
# Rope project settings
|
|
||||||
.ropeproject
|
|
||||||
|
|
||||||
# mkdocs documentation
|
|
||||||
/site
|
|
||||||
|
|
||||||
# mypy
|
|
||||||
.mypy_cache/
|
|
||||||
.dmypy.json
|
|
||||||
dmypy.json
|
|
||||||
|
|
||||||
# Pyre type checker
|
|
||||||
.pyre/
|
|
||||||
|
|
||||||
# pytype static type analyzer
|
|
||||||
.pytype/
|
|
||||||
|
|
||||||
# Cython debug symbols
|
|
||||||
cython_debug/
|
|
||||||
|
|
||||||
# PyCharm
|
|
||||||
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
|
||||||
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
|
||||||
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
|
||||||
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
|
||||||
#.idea/
|
|
||||||
|
|
||||||
### Python Patch ###
|
|
||||||
# Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration
|
|
||||||
poetry.toml
|
|
||||||
|
|
||||||
# ruff
|
|
||||||
.ruff_cache/
|
|
||||||
|
|
||||||
# LSP config files
|
|
||||||
pyrightconfig.json
|
|
||||||
|
|
||||||
# End of https://www.toptal.com/developers/gitignore/api/python
|
|
||||||
32
Makefile
32
Makefile
@@ -10,7 +10,7 @@ COMMIT_SHORT_SHA ?= $(shell git rev-parse --short HEAD)
|
|||||||
BRANCH_NAME ?= $(subst /,-,$(shell git rev-parse --abbrev-ref HEAD))
|
BRANCH_NAME ?= $(subst /,-,$(shell git rev-parse --abbrev-ref HEAD))
|
||||||
VERSION ?= $(BRANCH_NAME)-$(COMMIT_SHORT_SHA)
|
VERSION ?= $(BRANCH_NAME)-$(COMMIT_SHORT_SHA)
|
||||||
TIMESTAMP ?= $(shell date -u +"%Y-%m-%dT%H:%M:%SZ")
|
TIMESTAMP ?= $(shell date -u +"%Y-%m-%dT%H:%M:%SZ")
|
||||||
ARCHS ?= amd64 arm64
|
ARCHS = amd64 arm64
|
||||||
TARGET_DIR ?= $(shell pwd)/target
|
TARGET_DIR ?= $(shell pwd)/target
|
||||||
|
|
||||||
ZEUS_URL ?= https://api.signoz.cloud
|
ZEUS_URL ?= https://api.signoz.cloud
|
||||||
@@ -23,7 +23,6 @@ GO_BUILD_ARCHS_COMMUNITY = $(addprefix go-build-community-,$(ARCHS))
|
|||||||
GO_BUILD_CONTEXT_COMMUNITY = $(SRC)/pkg/query-service
|
GO_BUILD_CONTEXT_COMMUNITY = $(SRC)/pkg/query-service
|
||||||
GO_BUILD_LDFLAGS_COMMUNITY = $(GO_BUILD_VERSION_LDFLAGS) -X github.com/SigNoz/signoz/pkg/version.variant=community
|
GO_BUILD_LDFLAGS_COMMUNITY = $(GO_BUILD_VERSION_LDFLAGS) -X github.com/SigNoz/signoz/pkg/version.variant=community
|
||||||
GO_BUILD_ARCHS_ENTERPRISE = $(addprefix go-build-enterprise-,$(ARCHS))
|
GO_BUILD_ARCHS_ENTERPRISE = $(addprefix go-build-enterprise-,$(ARCHS))
|
||||||
GO_BUILD_ARCHS_ENTERPRISE_RACE = $(addprefix go-build-enterprise-race-,$(ARCHS))
|
|
||||||
GO_BUILD_CONTEXT_ENTERPRISE = $(SRC)/ee/query-service
|
GO_BUILD_CONTEXT_ENTERPRISE = $(SRC)/ee/query-service
|
||||||
GO_BUILD_LDFLAGS_ENTERPRISE = $(GO_BUILD_VERSION_LDFLAGS) -X github.com/SigNoz/signoz/pkg/version.variant=enterprise $(GO_BUILD_LDFLAG_ZEUS_URL) $(GO_BUILD_LDFLAG_LICENSE_SIGNOZ_IO)
|
GO_BUILD_LDFLAGS_ENTERPRISE = $(GO_BUILD_VERSION_LDFLAGS) -X github.com/SigNoz/signoz/pkg/version.variant=enterprise $(GO_BUILD_LDFLAG_ZEUS_URL) $(GO_BUILD_LDFLAG_LICENSE_SIGNOZ_IO)
|
||||||
|
|
||||||
@@ -120,18 +119,6 @@ $(GO_BUILD_ARCHS_ENTERPRISE): go-build-enterprise-%: $(TARGET_DIR)
|
|||||||
CGO_ENABLED=1 GOARCH=$* GOOS=$(OS) go build -C $(GO_BUILD_CONTEXT_ENTERPRISE) -tags timetzdata -o $(TARGET_DIR)/$(OS)-$*/$(NAME) -ldflags "-linkmode external -extldflags '-static' -s -w $(GO_BUILD_LDFLAGS_ENTERPRISE)"; \
|
CGO_ENABLED=1 GOARCH=$* GOOS=$(OS) go build -C $(GO_BUILD_CONTEXT_ENTERPRISE) -tags timetzdata -o $(TARGET_DIR)/$(OS)-$*/$(NAME) -ldflags "-linkmode external -extldflags '-static' -s -w $(GO_BUILD_LDFLAGS_ENTERPRISE)"; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
.PHONY: go-build-enterprise-race $(GO_BUILD_ARCHS_ENTERPRISE_RACE)
|
|
||||||
go-build-enterprise-race: ## Builds the go backend server for enterprise with race
|
|
||||||
go-build-enterprise-race: $(GO_BUILD_ARCHS_ENTERPRISE_RACE)
|
|
||||||
$(GO_BUILD_ARCHS_ENTERPRISE_RACE): go-build-enterprise-race-%: $(TARGET_DIR)
|
|
||||||
@mkdir -p $(TARGET_DIR)/$(OS)-$*
|
|
||||||
@echo ">> building binary $(TARGET_DIR)/$(OS)-$*/$(NAME)"
|
|
||||||
@if [ $* = "arm64" ]; then \
|
|
||||||
CC=aarch64-linux-gnu-gcc CGO_ENABLED=1 GOARCH=$* GOOS=$(OS) go build -C $(GO_BUILD_CONTEXT_ENTERPRISE) -race -tags timetzdata -o $(TARGET_DIR)/$(OS)-$*/$(NAME) -ldflags "-linkmode external -extldflags '-static' -s -w $(GO_BUILD_LDFLAGS_ENTERPRISE)"; \
|
|
||||||
else \
|
|
||||||
CGO_ENABLED=1 GOARCH=$* GOOS=$(OS) go build -C $(GO_BUILD_CONTEXT_ENTERPRISE) -race -tags timetzdata -o $(TARGET_DIR)/$(OS)-$*/$(NAME) -ldflags "-linkmode external -extldflags '-static' -s -w $(GO_BUILD_LDFLAGS_ENTERPRISE)"; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
##############################################################
|
##############################################################
|
||||||
# js commands
|
# js commands
|
||||||
##############################################################
|
##############################################################
|
||||||
@@ -180,20 +167,3 @@ docker-buildx-enterprise: go-build-enterprise js-build
|
|||||||
--platform linux/arm64,linux/amd64 \
|
--platform linux/arm64,linux/amd64 \
|
||||||
--push \
|
--push \
|
||||||
--tag $(DOCKER_REGISTRY_ENTERPRISE):$(VERSION) $(SRC)
|
--tag $(DOCKER_REGISTRY_ENTERPRISE):$(VERSION) $(SRC)
|
||||||
|
|
||||||
##############################################################
|
|
||||||
# python commands
|
|
||||||
##############################################################
|
|
||||||
.PHONY: py-fmt
|
|
||||||
py-fmt: ## Run black for integration tests
|
|
||||||
@cd tests/integration && poetry run black .
|
|
||||||
|
|
||||||
.PHONY: py-lint
|
|
||||||
py-lint: ## Run lint for integration tests
|
|
||||||
@cd tests/integration && poetry run isort .
|
|
||||||
@cd tests/integration && poetry run autoflake .
|
|
||||||
@cd tests/integration && poetry run pylint .
|
|
||||||
|
|
||||||
.PHONY: py-test
|
|
||||||
py-test: ## Runs integration tests
|
|
||||||
@cd tests/integration && poetry run pytest --basetemp=./tmp/ -vv --capture=no src/
|
|
||||||
@@ -174,7 +174,7 @@ services:
|
|||||||
# - ../common/clickhouse/storage.xml:/etc/clickhouse-server/config.d/storage.xml
|
# - ../common/clickhouse/storage.xml:/etc/clickhouse-server/config.d/storage.xml
|
||||||
signoz:
|
signoz:
|
||||||
!!merge <<: *db-depend
|
!!merge <<: *db-depend
|
||||||
image: signoz/signoz:v0.79.0
|
image: signoz/signoz:v0.78.1
|
||||||
command:
|
command:
|
||||||
- --config=/root/config/prometheus.yml
|
- --config=/root/config/prometheus.yml
|
||||||
- --use-logs-new-schema=true
|
- --use-logs-new-schema=true
|
||||||
@@ -208,7 +208,7 @@ services:
|
|||||||
retries: 3
|
retries: 3
|
||||||
otel-collector:
|
otel-collector:
|
||||||
!!merge <<: *db-depend
|
!!merge <<: *db-depend
|
||||||
image: signoz/signoz-otel-collector:v0.111.39
|
image: signoz/signoz-otel-collector:v0.111.38
|
||||||
command:
|
command:
|
||||||
- --config=/etc/otel-collector-config.yaml
|
- --config=/etc/otel-collector-config.yaml
|
||||||
- --manager-config=/etc/manager-config.yaml
|
- --manager-config=/etc/manager-config.yaml
|
||||||
@@ -232,7 +232,7 @@ services:
|
|||||||
- signoz
|
- signoz
|
||||||
schema-migrator:
|
schema-migrator:
|
||||||
!!merge <<: *common
|
!!merge <<: *common
|
||||||
image: signoz/signoz-schema-migrator:v0.111.39
|
image: signoz/signoz-schema-migrator:v0.111.38
|
||||||
deploy:
|
deploy:
|
||||||
restart_policy:
|
restart_policy:
|
||||||
condition: on-failure
|
condition: on-failure
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ services:
|
|||||||
# - ../common/clickhouse/storage.xml:/etc/clickhouse-server/config.d/storage.xml
|
# - ../common/clickhouse/storage.xml:/etc/clickhouse-server/config.d/storage.xml
|
||||||
signoz:
|
signoz:
|
||||||
!!merge <<: *db-depend
|
!!merge <<: *db-depend
|
||||||
image: signoz/signoz:v0.79.0
|
image: signoz/signoz:v0.78.1
|
||||||
command:
|
command:
|
||||||
- --config=/root/config/prometheus.yml
|
- --config=/root/config/prometheus.yml
|
||||||
- --use-logs-new-schema=true
|
- --use-logs-new-schema=true
|
||||||
@@ -143,7 +143,7 @@ services:
|
|||||||
retries: 3
|
retries: 3
|
||||||
otel-collector:
|
otel-collector:
|
||||||
!!merge <<: *db-depend
|
!!merge <<: *db-depend
|
||||||
image: signoz/signoz-otel-collector:v0.111.39
|
image: signoz/signoz-otel-collector:v0.111.38
|
||||||
command:
|
command:
|
||||||
- --config=/etc/otel-collector-config.yaml
|
- --config=/etc/otel-collector-config.yaml
|
||||||
- --manager-config=/etc/manager-config.yaml
|
- --manager-config=/etc/manager-config.yaml
|
||||||
@@ -167,7 +167,7 @@ services:
|
|||||||
- signoz
|
- signoz
|
||||||
schema-migrator:
|
schema-migrator:
|
||||||
!!merge <<: *common
|
!!merge <<: *common
|
||||||
image: signoz/signoz-schema-migrator:v0.111.39
|
image: signoz/signoz-schema-migrator:v0.111.38
|
||||||
deploy:
|
deploy:
|
||||||
restart_policy:
|
restart_policy:
|
||||||
condition: on-failure
|
condition: on-failure
|
||||||
|
|||||||
@@ -177,7 +177,7 @@ services:
|
|||||||
# - ../common/clickhouse/storage.xml:/etc/clickhouse-server/config.d/storage.xml
|
# - ../common/clickhouse/storage.xml:/etc/clickhouse-server/config.d/storage.xml
|
||||||
signoz:
|
signoz:
|
||||||
!!merge <<: *db-depend
|
!!merge <<: *db-depend
|
||||||
image: signoz/signoz:${VERSION:-v0.79.0}
|
image: signoz/signoz:${VERSION:-v0.78.1}
|
||||||
container_name: signoz
|
container_name: signoz
|
||||||
command:
|
command:
|
||||||
- --config=/root/config/prometheus.yml
|
- --config=/root/config/prometheus.yml
|
||||||
@@ -212,7 +212,7 @@ services:
|
|||||||
# TODO: support otel-collector multiple replicas. Nginx/Traefik for loadbalancing?
|
# TODO: support otel-collector multiple replicas. Nginx/Traefik for loadbalancing?
|
||||||
otel-collector:
|
otel-collector:
|
||||||
!!merge <<: *db-depend
|
!!merge <<: *db-depend
|
||||||
image: signoz/signoz-otel-collector:${OTELCOL_TAG:-v0.111.39}
|
image: signoz/signoz-otel-collector:${OTELCOL_TAG:-v0.111.38}
|
||||||
container_name: signoz-otel-collector
|
container_name: signoz-otel-collector
|
||||||
command:
|
command:
|
||||||
- --config=/etc/otel-collector-config.yaml
|
- --config=/etc/otel-collector-config.yaml
|
||||||
@@ -238,7 +238,7 @@ services:
|
|||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
schema-migrator-sync:
|
schema-migrator-sync:
|
||||||
!!merge <<: *common
|
!!merge <<: *common
|
||||||
image: signoz/signoz-schema-migrator:${OTELCOL_TAG:-v0.111.39}
|
image: signoz/signoz-schema-migrator:${OTELCOL_TAG:-v0.111.38}
|
||||||
container_name: schema-migrator-sync
|
container_name: schema-migrator-sync
|
||||||
command:
|
command:
|
||||||
- sync
|
- sync
|
||||||
@@ -249,7 +249,7 @@ services:
|
|||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
schema-migrator-async:
|
schema-migrator-async:
|
||||||
!!merge <<: *db-depend
|
!!merge <<: *db-depend
|
||||||
image: signoz/signoz-schema-migrator:${OTELCOL_TAG:-v0.111.39}
|
image: signoz/signoz-schema-migrator:${OTELCOL_TAG:-v0.111.38}
|
||||||
container_name: schema-migrator-async
|
container_name: schema-migrator-async
|
||||||
command:
|
command:
|
||||||
- async
|
- async
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ services:
|
|||||||
# - ../common/clickhouse/storage.xml:/etc/clickhouse-server/config.d/storage.xml
|
# - ../common/clickhouse/storage.xml:/etc/clickhouse-server/config.d/storage.xml
|
||||||
signoz:
|
signoz:
|
||||||
!!merge <<: *db-depend
|
!!merge <<: *db-depend
|
||||||
image: signoz/signoz:${VERSION:-v0.79.0}
|
image: signoz/signoz:${VERSION:-v0.78.1}
|
||||||
container_name: signoz
|
container_name: signoz
|
||||||
command:
|
command:
|
||||||
- --config=/root/config/prometheus.yml
|
- --config=/root/config/prometheus.yml
|
||||||
@@ -146,7 +146,7 @@ services:
|
|||||||
retries: 3
|
retries: 3
|
||||||
otel-collector:
|
otel-collector:
|
||||||
!!merge <<: *db-depend
|
!!merge <<: *db-depend
|
||||||
image: signoz/signoz-otel-collector:${OTELCOL_TAG:-v0.111.39}
|
image: signoz/signoz-otel-collector:${OTELCOL_TAG:-v0.111.38}
|
||||||
container_name: signoz-otel-collector
|
container_name: signoz-otel-collector
|
||||||
command:
|
command:
|
||||||
- --config=/etc/otel-collector-config.yaml
|
- --config=/etc/otel-collector-config.yaml
|
||||||
@@ -168,7 +168,7 @@ services:
|
|||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
schema-migrator-sync:
|
schema-migrator-sync:
|
||||||
!!merge <<: *common
|
!!merge <<: *common
|
||||||
image: signoz/signoz-schema-migrator:${OTELCOL_TAG:-v0.111.39}
|
image: signoz/signoz-schema-migrator:${OTELCOL_TAG:-v0.111.38}
|
||||||
container_name: schema-migrator-sync
|
container_name: schema-migrator-sync
|
||||||
command:
|
command:
|
||||||
- sync
|
- sync
|
||||||
@@ -180,7 +180,7 @@ services:
|
|||||||
restart: on-failure
|
restart: on-failure
|
||||||
schema-migrator-async:
|
schema-migrator-async:
|
||||||
!!merge <<: *db-depend
|
!!merge <<: *db-depend
|
||||||
image: signoz/signoz-schema-migrator:${OTELCOL_TAG:-v0.111.39}
|
image: signoz/signoz-schema-migrator:${OTELCOL_TAG:-v0.111.38}
|
||||||
container_name: schema-migrator-async
|
container_name: schema-migrator-async
|
||||||
command:
|
command:
|
||||||
- async
|
- async
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ services:
|
|||||||
# - ../common/clickhouse/storage.xml:/etc/clickhouse-server/config.d/storage.xml
|
# - ../common/clickhouse/storage.xml:/etc/clickhouse-server/config.d/storage.xml
|
||||||
signoz:
|
signoz:
|
||||||
!!merge <<: *db-depend
|
!!merge <<: *db-depend
|
||||||
image: signoz/signoz:${VERSION:-v0.79.0}
|
image: signoz/signoz:${VERSION:-v0.78.1}
|
||||||
container_name: signoz
|
container_name: signoz
|
||||||
command:
|
command:
|
||||||
- --config=/root/config/prometheus.yml
|
- --config=/root/config/prometheus.yml
|
||||||
@@ -144,7 +144,7 @@ services:
|
|||||||
retries: 3
|
retries: 3
|
||||||
otel-collector:
|
otel-collector:
|
||||||
!!merge <<: *db-depend
|
!!merge <<: *db-depend
|
||||||
image: signoz/signoz-otel-collector:${OTELCOL_TAG:-v0.111.39}
|
image: signoz/signoz-otel-collector:${OTELCOL_TAG:-v0.111.38}
|
||||||
container_name: signoz-otel-collector
|
container_name: signoz-otel-collector
|
||||||
command:
|
command:
|
||||||
- --config=/etc/otel-collector-config.yaml
|
- --config=/etc/otel-collector-config.yaml
|
||||||
@@ -166,7 +166,7 @@ services:
|
|||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
schema-migrator-sync:
|
schema-migrator-sync:
|
||||||
!!merge <<: *common
|
!!merge <<: *common
|
||||||
image: signoz/signoz-schema-migrator:${OTELCOL_TAG:-v0.111.39}
|
image: signoz/signoz-schema-migrator:${OTELCOL_TAG:-v0.111.38}
|
||||||
container_name: schema-migrator-sync
|
container_name: schema-migrator-sync
|
||||||
command:
|
command:
|
||||||
- sync
|
- sync
|
||||||
@@ -178,7 +178,7 @@ services:
|
|||||||
restart: on-failure
|
restart: on-failure
|
||||||
schema-migrator-async:
|
schema-migrator-async:
|
||||||
!!merge <<: *db-depend
|
!!merge <<: *db-depend
|
||||||
image: signoz/signoz-schema-migrator:${OTELCOL_TAG:-v0.111.39}
|
image: signoz/signoz-schema-migrator:${OTELCOL_TAG:-v0.111.38}
|
||||||
container_name: schema-migrator-async
|
container_name: schema-migrator-async
|
||||||
command:
|
command:
|
||||||
- async
|
- async
|
||||||
|
|||||||
@@ -1,36 +0,0 @@
|
|||||||
FROM golang:1.22-bullseye
|
|
||||||
|
|
||||||
ARG OS="linux"
|
|
||||||
ARG TARGETARCH
|
|
||||||
ARG ZEUSURL
|
|
||||||
|
|
||||||
# This path is important for stacktraces
|
|
||||||
WORKDIR $GOPATH/src/github.com/signoz/signoz
|
|
||||||
WORKDIR /root
|
|
||||||
|
|
||||||
RUN set -eux; \
|
|
||||||
apt-get update; \
|
|
||||||
apt-get install -y --no-install-recommends \
|
|
||||||
g++ \
|
|
||||||
gcc \
|
|
||||||
libc6-dev \
|
|
||||||
make \
|
|
||||||
pkg-config \
|
|
||||||
; \
|
|
||||||
rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
COPY go.mod go.sum ./
|
|
||||||
|
|
||||||
RUN go mod download
|
|
||||||
|
|
||||||
COPY ./ee/ ./ee/
|
|
||||||
COPY ./pkg/ ./pkg/
|
|
||||||
COPY ./templates/email /root/templates
|
|
||||||
|
|
||||||
COPY Makefile Makefile
|
|
||||||
RUN TARGET_DIR=/root ARCHS=${TARGETARCH} ZEUS_URL=${ZEUSURL} LICENSE_URL=${ZEUSURL}/api/v1 make go-build-enterprise-race
|
|
||||||
RUN mv /root/linux-${TARGETARCH}/signoz /root/signoz
|
|
||||||
|
|
||||||
RUN chmod 755 /root /root/signoz
|
|
||||||
|
|
||||||
ENTRYPOINT ["/root/signoz"]
|
|
||||||
@@ -4,6 +4,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/SigNoz/signoz/ee/query-service/constants"
|
"github.com/SigNoz/signoz/ee/query-service/constants"
|
||||||
@@ -161,7 +162,12 @@ func (m *modelDao) PrecheckLogin(ctx context.Context, email, sourceUrl string) (
|
|||||||
// find domain from email
|
// find domain from email
|
||||||
orgDomain, apierr := m.GetDomainByEmail(ctx, email)
|
orgDomain, apierr := m.GetDomainByEmail(ctx, email)
|
||||||
if apierr != nil {
|
if apierr != nil {
|
||||||
zap.L().Error("failed to get org domain from email", zap.String("email", email), zap.Error(apierr.ToError()))
|
var emailDomain string
|
||||||
|
emailComponents := strings.Split(email, "@")
|
||||||
|
if len(emailComponents) > 0 {
|
||||||
|
emailDomain = emailComponents[1]
|
||||||
|
}
|
||||||
|
zap.L().Error("failed to get org domain from email", zap.String("emailDomain", emailDomain), zap.Error(apierr.ToError()))
|
||||||
return resp, apierr
|
return resp, apierr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
6
go.mod
6
go.mod
@@ -10,8 +10,7 @@ require (
|
|||||||
github.com/ClickHouse/clickhouse-go/v2 v2.30.0
|
github.com/ClickHouse/clickhouse-go/v2 v2.30.0
|
||||||
github.com/DATA-DOG/go-sqlmock v1.5.2
|
github.com/DATA-DOG/go-sqlmock v1.5.2
|
||||||
github.com/SigNoz/govaluate v0.0.0-20240203125216-988004ccc7fd
|
github.com/SigNoz/govaluate v0.0.0-20240203125216-988004ccc7fd
|
||||||
github.com/SigNoz/signoz-otel-collector v0.111.39
|
github.com/SigNoz/signoz-otel-collector v0.111.16
|
||||||
github.com/antlr4-go/antlr/v4 v4.13.1
|
|
||||||
github.com/antonmedv/expr v1.15.3
|
github.com/antonmedv/expr v1.15.3
|
||||||
github.com/cespare/xxhash/v2 v2.3.0
|
github.com/cespare/xxhash/v2 v2.3.0
|
||||||
github.com/coreos/go-oidc/v3 v3.11.0
|
github.com/coreos/go-oidc/v3 v3.11.0
|
||||||
@@ -90,9 +89,10 @@ require (
|
|||||||
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.0 // indirect
|
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.0 // indirect
|
||||||
github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 // indirect
|
github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 // indirect
|
||||||
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect
|
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect
|
||||||
github.com/ClickHouse/ch-go v0.63.1 // indirect
|
github.com/ClickHouse/ch-go v0.61.5 // indirect
|
||||||
github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b // indirect
|
github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b // indirect
|
||||||
github.com/andybalholm/brotli v1.1.1 // indirect
|
github.com/andybalholm/brotli v1.1.1 // indirect
|
||||||
|
github.com/antlr4-go/antlr/v4 v4.13.1 // indirect
|
||||||
github.com/armon/go-metrics v0.4.1 // indirect
|
github.com/armon/go-metrics v0.4.1 // indirect
|
||||||
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
|
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
|
||||||
github.com/aws/aws-sdk-go v1.55.5 // indirect
|
github.com/aws/aws-sdk-go v1.55.5 // indirect
|
||||||
|
|||||||
14
go.sum
14
go.sum
@@ -85,8 +85,8 @@ github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 h1:XHOnouVk1mx
|
|||||||
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
|
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
|
||||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||||
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
|
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
|
||||||
github.com/ClickHouse/ch-go v0.63.1 h1:s2JyZvWLTCSAGdtjMBBmAgQQHMco6pawLJMOXi0FODM=
|
github.com/ClickHouse/ch-go v0.61.5 h1:zwR8QbYI0tsMiEcze/uIMK+Tz1D3XZXLdNrlaOpeEI4=
|
||||||
github.com/ClickHouse/ch-go v0.63.1/go.mod h1:I1kJJCL3WJcBMGe1m+HVK0+nREaG+JOYYBWjrDrF3R0=
|
github.com/ClickHouse/ch-go v0.61.5/go.mod h1:s1LJW/F/LcFs5HJnuogFMta50kKDO0lf9zzfrbl0RQg=
|
||||||
github.com/ClickHouse/clickhouse-go/v2 v2.30.0 h1:AG4D/hW39qa58+JHQIFOSnxyL46H6h2lrmGGk17dhFo=
|
github.com/ClickHouse/clickhouse-go/v2 v2.30.0 h1:AG4D/hW39qa58+JHQIFOSnxyL46H6h2lrmGGk17dhFo=
|
||||||
github.com/ClickHouse/clickhouse-go/v2 v2.30.0/go.mod h1:i9ZQAojcayW3RsdCb3YR+n+wC2h65eJsZCscZ1Z1wyo=
|
github.com/ClickHouse/clickhouse-go/v2 v2.30.0/go.mod h1:i9ZQAojcayW3RsdCb3YR+n+wC2h65eJsZCscZ1Z1wyo=
|
||||||
github.com/Code-Hex/go-generics-cache v1.5.1 h1:6vhZGc5M7Y/YD8cIUcY8kcuQLB4cHR7U+0KMqAA0KcU=
|
github.com/Code-Hex/go-generics-cache v1.5.1 h1:6vhZGc5M7Y/YD8cIUcY8kcuQLB4cHR7U+0KMqAA0KcU=
|
||||||
@@ -100,10 +100,8 @@ github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA
|
|||||||
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
|
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
|
||||||
github.com/SigNoz/govaluate v0.0.0-20240203125216-988004ccc7fd h1:Bk43AsDYe0fhkbj57eGXx8H3ZJ4zhmQXBnrW523ktj8=
|
github.com/SigNoz/govaluate v0.0.0-20240203125216-988004ccc7fd h1:Bk43AsDYe0fhkbj57eGXx8H3ZJ4zhmQXBnrW523ktj8=
|
||||||
github.com/SigNoz/govaluate v0.0.0-20240203125216-988004ccc7fd/go.mod h1:nxRcH/OEdM8QxzH37xkGzomr1O0JpYBRS6pwjsWW6Pc=
|
github.com/SigNoz/govaluate v0.0.0-20240203125216-988004ccc7fd/go.mod h1:nxRcH/OEdM8QxzH37xkGzomr1O0JpYBRS6pwjsWW6Pc=
|
||||||
github.com/SigNoz/signoz-otel-collector v0.111.39-beta.1 h1:ZpSNrOZBOH2iCJIPeER5X0mfxOe64yP3JRX7FzBNfwY=
|
github.com/SigNoz/signoz-otel-collector v0.111.16 h1:535uKH5Oux+35EsI+L3C6pnAP/Ye0PTCbVizXoL+VqE=
|
||||||
github.com/SigNoz/signoz-otel-collector v0.111.39-beta.1/go.mod h1:DCu/D+lqhsPNSGS4IMD+4gn7q06TGzOCKazSy+GURVc=
|
github.com/SigNoz/signoz-otel-collector v0.111.16/go.mod h1:HJ4m0LY1MPsuZmuRF7Ixb+bY8rxgRzI0VXzOedESsjg=
|
||||||
github.com/SigNoz/signoz-otel-collector v0.111.39 h1:Dl8QqZNAsj2atxP572OzsszPK0XPpd3LLPNPRAUJ5wo=
|
|
||||||
github.com/SigNoz/signoz-otel-collector v0.111.39/go.mod h1:DCu/D+lqhsPNSGS4IMD+4gn7q06TGzOCKazSy+GURVc=
|
|
||||||
github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c=
|
github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c=
|
||||||
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||||
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||||
@@ -822,8 +820,8 @@ github.com/prometheus/prometheus v0.300.1/go.mod h1:gtTPY/XVyCdqqnjA3NzDMb0/nc5H
|
|||||||
github.com/puzpuzpuz/xsync/v3 v3.5.0 h1:i+cMcpEDY1BkNm7lPDkCtE4oElsYLn+EKF8kAu2vXT4=
|
github.com/puzpuzpuz/xsync/v3 v3.5.0 h1:i+cMcpEDY1BkNm7lPDkCtE4oElsYLn+EKF8kAu2vXT4=
|
||||||
github.com/puzpuzpuz/xsync/v3 v3.5.0/go.mod h1:VjzYrABPabuM4KyBh1Ftq6u8nhwY5tBPKP9jpmh0nnA=
|
github.com/puzpuzpuz/xsync/v3 v3.5.0/go.mod h1:VjzYrABPabuM4KyBh1Ftq6u8nhwY5tBPKP9jpmh0nnA=
|
||||||
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
|
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
|
||||||
github.com/redis/go-redis/v9 v9.6.3 h1:8Dr5ygF1QFXRxIH/m3Xg9MMG1rS8YCtAgosrsewT6i0=
|
github.com/redis/go-redis/v9 v9.6.1 h1:HHDteefn6ZkTtY5fGUE8tj8uy85AHk6zP7CpzIAM0y4=
|
||||||
github.com/redis/go-redis/v9 v9.6.3/go.mod h1:0C0c6ycQsdpVNQpxb1njEQIqkx5UcsM8FJCQLgE9+RA=
|
github.com/redis/go-redis/v9 v9.6.1/go.mod h1:0C0c6ycQsdpVNQpxb1njEQIqkx5UcsM8FJCQLgE9+RA=
|
||||||
github.com/rhnvrm/simples3 v0.6.1/go.mod h1:Y+3vYm2V7Y4VijFoJHHTrja6OgPrJ2cBti8dPGkC3sA=
|
github.com/rhnvrm/simples3 v0.6.1/go.mod h1:Y+3vYm2V7Y4VijFoJHHTrja6OgPrJ2cBti8dPGkC3sA=
|
||||||
github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
|
github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
|
||||||
github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
|
github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
|
||||||
|
|||||||
@@ -25,25 +25,6 @@ type postableAlert struct {
|
|||||||
Receivers []string `json:"receivers"`
|
Receivers []string `json:"receivers"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (pa *postableAlert) MarshalJSON() ([]byte, error) {
|
|
||||||
// Marshal the embedded PostableAlert to get its JSON representation.
|
|
||||||
alertJSON, err := json.Marshal(pa.PostableAlert)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// Unmarshal that JSON into a map so we can add extra fields.
|
|
||||||
var m map[string]interface{}
|
|
||||||
if err := json.Unmarshal(alertJSON, &m); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add the Receivers field.
|
|
||||||
m["receivers"] = pa.Receivers
|
|
||||||
|
|
||||||
return json.Marshal(m)
|
|
||||||
}
|
|
||||||
|
|
||||||
const (
|
const (
|
||||||
alertsPath string = "/v1/alerts"
|
alertsPath string = "/v1/alerts"
|
||||||
routesPath string = "/v1/routes"
|
routesPath string = "/v1/routes"
|
||||||
|
|||||||
@@ -1,35 +0,0 @@
|
|||||||
package legacyalertmanager
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/SigNoz/signoz/pkg/types/alertmanagertypes"
|
|
||||||
"github.com/prometheus/alertmanager/api/v2/models"
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestProvider_TestAlert(t *testing.T) {
|
|
||||||
pa := &postableAlert{
|
|
||||||
PostableAlert: &alertmanagertypes.PostableAlert{
|
|
||||||
Alert: models.Alert{
|
|
||||||
Labels: models.LabelSet{
|
|
||||||
"alertname": "test",
|
|
||||||
},
|
|
||||||
GeneratorURL: "http://localhost:9090/graph?g0.expr=up&g0.tab=1",
|
|
||||||
},
|
|
||||||
Annotations: models.LabelSet{
|
|
||||||
"summary": "test",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Receivers: []string{"receiver1", "receiver2"},
|
|
||||||
}
|
|
||||||
|
|
||||||
body, err := json.Marshal(pa)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("failed to marshal postable alert: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
assert.Contains(t, string(body), "receiver1")
|
|
||||||
assert.Contains(t, string(body), "receiver2")
|
|
||||||
}
|
|
||||||
@@ -3928,16 +3928,11 @@ func (r *ClickHouseReader) GetLogAttributeKeys(ctx context.Context, req *v3.Filt
|
|||||||
var rows driver.Rows
|
var rows driver.Rows
|
||||||
var response v3.FilterAttributeKeyResponse
|
var response v3.FilterAttributeKeyResponse
|
||||||
|
|
||||||
tagTypeFilter := `tag_type != 'logfield'`
|
|
||||||
if req.TagType != "" {
|
|
||||||
tagTypeFilter = fmt.Sprintf(`tag_type != 'logfield' and tag_type = '%s'`, req.TagType)
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(req.SearchText) != 0 {
|
if len(req.SearchText) != 0 {
|
||||||
query = fmt.Sprintf("select distinct tag_key, tag_type, tag_data_type from %s.%s where %s and tag_key ILIKE $1 limit $2", r.logsDB, r.logsTagAttributeTableV2, tagTypeFilter)
|
query = fmt.Sprintf("select distinct tag_key, tag_type, tag_data_type from %s.%s where tag_type != 'logfield' and tag_key ILIKE $1 limit $2", r.logsDB, r.logsTagAttributeTableV2)
|
||||||
rows, err = r.db.Query(ctx, query, fmt.Sprintf("%%%s%%", req.SearchText), req.Limit)
|
rows, err = r.db.Query(ctx, query, fmt.Sprintf("%%%s%%", req.SearchText), req.Limit)
|
||||||
} else {
|
} else {
|
||||||
query = fmt.Sprintf("select distinct tag_key, tag_type, tag_data_type from %s.%s where %s limit $1", r.logsDB, r.logsTagAttributeTableV2, tagTypeFilter)
|
query = fmt.Sprintf("select distinct tag_key, tag_type, tag_data_type from %s.%s where tag_type != 'logfield' limit $1", r.logsDB, r.logsTagAttributeTableV2)
|
||||||
rows, err = r.db.Query(ctx, query, req.Limit)
|
rows, err = r.db.Query(ctx, query, req.Limit)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3972,16 +3967,13 @@ func (r *ClickHouseReader) GetLogAttributeKeys(ctx context.Context, req *v3.Filt
|
|||||||
response.AttributeKeys = append(response.AttributeKeys, key)
|
response.AttributeKeys = append(response.AttributeKeys, key)
|
||||||
}
|
}
|
||||||
|
|
||||||
// add other attributes only when the tagType is not specified
|
// add other attributes
|
||||||
// i.e retrieve all attributes
|
for _, f := range constants.StaticFieldsLogsV3 {
|
||||||
if req.TagType == "" {
|
if (v3.AttributeKey{} == f) {
|
||||||
for _, f := range constants.StaticFieldsLogsV3 {
|
continue
|
||||||
if (v3.AttributeKey{} == f) {
|
}
|
||||||
continue
|
if len(req.SearchText) == 0 || strings.Contains(f.Key, req.SearchText) {
|
||||||
}
|
response.AttributeKeys = append(response.AttributeKeys, f)
|
||||||
if len(req.SearchText) == 0 || strings.Contains(f.Key, req.SearchText) {
|
|
||||||
response.AttributeKeys = append(response.AttributeKeys, f)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4723,12 +4715,7 @@ func (r *ClickHouseReader) GetTraceAttributeKeys(ctx context.Context, req *v3.Fi
|
|||||||
var rows driver.Rows
|
var rows driver.Rows
|
||||||
var response v3.FilterAttributeKeyResponse
|
var response v3.FilterAttributeKeyResponse
|
||||||
|
|
||||||
tagTypeFilter := `tag_type != 'spanfield'`
|
query = fmt.Sprintf("SELECT DISTINCT(tag_key), tag_type, tag_data_type FROM %s.%s WHERE tag_key ILIKE $1 and tag_type != 'spanfield' LIMIT $2", r.TraceDB, r.spanAttributeTableV2)
|
||||||
if req.TagType != "" {
|
|
||||||
tagTypeFilter = fmt.Sprintf(`tag_type != 'spanfield' and tag_type = '%s'`, req.TagType)
|
|
||||||
}
|
|
||||||
|
|
||||||
query = fmt.Sprintf("SELECT DISTINCT(tag_key), tag_type, tag_data_type FROM %s.%s WHERE tag_key ILIKE $1 and %s LIMIT $2", r.TraceDB, r.spanAttributeTableV2, tagTypeFilter)
|
|
||||||
|
|
||||||
rows, err = r.db.Query(ctx, query, fmt.Sprintf("%%%s%%", req.SearchText), req.Limit)
|
rows, err = r.db.Query(ctx, query, fmt.Sprintf("%%%s%%", req.SearchText), req.Limit)
|
||||||
|
|
||||||
@@ -4773,16 +4760,13 @@ func (r *ClickHouseReader) GetTraceAttributeKeys(ctx context.Context, req *v3.Fi
|
|||||||
fields = constants.DeprecatedStaticFieldsTraces
|
fields = constants.DeprecatedStaticFieldsTraces
|
||||||
}
|
}
|
||||||
|
|
||||||
// add the new static fields only when the tagType is not specified
|
// add the new static fields
|
||||||
// i.e retrieve all attributes
|
for _, f := range fields {
|
||||||
if req.TagType == "" {
|
if (v3.AttributeKey{} == f) {
|
||||||
for _, f := range fields {
|
continue
|
||||||
if (v3.AttributeKey{} == f) {
|
}
|
||||||
continue
|
if len(req.SearchText) == 0 || strings.Contains(f.Key, req.SearchText) {
|
||||||
}
|
response.AttributeKeys = append(response.AttributeKeys, f)
|
||||||
if len(req.SearchText) == 0 || strings.Contains(f.Key, req.SearchText) {
|
|
||||||
response.AttributeKeys = append(response.AttributeKeys, f)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,8 @@ type cloudProviderAccountsRepository interface {
|
|||||||
|
|
||||||
get(ctx context.Context, orgId string, provider string, id string) (*types.CloudIntegration, *model.ApiError)
|
get(ctx context.Context, orgId string, provider string, id string) (*types.CloudIntegration, *model.ApiError)
|
||||||
|
|
||||||
|
// getActiveAccount(ctx context.Context, orgId string, provider string, accountId string) (*types.CloudIntegration, *model.ApiError)
|
||||||
|
|
||||||
getConnectedCloudAccount(ctx context.Context, orgId string, provider string, accountID string) (*types.CloudIntegration, *model.ApiError)
|
getConnectedCloudAccount(ctx context.Context, orgId string, provider string, accountID string) (*types.CloudIntegration, *model.ApiError)
|
||||||
|
|
||||||
// Insert an account or update it by (cloudProvider, id)
|
// Insert an account or update it by (cloudProvider, id)
|
||||||
@@ -95,6 +97,33 @@ func (r *cloudProviderAccountsSQLRepository) get(
|
|||||||
return &result, nil
|
return &result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// get the latest active account for the given accountID
|
||||||
|
// func (r *cloudProviderAccountsSQLRepository) getActiveAccount(
|
||||||
|
// ctx context.Context, orgId string, provider string, accountId string,
|
||||||
|
// ) (*types.CloudIntegration, *model.ApiError) {
|
||||||
|
// var result types.CloudIntegration
|
||||||
|
|
||||||
|
// err := r.store.BunDB().NewSelect().
|
||||||
|
// Model(&result).
|
||||||
|
// Where("org_id = ?", orgId).
|
||||||
|
// Where("provider = ?", provider).
|
||||||
|
// Where("account_id = ?", accountId).
|
||||||
|
// Where("removed_at is NULL").
|
||||||
|
// Scan(ctx)
|
||||||
|
|
||||||
|
// if err == sql.ErrNoRows {
|
||||||
|
// return nil, model.NotFoundError(fmt.Errorf(
|
||||||
|
// "couldn't find connected cloud account %s", accountId,
|
||||||
|
// ))
|
||||||
|
// } else if err != nil {
|
||||||
|
// return nil, model.InternalError(fmt.Errorf(
|
||||||
|
// "couldn't query cloud provider accounts: %w", err,
|
||||||
|
// ))
|
||||||
|
// }
|
||||||
|
|
||||||
|
// return &result, nil
|
||||||
|
// }
|
||||||
|
|
||||||
func (r *cloudProviderAccountsSQLRepository) getConnectedCloudAccount(
|
func (r *cloudProviderAccountsSQLRepository) getConnectedCloudAccount(
|
||||||
ctx context.Context, orgId string, provider string, accountId string,
|
ctx context.Context, orgId string, provider string, accountId string,
|
||||||
) (*types.CloudIntegration, *model.ApiError) {
|
) (*types.CloudIntegration, *model.ApiError) {
|
||||||
|
|||||||
@@ -435,22 +435,15 @@ func (c *Controller) GetServiceDetails(
|
|||||||
if config != nil {
|
if config != nil {
|
||||||
service.Config = config
|
service.Config = config
|
||||||
|
|
||||||
enabled := false
|
|
||||||
if config.Metrics != nil && config.Metrics.Enabled {
|
if config.Metrics != nil && config.Metrics.Enabled {
|
||||||
enabled = true
|
// add links to service dashboards, making them clickable.
|
||||||
}
|
for i, d := range service.Assets.Dashboards {
|
||||||
|
dashboardUuid := c.dashboardUuid(
|
||||||
// add links to service dashboards, making them clickable.
|
cloudProvider, serviceId, d.Id,
|
||||||
for i, d := range service.Assets.Dashboards {
|
)
|
||||||
dashboardUuid := c.dashboardUuid(
|
|
||||||
cloudProvider, serviceId, d.Id,
|
|
||||||
)
|
|
||||||
if enabled {
|
|
||||||
service.Assets.Dashboards[i].Url = fmt.Sprintf(
|
service.Assets.Dashboards[i].Url = fmt.Sprintf(
|
||||||
"/dashboard/%s", dashboardUuid,
|
"/dashboard/%s", dashboardUuid,
|
||||||
)
|
)
|
||||||
} else {
|
|
||||||
service.Assets.Dashboards[i].Url = ""
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -131,11 +131,9 @@ func getOperators(ops []pipelinetypes.PipelineOperator) ([]pipelinetypes.Pipelin
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
operator.If = fmt.Sprintf(
|
operator.If = fmt.Sprintf(
|
||||||
`%s && (
|
`%s && %s matches "^\\s*{.*}\\s*$"`, parseFromNotNilCheck, operator.ParseFrom,
|
||||||
(typeOf(%s) == "string" && %s matches "^\\s*{.*}\\s*$" ) ||
|
|
||||||
typeOf(%s) == "map[string]any"
|
|
||||||
)`, parseFromNotNilCheck, operator.ParseFrom, operator.ParseFrom, operator.ParseFrom,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
} else if operator.Type == "add" {
|
} else if operator.Type == "add" {
|
||||||
if strings.HasPrefix(operator.Value, "EXPR(") && strings.HasSuffix(operator.Value, ")") {
|
if strings.HasPrefix(operator.Value, "EXPR(") && strings.HasSuffix(operator.Value, ")") {
|
||||||
expression := strings.TrimSuffix(strings.TrimPrefix(operator.Value, "EXPR("), ")")
|
expression := strings.TrimSuffix(strings.TrimPrefix(operator.Value, "EXPR("), ")")
|
||||||
|
|||||||
@@ -646,7 +646,7 @@ func TestMembershipOpInProcessorFieldExpressions(t *testing.T) {
|
|||||||
require := require.New(t)
|
require := require.New(t)
|
||||||
|
|
||||||
testLogs := []model.SignozLog{
|
testLogs := []model.SignozLog{
|
||||||
makeTestSignozLog("test log", map[string]any{
|
makeTestSignozLog("test log", map[string]interface{}{
|
||||||
"http.method": "GET",
|
"http.method": "GET",
|
||||||
"order.products": `{"ids": ["pid0", "pid1"]}`,
|
"order.products": `{"ids": ["pid0", "pid1"]}`,
|
||||||
}),
|
}),
|
||||||
|
|||||||
@@ -719,21 +719,6 @@ func parseFilterAttributeKeyRequest(r *http.Request) (*v3.FilterAttributeKeyRequ
|
|||||||
aggregateOperator := v3.AggregateOperator(r.URL.Query().Get("aggregateOperator"))
|
aggregateOperator := v3.AggregateOperator(r.URL.Query().Get("aggregateOperator"))
|
||||||
aggregateAttribute := r.URL.Query().Get("aggregateAttribute")
|
aggregateAttribute := r.URL.Query().Get("aggregateAttribute")
|
||||||
limit, err := strconv.Atoi(r.URL.Query().Get("limit"))
|
limit, err := strconv.Atoi(r.URL.Query().Get("limit"))
|
||||||
tagType := v3.TagType(r.URL.Query().Get("tagType"))
|
|
||||||
|
|
||||||
// empty string is a valid tagType
|
|
||||||
// i.e retrieve all attributes
|
|
||||||
if tagType != "" {
|
|
||||||
// what is happening here?
|
|
||||||
// if tagType is undefined(uh oh javascript) or any invalid value, set it to empty string
|
|
||||||
// instead of failing the request. Ideally, we should fail the request.
|
|
||||||
// but we are not doing that to maintain backward compatibility.
|
|
||||||
if err := tagType.Validate(); err != nil {
|
|
||||||
// if the tagType is invalid, set it to empty string
|
|
||||||
tagType = ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
limit = 50
|
limit = 50
|
||||||
}
|
}
|
||||||
@@ -754,7 +739,6 @@ func parseFilterAttributeKeyRequest(r *http.Request) (*v3.FilterAttributeKeyRequ
|
|||||||
AggregateAttribute: aggregateAttribute,
|
AggregateAttribute: aggregateAttribute,
|
||||||
Limit: limit,
|
Limit: limit,
|
||||||
SearchText: r.URL.Query().Get("searchText"),
|
SearchText: r.URL.Query().Get("searchText"),
|
||||||
TagType: tagType,
|
|
||||||
}
|
}
|
||||||
return &req, nil
|
return &req, nil
|
||||||
}
|
}
|
||||||
@@ -877,7 +861,7 @@ func chTransformQuery(query string, variables map[string]interface{}) {
|
|||||||
transformer := chVariables.NewQueryTransformer(query, varsForTransform)
|
transformer := chVariables.NewQueryTransformer(query, varsForTransform)
|
||||||
transformedQuery, err := transformer.Transform()
|
transformedQuery, err := transformer.Transform()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
zap.L().Warn("failed to transform clickhouse query", zap.String("query", query), zap.Error(err))
|
zap.L().Warn("failed to transform clickhouse query", zap.Error(err))
|
||||||
}
|
}
|
||||||
zap.L().Info("transformed clickhouse query", zap.String("transformedQuery", transformedQuery), zap.String("originalQuery", query))
|
zap.L().Info("transformed clickhouse query", zap.String("transformedQuery", transformedQuery), zap.String("originalQuery", query))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -112,7 +112,6 @@ func TestParseFilterAttributeKeyRequest(t *testing.T) {
|
|||||||
expectedSearchText string
|
expectedSearchText string
|
||||||
expectErr bool
|
expectErr bool
|
||||||
errMsg string
|
errMsg string
|
||||||
expectedTagType v3.TagType
|
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
desc: "valid operator and data source",
|
desc: "valid operator and data source",
|
||||||
@@ -169,38 +168,6 @@ func TestParseFilterAttributeKeyRequest(t *testing.T) {
|
|||||||
expectedDataSource: v3.DataSourceTraces,
|
expectedDataSource: v3.DataSourceTraces,
|
||||||
expectedLimit: 50,
|
expectedLimit: 50,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
desc: "invalid tag type",
|
|
||||||
queryString: "aggregateOperator=avg&dataSource=traces&tagType=invalid",
|
|
||||||
expectedOperator: v3.AggregateOperatorAvg,
|
|
||||||
expectedDataSource: v3.DataSourceTraces,
|
|
||||||
expectedTagType: "",
|
|
||||||
expectedLimit: 50,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
desc: "valid tag type",
|
|
||||||
queryString: "aggregateOperator=avg&dataSource=traces&tagType=resource",
|
|
||||||
expectedOperator: v3.AggregateOperatorAvg,
|
|
||||||
expectedDataSource: v3.DataSourceTraces,
|
|
||||||
expectedTagType: v3.TagTypeResource,
|
|
||||||
expectedLimit: 50,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
desc: "valid tag type",
|
|
||||||
queryString: "aggregateOperator=avg&dataSource=traces&tagType=scope",
|
|
||||||
expectedOperator: v3.AggregateOperatorAvg,
|
|
||||||
expectedDataSource: v3.DataSourceTraces,
|
|
||||||
expectedTagType: v3.TagTypeInstrumentationScope,
|
|
||||||
expectedLimit: 50,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
desc: "valid tag type",
|
|
||||||
queryString: "aggregateOperator=avg&dataSource=traces&tagType=tag",
|
|
||||||
expectedOperator: v3.AggregateOperatorAvg,
|
|
||||||
expectedDataSource: v3.DataSourceTraces,
|
|
||||||
expectedTagType: v3.TagTypeTag,
|
|
||||||
expectedLimit: 50,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, reqCase := range reqCases {
|
for _, reqCase := range reqCases {
|
||||||
|
|||||||
@@ -248,7 +248,6 @@ func (q TagType) Validate() error {
|
|||||||
type FilterAttributeKeyRequest struct {
|
type FilterAttributeKeyRequest struct {
|
||||||
DataSource DataSource `json:"dataSource"`
|
DataSource DataSource `json:"dataSource"`
|
||||||
AggregateOperator AggregateOperator `json:"aggregateOperator"`
|
AggregateOperator AggregateOperator `json:"aggregateOperator"`
|
||||||
TagType TagType `json:"tagType"`
|
|
||||||
AggregateAttribute string `json:"aggregateAttribute"`
|
AggregateAttribute string `json:"aggregateAttribute"`
|
||||||
SearchText string `json:"searchText"`
|
SearchText string `json:"searchText"`
|
||||||
Limit int `json:"limit"`
|
Limit int `json:"limit"`
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import (
|
|||||||
"database/sql"
|
"database/sql"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
eeTypes "github.com/SigNoz/signoz/ee/types"
|
||||||
"github.com/SigNoz/signoz/pkg/factory"
|
"github.com/SigNoz/signoz/pkg/factory"
|
||||||
"github.com/SigNoz/signoz/pkg/sqlstore"
|
"github.com/SigNoz/signoz/pkg/sqlstore"
|
||||||
"github.com/SigNoz/signoz/pkg/types"
|
"github.com/SigNoz/signoz/pkg/types"
|
||||||
@@ -102,21 +103,6 @@ type newCloudIntegrationService struct {
|
|||||||
CloudIntegrationID string `bun:"cloud_integration_id,type:text,notnull,unique:cloud_integration_id_type"`
|
CloudIntegrationID string `bun:"cloud_integration_id,type:text,notnull,unique:cloud_integration_id_type"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type StorablePersonalAccessToken struct {
|
|
||||||
bun.BaseModel `bun:"table:personal_access_token"`
|
|
||||||
types.Identifiable
|
|
||||||
types.TimeAuditable
|
|
||||||
OrgID string `json:"orgId" bun:"org_id,type:text,notnull"`
|
|
||||||
Role string `json:"role" bun:"role,type:text,notnull,default:'ADMIN'"`
|
|
||||||
UserID string `json:"userId" bun:"user_id,type:text,notnull"`
|
|
||||||
Token string `json:"token" bun:"token,type:text,notnull,unique"`
|
|
||||||
Name string `json:"name" bun:"name,type:text,notnull"`
|
|
||||||
ExpiresAt int64 `json:"expiresAt" bun:"expires_at,notnull,default:0"`
|
|
||||||
LastUsed int64 `json:"lastUsed" bun:"last_used,notnull,default:0"`
|
|
||||||
Revoked bool `json:"revoked" bun:"revoked,notnull,default:false"`
|
|
||||||
UpdatedByUserID string `json:"updatedByUserId" bun:"updated_by_user_id,type:text,notnull,default:''"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (migration *updateIntegrations) Up(ctx context.Context, db *bun.DB) error {
|
func (migration *updateIntegrations) Up(ctx context.Context, db *bun.DB) error {
|
||||||
|
|
||||||
// begin transaction
|
// begin transaction
|
||||||
@@ -222,12 +208,13 @@ func (migration *updateIntegrations) Up(ctx context.Context, db *bun.DB) error {
|
|||||||
RenameTableAndModifyModel(ctx, tx, new(existingCloudIntegrationService), new(newCloudIntegrationService), []string{CloudIntegrationReference}, func(ctx context.Context) error {
|
RenameTableAndModifyModel(ctx, tx, new(existingCloudIntegrationService), new(newCloudIntegrationService), []string{CloudIntegrationReference}, func(ctx context.Context) error {
|
||||||
existingServices := make([]*existingCloudIntegrationService, 0)
|
existingServices := make([]*existingCloudIntegrationService, 0)
|
||||||
|
|
||||||
// only one service per provider,account id and type
|
// for a account id with same cloud provider and service_id,
|
||||||
// so there won't be any duplicates.
|
// we will get the latest created service using created_at column
|
||||||
// just that these will be enabled as soon as the integration for the account is enabled
|
|
||||||
err = tx.
|
err = tx.
|
||||||
NewSelect().
|
NewSelect().
|
||||||
Model(&existingServices).
|
Model(&existingServices).
|
||||||
|
Where("created_at = (SELECT MAX(created_at) FROM cloud_integrations_service_configs c2 WHERE c2.cloud_provider = c1.cloud_provider AND c2.cloud_account_id = c1.cloud_account_id AND c2.service_id = c1.service_id)").
|
||||||
|
OrderExpr("c1.cloud_provider, c1.cloud_account_id, c1.service_id").
|
||||||
Scan(ctx)
|
Scan(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err != sql.ErrNoRows {
|
if err != sql.ErrNoRows {
|
||||||
@@ -238,14 +225,12 @@ func (migration *updateIntegrations) Up(ctx context.Context, db *bun.DB) error {
|
|||||||
if err == nil && len(existingServices) > 0 {
|
if err == nil && len(existingServices) > 0 {
|
||||||
newServices := migration.
|
newServices := migration.
|
||||||
CopyOldCloudIntegrationServicesToNewCloudIntegrationServices(tx, orgIDs[0], existingServices)
|
CopyOldCloudIntegrationServicesToNewCloudIntegrationServices(tx, orgIDs[0], existingServices)
|
||||||
if len(newServices) > 0 {
|
_, err = tx.
|
||||||
_, err = tx.
|
NewInsert().
|
||||||
NewInsert().
|
Model(&newServices).
|
||||||
Model(&newServices).
|
Exec(ctx)
|
||||||
Exec(ctx)
|
if err != nil {
|
||||||
if err != nil {
|
return err
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
@@ -325,6 +310,9 @@ func (migration *updateIntegrations) CopyOldCloudIntegrationsToNewCloudIntegrati
|
|||||||
func (migration *updateIntegrations) CopyOldCloudIntegrationServicesToNewCloudIntegrationServices(tx bun.IDB, orgID string, existingServices []*existingCloudIntegrationService) []*newCloudIntegrationService {
|
func (migration *updateIntegrations) CopyOldCloudIntegrationServicesToNewCloudIntegrationServices(tx bun.IDB, orgID string, existingServices []*existingCloudIntegrationService) []*newCloudIntegrationService {
|
||||||
newServices := make([]*newCloudIntegrationService, 0)
|
newServices := make([]*newCloudIntegrationService, 0)
|
||||||
|
|
||||||
|
// existing services are the latest service
|
||||||
|
// for a account id with same cloud provider and service_id,
|
||||||
|
// we will get the latest created service using created_at column
|
||||||
for _, service := range existingServices {
|
for _, service := range existingServices {
|
||||||
var cloudIntegrationID string
|
var cloudIntegrationID string
|
||||||
err := tx.NewSelect().
|
err := tx.NewSelect().
|
||||||
@@ -388,22 +376,14 @@ func (migration *updateIntegrations) copyOldAwsIntegrationUser(tx bun.IDB, orgID
|
|||||||
}
|
}
|
||||||
|
|
||||||
// get the pat for old user
|
// get the pat for old user
|
||||||
pat := &StorablePersonalAccessToken{}
|
pat := &eeTypes.StorablePersonalAccessToken{}
|
||||||
err = tx.NewSelect().Model(pat).Where("user_id = ? and revoked = false", "aws-integration").Scan(context.Background())
|
err = tx.NewSelect().Model(pat).Where("user_id = ? and revoked = false", "aws-integration").Scan(context.Background())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err == sql.ErrNoRows {
|
|
||||||
// delete the old user
|
|
||||||
_, err = tx.ExecContext(context.Background(), `DELETE FROM users WHERE id = ?`, user.ID)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// new pat
|
// new pat
|
||||||
newPAT := &StorablePersonalAccessToken{
|
newPAT := &eeTypes.StorablePersonalAccessToken{
|
||||||
Identifiable: types.Identifiable{ID: valuer.GenerateUUID()},
|
Identifiable: types.Identifiable{ID: valuer.GenerateUUID()},
|
||||||
TimeAuditable: types.TimeAuditable{
|
TimeAuditable: types.TimeAuditable{
|
||||||
CreatedAt: time.Now(),
|
CreatedAt: time.Now(),
|
||||||
|
|||||||
@@ -1,48 +0,0 @@
|
|||||||
import pytest
|
|
||||||
|
|
||||||
pytest_plugins = [
|
|
||||||
"fixtures.auth",
|
|
||||||
"fixtures.clickhouse",
|
|
||||||
"fixtures.fs",
|
|
||||||
"fixtures.http",
|
|
||||||
"fixtures.migrator",
|
|
||||||
"fixtures.network",
|
|
||||||
"fixtures.postgres",
|
|
||||||
"fixtures.sql",
|
|
||||||
"fixtures.sqlite",
|
|
||||||
"fixtures.zookeeper",
|
|
||||||
"fixtures.signoz",
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
def pytest_addoption(parser: pytest.Parser):
|
|
||||||
parser.addoption(
|
|
||||||
"--sqlstore-provider",
|
|
||||||
action="store",
|
|
||||||
default="postgres",
|
|
||||||
help="sqlstore provider",
|
|
||||||
)
|
|
||||||
parser.addoption(
|
|
||||||
"--postgres-version",
|
|
||||||
action="store",
|
|
||||||
default="15",
|
|
||||||
help="postgres version",
|
|
||||||
)
|
|
||||||
parser.addoption(
|
|
||||||
"--clickhouse-version",
|
|
||||||
action="store",
|
|
||||||
default="24.1.2-alpine",
|
|
||||||
help="clickhouse version",
|
|
||||||
)
|
|
||||||
parser.addoption(
|
|
||||||
"--zookeeper-version",
|
|
||||||
action="store",
|
|
||||||
default="3.7.1",
|
|
||||||
help="zookeeper version",
|
|
||||||
)
|
|
||||||
parser.addoption(
|
|
||||||
"--schema-migrator-version",
|
|
||||||
action="store",
|
|
||||||
default="v0.111.38",
|
|
||||||
help="schema migrator version",
|
|
||||||
)
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
from http import HTTPStatus
|
|
||||||
|
|
||||||
import pytest
|
|
||||||
import requests
|
|
||||||
|
|
||||||
from fixtures import types
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(name="create_first_user", scope="function")
|
|
||||||
def create_first_user(signoz: types.SigNoz) -> None:
|
|
||||||
def _create_user(name: str, email: str, password: str) -> None:
|
|
||||||
response = requests.post(
|
|
||||||
signoz.self.host_config.get("/api/v1/register"),
|
|
||||||
json={
|
|
||||||
"name": name,
|
|
||||||
"orgId": "",
|
|
||||||
"orgName": "",
|
|
||||||
"email": email,
|
|
||||||
"password": password,
|
|
||||||
},
|
|
||||||
timeout=5,
|
|
||||||
)
|
|
||||||
|
|
||||||
assert response.status_code == HTTPStatus.OK
|
|
||||||
|
|
||||||
return _create_user
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(name="get_jwt_token", scope="module")
|
|
||||||
def get_jwt_token(signoz: types.SigNoz) -> str:
|
|
||||||
def _get_jwt_token(email: str, password: str) -> str:
|
|
||||||
response = requests.post(
|
|
||||||
signoz.self.host_config.get("/api/v1/login"),
|
|
||||||
json={
|
|
||||||
"email": email,
|
|
||||||
"password": password,
|
|
||||||
},
|
|
||||||
timeout=5,
|
|
||||||
)
|
|
||||||
assert response.status_code == HTTPStatus.OK
|
|
||||||
|
|
||||||
return response.json()["accessJwt"]
|
|
||||||
|
|
||||||
return _get_jwt_token
|
|
||||||
@@ -1,111 +0,0 @@
|
|||||||
import os
|
|
||||||
from typing import Any, Generator
|
|
||||||
|
|
||||||
import clickhouse_driver
|
|
||||||
import pytest
|
|
||||||
from testcontainers.clickhouse import ClickHouseContainer
|
|
||||||
from testcontainers.core.container import Network
|
|
||||||
|
|
||||||
from fixtures import types
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(name="clickhouse", scope="package")
|
|
||||||
def clickhouse(
|
|
||||||
tmpfs: Generator[types.LegacyPath, Any, None],
|
|
||||||
network: Network,
|
|
||||||
zookeeper: types.TestContainerDocker,
|
|
||||||
request: pytest.FixtureRequest,
|
|
||||||
) -> types.TestContainerClickhouse:
|
|
||||||
"""
|
|
||||||
Package-scoped fixture for Clickhouse TestContainer.
|
|
||||||
"""
|
|
||||||
version = request.config.getoption("--clickhouse-version")
|
|
||||||
|
|
||||||
container = ClickHouseContainer(
|
|
||||||
image=f"clickhouse/clickhouse-server:{version}",
|
|
||||||
port=9000,
|
|
||||||
username="signoz",
|
|
||||||
password="password",
|
|
||||||
)
|
|
||||||
|
|
||||||
cluster_config = f"""
|
|
||||||
<clickhouse>
|
|
||||||
<logger>
|
|
||||||
<level>information</level>
|
|
||||||
<formatting>
|
|
||||||
<type>json</type>
|
|
||||||
</formatting>
|
|
||||||
<log>/var/log/clickhouse-server/clickhouse-server.log</log>
|
|
||||||
<errorlog>/var/log/clickhouse-server/clickhouse-server.err.log</errorlog>
|
|
||||||
<size>1000M</size>
|
|
||||||
<count>3</count>
|
|
||||||
<console>1</console>
|
|
||||||
</logger>
|
|
||||||
|
|
||||||
<macros>
|
|
||||||
<shard>01</shard>
|
|
||||||
<replica>01</replica>
|
|
||||||
</macros>
|
|
||||||
|
|
||||||
<zookeeper>
|
|
||||||
<node>
|
|
||||||
<host>{zookeeper.container_config.address}</host>
|
|
||||||
<port>{zookeeper.container_config.port}</port>
|
|
||||||
</node>
|
|
||||||
</zookeeper>
|
|
||||||
|
|
||||||
<remote_servers>
|
|
||||||
<cluster>
|
|
||||||
<shard>
|
|
||||||
<replica>
|
|
||||||
<host>127.0.0.1</host>
|
|
||||||
<port>9000</port>
|
|
||||||
</replica>
|
|
||||||
</shard>
|
|
||||||
</cluster>
|
|
||||||
</remote_servers>
|
|
||||||
|
|
||||||
<distributed_ddl>
|
|
||||||
<path>/clickhouse/task_queue/ddl</path>
|
|
||||||
<profile>default</profile>
|
|
||||||
</distributed_ddl>
|
|
||||||
</clickhouse>
|
|
||||||
"""
|
|
||||||
|
|
||||||
tmp_dir = tmpfs("clickhouse")
|
|
||||||
cluster_config_file_path = os.path.join(tmp_dir, "cluster.xml")
|
|
||||||
with open(cluster_config_file_path, "w", encoding="utf-8") as f:
|
|
||||||
f.write(cluster_config)
|
|
||||||
|
|
||||||
container.with_volume_mapping(
|
|
||||||
cluster_config_file_path, "/etc/clickhouse-server/config.d/cluster.xml"
|
|
||||||
)
|
|
||||||
container.with_network(network)
|
|
||||||
container.start()
|
|
||||||
|
|
||||||
connection = clickhouse_driver.connect(
|
|
||||||
user=container.username,
|
|
||||||
password=container.password,
|
|
||||||
host=container.get_container_host_ip(),
|
|
||||||
port=container.get_exposed_port(9000),
|
|
||||||
)
|
|
||||||
|
|
||||||
def stop():
|
|
||||||
connection.close()
|
|
||||||
container.stop(delete_volume=True)
|
|
||||||
|
|
||||||
request.addfinalizer(stop)
|
|
||||||
|
|
||||||
return types.TestContainerClickhouse(
|
|
||||||
container=container,
|
|
||||||
host_config=types.TestContainerUrlConfig(
|
|
||||||
"tcp", container.get_container_host_ip(), container.get_exposed_port(9000)
|
|
||||||
),
|
|
||||||
container_config=types.TestContainerUrlConfig(
|
|
||||||
"tcp", container.get_wrapped_container().name, 9000
|
|
||||||
),
|
|
||||||
conn=connection,
|
|
||||||
env={
|
|
||||||
"SIGNOZ_TELEMETRYSTORE_CLICKHOUSE_DSN": f"tcp://{container.username}:{container.password}@{container.get_wrapped_container().name}:{9000}" # pylint: disable=line-too-long
|
|
||||||
},
|
|
||||||
)
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
from typing import Any, Generator
|
|
||||||
|
|
||||||
import pytest
|
|
||||||
|
|
||||||
from fixtures import types
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope="package")
|
|
||||||
def tmpfs(
|
|
||||||
tmp_path_factory: pytest.TempPathFactory,
|
|
||||||
) -> Generator[types.LegacyPath, Any, None]:
|
|
||||||
def _tmp(basename: str):
|
|
||||||
return tmp_path_factory.mktemp(basename)
|
|
||||||
|
|
||||||
yield _tmp
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
from typing import List
|
|
||||||
|
|
||||||
import pytest
|
|
||||||
from testcontainers.core.container import Network
|
|
||||||
from wiremock.client import (
|
|
||||||
Mapping,
|
|
||||||
Mappings,
|
|
||||||
)
|
|
||||||
from wiremock.constants import Config
|
|
||||||
from wiremock.testing.testcontainer import WireMockContainer
|
|
||||||
|
|
||||||
from fixtures import types
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(name="zeus", scope="package")
|
|
||||||
def zeus(
|
|
||||||
network: Network, request: pytest.FixtureRequest
|
|
||||||
) -> types.TestContainerWiremock:
|
|
||||||
"""
|
|
||||||
Package-scoped fixture for running zeus
|
|
||||||
"""
|
|
||||||
container = WireMockContainer(image="wiremock/wiremock:2.35.1-1", secure=False)
|
|
||||||
container.with_network(network)
|
|
||||||
|
|
||||||
container.start()
|
|
||||||
|
|
||||||
def stop():
|
|
||||||
container.stop(delete_volume=True)
|
|
||||||
|
|
||||||
request.addfinalizer(stop)
|
|
||||||
|
|
||||||
return types.TestContainerWiremock(
|
|
||||||
container=container,
|
|
||||||
host_config=types.TestContainerUrlConfig(
|
|
||||||
"http", container.get_container_host_ip(), container.get_exposed_port(8080)
|
|
||||||
),
|
|
||||||
container_config=types.TestContainerUrlConfig(
|
|
||||||
"http", container.get_wrapped_container().name, 8080
|
|
||||||
),
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(name="make_http_mocks", scope="function")
|
|
||||||
def make_http_mocks():
|
|
||||||
def _make_http_mocks(container: WireMockContainer, mappings: List[Mapping]):
|
|
||||||
Config.base_url = container.get_url("__admin")
|
|
||||||
|
|
||||||
for mapping in mappings:
|
|
||||||
Mappings.create_mapping(mapping=mapping)
|
|
||||||
|
|
||||||
yield _make_http_mocks
|
|
||||||
|
|
||||||
Mappings.delete_all_mappings()
|
|
||||||
@@ -1,55 +0,0 @@
|
|||||||
import docker
|
|
||||||
import pytest
|
|
||||||
from testcontainers.core.container import Network
|
|
||||||
|
|
||||||
from fixtures import types
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(name="migrator", scope="package")
|
|
||||||
def migrator(
|
|
||||||
network: Network,
|
|
||||||
clickhouse: types.TestContainerClickhouse,
|
|
||||||
request: pytest.FixtureRequest,
|
|
||||||
) -> None:
|
|
||||||
"""
|
|
||||||
Package-scoped fixture for running schema migrations.
|
|
||||||
"""
|
|
||||||
version = request.config.getoption("--schema-migrator-version")
|
|
||||||
|
|
||||||
client = docker.from_env()
|
|
||||||
|
|
||||||
container = client.containers.run(
|
|
||||||
image=f"signoz/signoz-schema-migrator:{version}",
|
|
||||||
command=f"sync --replication=true --cluster-name=cluster --up= --dsn={clickhouse.env["SIGNOZ_TELEMETRYSTORE_CLICKHOUSE_DSN"]}", # pylint: disable=line-too-long
|
|
||||||
detach=True,
|
|
||||||
auto_remove=False,
|
|
||||||
network=network.id,
|
|
||||||
)
|
|
||||||
|
|
||||||
result = container.wait()
|
|
||||||
|
|
||||||
if result["StatusCode"] != 0:
|
|
||||||
logs = container.logs().decode(encoding="utf-8")
|
|
||||||
container.remove()
|
|
||||||
print(logs)
|
|
||||||
raise RuntimeError("failed to run migrations on clickhouse")
|
|
||||||
|
|
||||||
container.remove()
|
|
||||||
|
|
||||||
container = client.containers.run(
|
|
||||||
image=f"signoz/signoz-schema-migrator:{version}",
|
|
||||||
command=f"async --replication=true --cluster-name=cluster --up= --dsn={clickhouse.env["SIGNOZ_TELEMETRYSTORE_CLICKHOUSE_DSN"]}", # pylint: disable=line-too-long
|
|
||||||
detach=True,
|
|
||||||
auto_remove=False,
|
|
||||||
network=network.id,
|
|
||||||
)
|
|
||||||
|
|
||||||
result = container.wait()
|
|
||||||
|
|
||||||
if result["StatusCode"] != 0:
|
|
||||||
logs = container.logs().decode(encoding="utf-8")
|
|
||||||
container.remove()
|
|
||||||
print(logs)
|
|
||||||
raise RuntimeError("failed to run migrations on clickhouse")
|
|
||||||
|
|
||||||
container.remove()
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
import pytest
|
|
||||||
from testcontainers.core.container import Network
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(name="network", scope="package")
|
|
||||||
def network(request: pytest.FixtureRequest) -> Network:
|
|
||||||
"""
|
|
||||||
Package-Scoped fixture for creating a network
|
|
||||||
"""
|
|
||||||
nw = Network()
|
|
||||||
nw.create()
|
|
||||||
|
|
||||||
def stop():
|
|
||||||
nw.remove()
|
|
||||||
|
|
||||||
request.addfinalizer(stop)
|
|
||||||
|
|
||||||
return nw
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
import psycopg2
|
|
||||||
import pytest
|
|
||||||
from testcontainers.core.container import Network
|
|
||||||
from testcontainers.postgres import PostgresContainer
|
|
||||||
|
|
||||||
from fixtures import types
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(name="postgres", scope="package")
|
|
||||||
def postgres(
|
|
||||||
network: Network, request: pytest.FixtureRequest
|
|
||||||
) -> types.TestContainerSQL:
|
|
||||||
"""
|
|
||||||
Package-scoped fixture for PostgreSQL TestContainer.
|
|
||||||
"""
|
|
||||||
version = request.config.getoption("--postgres-version")
|
|
||||||
|
|
||||||
container = PostgresContainer(
|
|
||||||
image=f"postgres:{version}",
|
|
||||||
port=5432,
|
|
||||||
username="signoz",
|
|
||||||
password="password",
|
|
||||||
dbname="signoz",
|
|
||||||
driver="psycopg2",
|
|
||||||
network=network.id,
|
|
||||||
)
|
|
||||||
container.start()
|
|
||||||
|
|
||||||
connection = psycopg2.connect(
|
|
||||||
dbname=container.dbname,
|
|
||||||
user=container.username,
|
|
||||||
password=container.password,
|
|
||||||
host=container.get_container_host_ip(),
|
|
||||||
port=container.get_exposed_port(5432),
|
|
||||||
)
|
|
||||||
|
|
||||||
def stop():
|
|
||||||
connection.close()
|
|
||||||
container.stop(delete_volume=True)
|
|
||||||
|
|
||||||
request.addfinalizer(stop)
|
|
||||||
|
|
||||||
return types.TestContainerSQL(
|
|
||||||
container=container,
|
|
||||||
host_config=types.TestContainerUrlConfig(
|
|
||||||
"postgresql",
|
|
||||||
container.get_container_host_ip(),
|
|
||||||
container.get_exposed_port(5432),
|
|
||||||
),
|
|
||||||
container_config=types.TestContainerUrlConfig(
|
|
||||||
"postgresql", container.get_wrapped_container().name, 5432
|
|
||||||
),
|
|
||||||
conn=connection,
|
|
||||||
env={
|
|
||||||
"SIGNOZ_SQLSTORE_PROVIDER": "postgres",
|
|
||||||
"SIGNOZ_SQLSTORE_POSTGRES_DSN": f"postgresql://{container.username}:{container.password}@{container.get_wrapped_container().name}:{5432}/{container.dbname}", # pylint: disable=line-too-long
|
|
||||||
},
|
|
||||||
)
|
|
||||||
@@ -1,111 +0,0 @@
|
|||||||
import platform
|
|
||||||
import time
|
|
||||||
from http import HTTPStatus
|
|
||||||
|
|
||||||
import pytest
|
|
||||||
import requests
|
|
||||||
from testcontainers.core.container import DockerContainer, Network
|
|
||||||
from testcontainers.core.image import DockerImage
|
|
||||||
|
|
||||||
from fixtures import types
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(name="signoz", scope="package")
|
|
||||||
def signoz(
|
|
||||||
network: Network,
|
|
||||||
zeus: types.TestContainerWiremock,
|
|
||||||
sqlstore: types.TestContainerSQL,
|
|
||||||
clickhouse: types.TestContainerClickhouse,
|
|
||||||
request: pytest.FixtureRequest,
|
|
||||||
) -> types.SigNoz:
|
|
||||||
"""
|
|
||||||
Package-scoped fixture for setting up SigNoz.
|
|
||||||
"""
|
|
||||||
|
|
||||||
# Run the migrations for clickhouse
|
|
||||||
request.getfixturevalue("migrator")
|
|
||||||
|
|
||||||
# Build the image
|
|
||||||
self = DockerImage(
|
|
||||||
path="../../",
|
|
||||||
dockerfile_path="ee/query-service/Dockerfile.integration",
|
|
||||||
tag="signoz:integration",
|
|
||||||
)
|
|
||||||
|
|
||||||
arch = platform.machine()
|
|
||||||
if arch == "x86_64":
|
|
||||||
arch = "amd64"
|
|
||||||
|
|
||||||
self.build(
|
|
||||||
buildargs={
|
|
||||||
"TARGETARCH": arch,
|
|
||||||
"ZEUSURL": zeus.container_config.base(),
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
env = (
|
|
||||||
{
|
|
||||||
"SIGNOZ_WEB_ENABLED": False,
|
|
||||||
"SIGNOZ_INSTRUMENTATION_LOGS_LEVEL": "debug",
|
|
||||||
"SIGNOZ_PROMETHEUS_ACTIVE__QUERY__TRACKER_ENABLED": False,
|
|
||||||
}
|
|
||||||
| sqlstore.env
|
|
||||||
| clickhouse.env
|
|
||||||
)
|
|
||||||
|
|
||||||
container = DockerContainer("signoz:integration")
|
|
||||||
for k, v in env.items():
|
|
||||||
container.with_env(k, v)
|
|
||||||
container.with_exposed_ports(8080)
|
|
||||||
container.with_network(network=network)
|
|
||||||
|
|
||||||
provider = request.config.getoption("--sqlstore-provider")
|
|
||||||
if provider == "sqlite":
|
|
||||||
container.with_volume_mapping(
|
|
||||||
sqlstore.env["SIGNOZ_SQLSTORE_SQLITE_PATH"],
|
|
||||||
sqlstore.env["SIGNOZ_SQLSTORE_SQLITE_PATH"],
|
|
||||||
"rw",
|
|
||||||
)
|
|
||||||
|
|
||||||
container.start()
|
|
||||||
|
|
||||||
def ready(container: DockerContainer) -> None:
|
|
||||||
for attempt in range(30):
|
|
||||||
try:
|
|
||||||
response = requests.get(
|
|
||||||
f"http://{container.get_container_host_ip()}:{container.get_exposed_port(8080)}/api/v1/health", # pylint: disable=line-too-long
|
|
||||||
timeout=2,
|
|
||||||
)
|
|
||||||
return response.status_code == HTTPStatus.OK
|
|
||||||
except Exception: # pylint: disable=broad-exception-caught
|
|
||||||
print(f"attempt {attempt} at health check failed")
|
|
||||||
time.sleep(2)
|
|
||||||
raise TimeoutError("timeout exceeded while waiting")
|
|
||||||
|
|
||||||
ready(container=container)
|
|
||||||
|
|
||||||
def stop():
|
|
||||||
logs = container.get_wrapped_container().logs(tail=100)
|
|
||||||
print(logs.decode(encoding="utf-8"))
|
|
||||||
container.stop(delete_volume=True)
|
|
||||||
|
|
||||||
request.addfinalizer(stop)
|
|
||||||
|
|
||||||
return types.SigNoz(
|
|
||||||
self=types.TestContainerDocker(
|
|
||||||
container=container,
|
|
||||||
host_config=types.TestContainerUrlConfig(
|
|
||||||
"http",
|
|
||||||
container.get_container_host_ip(),
|
|
||||||
container.get_exposed_port(8080),
|
|
||||||
),
|
|
||||||
container_config=types.TestContainerUrlConfig(
|
|
||||||
"http",
|
|
||||||
container.get_wrapped_container().name,
|
|
||||||
8080,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
sqlstore=sqlstore,
|
|
||||||
telemetrystore=clickhouse,
|
|
||||||
zeus=zeus,
|
|
||||||
)
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
import pytest
|
|
||||||
|
|
||||||
from fixtures import types
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(name="sqlstore", scope="package")
|
|
||||||
def sqlstore(
|
|
||||||
request: pytest.FixtureRequest,
|
|
||||||
) -> types.TestContainerSQL:
|
|
||||||
"""
|
|
||||||
Packaged-scoped fixture for creating sql store.
|
|
||||||
"""
|
|
||||||
provider = request.config.getoption("--sqlstore-provider")
|
|
||||||
|
|
||||||
if provider == "postgres":
|
|
||||||
store = request.getfixturevalue("postgres")
|
|
||||||
return store
|
|
||||||
if provider == "sqlite":
|
|
||||||
store = request.getfixturevalue("sqlite")
|
|
||||||
return store
|
|
||||||
|
|
||||||
raise pytest.FixtureLookupError(
|
|
||||||
argname=f"{provider}",
|
|
||||||
request=request,
|
|
||||||
msg=f"{provider} does not have a fixture",
|
|
||||||
)
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
import sqlite3
|
|
||||||
from collections import namedtuple
|
|
||||||
from typing import Any, Generator
|
|
||||||
|
|
||||||
import pytest
|
|
||||||
|
|
||||||
from fixtures import types
|
|
||||||
|
|
||||||
ConnectionTuple = namedtuple("ConnectionTuple", "connection config")
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(name="sqlite", scope="package")
|
|
||||||
def sqlite(
|
|
||||||
tmpfs: Generator[types.LegacyPath, Any, None], request: pytest.FixtureRequest
|
|
||||||
) -> types.TestContainerSQL:
|
|
||||||
"""
|
|
||||||
Package-scoped fixture for SQLite.
|
|
||||||
"""
|
|
||||||
tmpdir = tmpfs("sqlite")
|
|
||||||
path = tmpdir / "signoz.db"
|
|
||||||
connection = sqlite3.connect(path, check_same_thread=False)
|
|
||||||
|
|
||||||
def stop():
|
|
||||||
connection.close()
|
|
||||||
|
|
||||||
request.addfinalizer(stop)
|
|
||||||
|
|
||||||
return types.TestContainerSQL(
|
|
||||||
None,
|
|
||||||
host_config=None,
|
|
||||||
container_config=None,
|
|
||||||
conn=connection,
|
|
||||||
env={
|
|
||||||
"SIGNOZ_SQLSTORE_PROVIDER": "sqlite",
|
|
||||||
"SIGNOZ_SQLSTORE_SQLITE_PATH": str(path),
|
|
||||||
},
|
|
||||||
)
|
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
from dataclasses import dataclass
|
|
||||||
from typing import Dict
|
|
||||||
from urllib.parse import urljoin
|
|
||||||
|
|
||||||
import py
|
|
||||||
from clickhouse_driver.dbapi import Connection
|
|
||||||
from testcontainers.core.container import DockerContainer
|
|
||||||
from wiremock.testing.testcontainer import WireMockContainer
|
|
||||||
|
|
||||||
LegacyPath = py.path.local
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
|
||||||
class TestContainerUrlConfig:
|
|
||||||
__test__ = False
|
|
||||||
scheme: str
|
|
||||||
address: str
|
|
||||||
port: int
|
|
||||||
|
|
||||||
def base(self) -> str:
|
|
||||||
return f"{self.scheme}://{self.address}:{self.port}"
|
|
||||||
|
|
||||||
def get(self, path: str) -> str:
|
|
||||||
return urljoin(self.base(), path)
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
|
||||||
class TestContainerDocker:
|
|
||||||
__test__ = False
|
|
||||||
container: DockerContainer
|
|
||||||
host_config: TestContainerUrlConfig
|
|
||||||
container_config: TestContainerUrlConfig
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
|
||||||
class TestContainerWiremock(TestContainerDocker):
|
|
||||||
__test__ = False
|
|
||||||
container: WireMockContainer
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
|
||||||
class TestContainerSQL(TestContainerDocker):
|
|
||||||
__test__ = False
|
|
||||||
container: DockerContainer
|
|
||||||
conn: any
|
|
||||||
env: Dict[str, str]
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
|
||||||
class TestContainerClickhouse(TestContainerDocker):
|
|
||||||
__test__ = False
|
|
||||||
container: DockerContainer
|
|
||||||
conn: Connection
|
|
||||||
env: Dict[str, str]
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
|
||||||
class SigNoz:
|
|
||||||
__test__ = False
|
|
||||||
self: TestContainerDocker
|
|
||||||
sqlstore: TestContainerSQL
|
|
||||||
telemetrystore: TestContainerClickhouse
|
|
||||||
zeus: TestContainerWiremock
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
import pytest
|
|
||||||
from testcontainers.core.container import DockerContainer, Network
|
|
||||||
|
|
||||||
from fixtures import types
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(name="zookeeper", scope="package")
|
|
||||||
def zookeeper(
|
|
||||||
network: Network, request: pytest.FixtureRequest
|
|
||||||
) -> types.TestContainerDocker:
|
|
||||||
"""
|
|
||||||
Package-scoped fixture for Zookeeper TestContainer.
|
|
||||||
"""
|
|
||||||
version = request.config.getoption("--zookeeper-version")
|
|
||||||
|
|
||||||
container = DockerContainer(image=f"bitnami/zookeeper:{version}")
|
|
||||||
container.with_env("ALLOW_ANONYMOUS_LOGIN", "yes")
|
|
||||||
container.with_exposed_ports(2181)
|
|
||||||
container.with_network(network=network)
|
|
||||||
|
|
||||||
container.start()
|
|
||||||
|
|
||||||
def stop():
|
|
||||||
container.stop(delete_volume=True)
|
|
||||||
|
|
||||||
request.addfinalizer(stop)
|
|
||||||
|
|
||||||
return types.TestContainerDocker(
|
|
||||||
container=container,
|
|
||||||
host_config=types.TestContainerUrlConfig(
|
|
||||||
"tcp",
|
|
||||||
container.get_container_host_ip(),
|
|
||||||
container.get_exposed_port(2181),
|
|
||||||
),
|
|
||||||
container_config=types.TestContainerUrlConfig(
|
|
||||||
"tcp",
|
|
||||||
container.get_wrapped_container().name,
|
|
||||||
2181,
|
|
||||||
),
|
|
||||||
)
|
|
||||||
911
tests/integration/poetry.lock
generated
911
tests/integration/poetry.lock
generated
@@ -1,911 +0,0 @@
|
|||||||
# This file is automatically @generated by Poetry 2.1.2 and should not be changed by hand.
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "astroid"
|
|
||||||
version = "3.3.9"
|
|
||||||
description = "An abstract syntax tree for Python with inference support."
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.9.0"
|
|
||||||
groups = ["dev"]
|
|
||||||
files = [
|
|
||||||
{file = "astroid-3.3.9-py3-none-any.whl", hash = "sha256:d05bfd0acba96a7bd43e222828b7d9bc1e138aaeb0649707908d3702a9831248"},
|
|
||||||
{file = "astroid-3.3.9.tar.gz", hash = "sha256:622cc8e3048684aa42c820d9d218978021c3c3d174fb03a9f0d615921744f550"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "autoflake"
|
|
||||||
version = "2.3.1"
|
|
||||||
description = "Removes unused imports and unused variables"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.8"
|
|
||||||
groups = ["dev"]
|
|
||||||
files = [
|
|
||||||
{file = "autoflake-2.3.1-py3-none-any.whl", hash = "sha256:3ae7495db9084b7b32818b4140e6dc4fc280b712fb414f5b8fe57b0a8e85a840"},
|
|
||||||
{file = "autoflake-2.3.1.tar.gz", hash = "sha256:c98b75dc5b0a86459c4f01a1d32ac7eb4338ec4317a4469515ff1e687ecd909e"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.dependencies]
|
|
||||||
pyflakes = ">=3.0.0"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "black"
|
|
||||||
version = "25.1.0"
|
|
||||||
description = "The uncompromising code formatter."
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.9"
|
|
||||||
groups = ["main"]
|
|
||||||
files = [
|
|
||||||
{file = "black-25.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:759e7ec1e050a15f89b770cefbf91ebee8917aac5c20483bc2d80a6c3a04df32"},
|
|
||||||
{file = "black-25.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e519ecf93120f34243e6b0054db49c00a35f84f195d5bce7e9f5cfc578fc2da"},
|
|
||||||
{file = "black-25.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:055e59b198df7ac0b7efca5ad7ff2516bca343276c466be72eb04a3bcc1f82d7"},
|
|
||||||
{file = "black-25.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:db8ea9917d6f8fc62abd90d944920d95e73c83a5ee3383493e35d271aca872e9"},
|
|
||||||
{file = "black-25.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a39337598244de4bae26475f77dda852ea00a93bd4c728e09eacd827ec929df0"},
|
|
||||||
{file = "black-25.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:96c1c7cd856bba8e20094e36e0f948718dc688dba4a9d78c3adde52b9e6c2299"},
|
|
||||||
{file = "black-25.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bce2e264d59c91e52d8000d507eb20a9aca4a778731a08cfff7e5ac4a4bb7096"},
|
|
||||||
{file = "black-25.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:172b1dbff09f86ce6f4eb8edf9dede08b1fce58ba194c87d7a4f1a5aa2f5b3c2"},
|
|
||||||
{file = "black-25.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4b60580e829091e6f9238c848ea6750efed72140b91b048770b64e74fe04908b"},
|
|
||||||
{file = "black-25.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e2978f6df243b155ef5fa7e558a43037c3079093ed5d10fd84c43900f2d8ecc"},
|
|
||||||
{file = "black-25.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b48735872ec535027d979e8dcb20bf4f70b5ac75a8ea99f127c106a7d7aba9f"},
|
|
||||||
{file = "black-25.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:ea0213189960bda9cf99be5b8c8ce66bb054af5e9e861249cd23471bd7b0b3ba"},
|
|
||||||
{file = "black-25.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8f0b18a02996a836cc9c9c78e5babec10930862827b1b724ddfe98ccf2f2fe4f"},
|
|
||||||
{file = "black-25.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:afebb7098bfbc70037a053b91ae8437c3857482d3a690fefc03e9ff7aa9a5fd3"},
|
|
||||||
{file = "black-25.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:030b9759066a4ee5e5aca28c3c77f9c64789cdd4de8ac1df642c40b708be6171"},
|
|
||||||
{file = "black-25.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:a22f402b410566e2d1c950708c77ebf5ebd5d0d88a6a2e87c86d9fb48afa0d18"},
|
|
||||||
{file = "black-25.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a1ee0a0c330f7b5130ce0caed9936a904793576ef4d2b98c40835d6a65afa6a0"},
|
|
||||||
{file = "black-25.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f3df5f1bf91d36002b0a75389ca8663510cf0531cca8aa5c1ef695b46d98655f"},
|
|
||||||
{file = "black-25.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d9e6827d563a2c820772b32ce8a42828dc6790f095f441beef18f96aa6f8294e"},
|
|
||||||
{file = "black-25.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:bacabb307dca5ebaf9c118d2d2f6903da0d62c9faa82bd21a33eecc319559355"},
|
|
||||||
{file = "black-25.1.0-py3-none-any.whl", hash = "sha256:95e8176dae143ba9097f351d174fdaf0ccd29efb414b362ae3fd72bf0f710717"},
|
|
||||||
{file = "black-25.1.0.tar.gz", hash = "sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.dependencies]
|
|
||||||
click = ">=8.0.0"
|
|
||||||
mypy-extensions = ">=0.4.3"
|
|
||||||
packaging = ">=22.0"
|
|
||||||
pathspec = ">=0.9.0"
|
|
||||||
platformdirs = ">=2"
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
colorama = ["colorama (>=0.4.3)"]
|
|
||||||
d = ["aiohttp (>=3.10)"]
|
|
||||||
jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"]
|
|
||||||
uvloop = ["uvloop (>=0.15.2)"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "certifi"
|
|
||||||
version = "2025.1.31"
|
|
||||||
description = "Python package for providing Mozilla's CA Bundle."
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.6"
|
|
||||||
groups = ["main"]
|
|
||||||
files = [
|
|
||||||
{file = "certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe"},
|
|
||||||
{file = "certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "charset-normalizer"
|
|
||||||
version = "3.4.1"
|
|
||||||
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.7"
|
|
||||||
groups = ["main"]
|
|
||||||
files = [
|
|
||||||
{file = "charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f30bf9fd9be89ecb2360c7d94a711f00c09b976258846efe40db3d05828e8089"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:97f68b8d6831127e4787ad15e6757232e14e12060bec17091b85eb1486b91d8d"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7974a0b5ecd505609e3b19742b60cee7aa2aa2fb3151bc917e6e2646d7667dcf"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc54db6c8593ef7d4b2a331b58653356cf04f67c960f584edb7c3d8c97e8f39e"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:311f30128d7d333eebd7896965bfcfbd0065f1716ec92bd5638d7748eb6f936a"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:7d053096f67cd1241601111b698f5cad775f97ab25d81567d3f59219b5f1adbd"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:807f52c1f798eef6cf26beb819eeb8819b1622ddfeef9d0977a8502d4db6d534"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:dccbe65bd2f7f7ec22c4ff99ed56faa1e9f785482b9bbd7c717e26fd723a1d1e"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:2fb9bd477fdea8684f78791a6de97a953c51831ee2981f8e4f583ff3b9d9687e"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:01732659ba9b5b873fc117534143e4feefecf3b2078b0a6a2e925271bb6f4cfa"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp37-cp37m-win32.whl", hash = "sha256:7a4f97a081603d2050bfaffdefa5b02a9ec823f8348a572e39032caa8404a487"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7b1bef6280950ee6c177b326508f86cad7ad4dff12454483b51d8b7d673a2c5d"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ecddf25bee22fe4fe3737a399d0d177d72bc22be6913acfab364b40bce1ba83c"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c60ca7339acd497a55b0ea5d506b2a2612afb2826560416f6894e8b5770d4a9"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b7b2d86dd06bfc2ade3312a83a5c364c7ec2e3498f8734282c6c3d4b07b346b8"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd78cfcda14a1ef52584dbb008f7ac81c1328c0f58184bf9a84c49c605002da6"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e27f48bcd0957c6d4cb9d6fa6b61d192d0b13d5ef563e5f2ae35feafc0d179c"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01ad647cdd609225c5350561d084b42ddf732f4eeefe6e678765636791e78b9a"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:619a609aa74ae43d90ed2e89bdd784765de0a25ca761b93e196d938b8fd1dbbd"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:89149166622f4db9b4b6a449256291dc87a99ee53151c74cbd82a53c8c2f6ccd"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:7709f51f5f7c853f0fb938bcd3bc59cdfdc5203635ffd18bf354f6967ea0f824"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:345b0426edd4e18138d6528aed636de7a9ed169b4aaf9d61a8c19e39d26838ca"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0907f11d019260cdc3f94fbdb23ff9125f6b5d1039b76003b5b0ac9d6a6c9d5b"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp38-cp38-win32.whl", hash = "sha256:ea0d8d539afa5eb2728aa1932a988a9a7af94f18582ffae4bc10b3fbdad0626e"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:329ce159e82018d646c7ac45b01a430369d526569ec08516081727a20e9e4af4"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp39-cp39-win32.whl", hash = "sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5"},
|
|
||||||
{file = "charset_normalizer-3.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765"},
|
|
||||||
{file = "charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85"},
|
|
||||||
{file = "charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "click"
|
|
||||||
version = "8.1.8"
|
|
||||||
description = "Composable command line interface toolkit"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.7"
|
|
||||||
groups = ["main"]
|
|
||||||
files = [
|
|
||||||
{file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"},
|
|
||||||
{file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.dependencies]
|
|
||||||
colorama = {version = "*", markers = "platform_system == \"Windows\""}
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "clickhouse-driver"
|
|
||||||
version = "0.2.9"
|
|
||||||
description = "Python driver with native interface for ClickHouse"
|
|
||||||
optional = false
|
|
||||||
python-versions = "<4,>=3.7"
|
|
||||||
groups = ["main"]
|
|
||||||
files = [
|
|
||||||
{file = "clickhouse-driver-0.2.9.tar.gz", hash = "sha256:050ea4870ead993910b39e7fae965dc1c347b2e8191dcd977cd4b385f9e19f87"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6ce04e9d0d0f39561f312d1ac1a8147bc9206e4267e1a23e20e0423ebac95534"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7ae5c8931bf290b9d85582e7955b9aad7f19ff9954e48caa4f9a180ea4d01078"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e51792f3bd12c32cb15a907f12de3c9d264843f0bb33dce400e3966c9f09a3f"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:42fc546c31e4a04c97b749769335a679c9044dc693fa7a93e38c97fd6727173d"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6a383a403d185185c64e49edd6a19b2ec973c5adcb8ebff7ed2fc539a2cc65a5"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f05321a97e816afc75b3e4f9eda989848fecf14ecf1a91d0f22c04258123d1f7"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:be47e793846aac28442b6b1c6554e0731b848a5a7759a54aa2489997354efe4a"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:780e42a215d1ae2f6d695d74dd6f087781fb2fa51c508b58f79e68c24c5364e0"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:9e28f1fe850675e173db586e9f1ac790e8f7edd507a4227cd54cd7445f8e75b6"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:125aae7f1308d3083dadbb3c78f828ae492e060f13e4007a0cf53a8169ed7b39"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:2f3c4fbb61e75c62a1ab93a1070d362de4cb5682f82833b2c12deccb3bae888d"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0dc03196a84e32d23b88b665be69afae98f57426f5fdf203e16715b756757961"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp310-cp310-win32.whl", hash = "sha256:25695d78a1d7ad6e221e800612eac08559f6182bf6dee0a220d08de7b612d993"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp310-cp310-win_amd64.whl", hash = "sha256:367acac95398d721a0a2a6cf87e93638c5588b79498a9848676ce7f182540a6c"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5a7353a7a08eee3aa0001d8a5d771cb1f37e2acae1b48178002431f23892121a"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6af1c6cbc3481205503ab72a34aa76d6519249c904aa3f7a84b31e7b435555be"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48033803abd1100bfff6b9a1769d831b672cd3cda5147e0323b956fd1416d38d"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f202a58a540c85e47c31dabc8f84b6fe79dca5315c866450a538d58d6fa0571"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e4df50fd84bfa4aa1eb7b52d48136066bfb64fabb7ceb62d4c318b45a296200b"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:433a650571a0d7766eb6f402e8f5930222997686c2ee01ded22f1d8fd46af9d4"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:232ee260475611cbf7adb554b81db6b5790b36e634fe2164f4ffcd2ca3e63a71"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:09049f7e71f15c9c9a03f597f77fc1f7b61ababd155c06c0d9e64d1453d945d7"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:424153d1d5f5a807f596a48cc88119f9fb3213ca7e38f57b8d15dcc964dd91f7"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:4f078fd1cf19c4ca63b8d1e0803df665310c8d5b644c5b02bf2465e8d6ef8f55"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:f138d939e26e767537f891170b69a55a88038919f5c10d8865b67b8777fe4848"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9aafabc7e32942f85dcb46f007f447ab69024831575df97cae28c6ed127654d1"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp311-cp311-win32.whl", hash = "sha256:935e16ebf1a1998d8493979d858821a755503c9b8af572d9c450173d4b88868c"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp311-cp311-win_amd64.whl", hash = "sha256:306b3102cba278b5dfec6f5f7dc8b78416c403901510475c74913345b56c9e42"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fcb2fd00e58650ae206a6d5dbc83117240e622471aa5124733fbf2805eb8bda0"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b7a3e6b0a1eb218e3d870a94c76daaf65da46dca8f6888ea6542f94905c24d88"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a8d8e2888a857d8db3d98765a5ad23ab561241feaef68bbffc5a0bd9c142342"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:85d50c011467f5ff6772c4059345968b854b72e07a0219030b7c3f68419eb7f7"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:93b395c1370629ccce8fb3e14cd5be2646d227bd32018c21f753c543e9a7e96b"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6dbcee870c60d9835e5dce1456ab6b9d807e6669246357f4b321ef747b90fa43"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fffa5a5f317b1ec92e406a30a008929054cf3164d2324a3c465d0a0330273bf8"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:476702740a279744badbd177ae1c4a2d089ec128bd676861219d1f92078e4530"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:5cd6d95fab5ff80e9dc9baedc9a926f62f74072d42d5804388d63b63bec0bb63"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:05027d32d7cf3e46cb8d04f8c984745ae01bd1bc7b3579f9dadf9b3cca735697"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:3d11831842250b4c1b26503a6e9c511fc03db096608b7c6af743818c421a3032"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:81b4b671b785ebb0b8aeabf2432e47072413d81db959eb8cfd8b6ab58c5799c6"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp312-cp312-win32.whl", hash = "sha256:e893bd4e014877174a59e032b0e99809c95ec61328a0e6bd9352c74a2f6111a8"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp312-cp312-win_amd64.whl", hash = "sha256:de6624e28eeffd01668803d28ae89e3d4e359b1bff8b60e4933e1cb3c6f86f18"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:909205324089a9ee59bee7ecbfa94595435118cca310fd62efdf13f225aa2965"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03f31d6e47dc2b0f367f598f5629147ed056d7216c1788e25190fcfbfa02e749"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ed84179914b2b7bb434c2322a6e7fd83daa681c97a050450511b66d917a129bb"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:67d1bf63efb4ba14ae6c6da99622e4a549e68fc3ee14d859bf611d8e6a61b3fa"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eed23ea41dd582d76f7a2ec7e09cbe5e9fec008f11a4799fa35ce44a3ebd283"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a654291132766efa2703058317749d7c69b69f02d89bac75703eaf7f775e20da"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1c26c5ef16d0ef3cabc5bc03e827e01b0a4afb5b4eaf8850b7cf740cee04a1d4"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b57e83d7986d3cbda6096974a9510eb53cb33ad9072288c87c820ba5eee3370e"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:153cc03b36f22cbde55aa6a5bbe99072a025567a54c48b262eb0da15d8cd7c83"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:83a857d99192936091f495826ae97497cd1873af213b1e069d56369fb182ab8e"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:bb05a9bb22cbe9ad187ad268f86adf7e60df6083331fe59c01571b7b725212dd"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp37-cp37m-win32.whl", hash = "sha256:3e282c5c25e32d96ed151e5460d2bf4ecb805ea64449197dd918e84e768016df"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp37-cp37m-win_amd64.whl", hash = "sha256:c46dccfb04a9afd61a1b0e60bfefceff917f76da2c863f9b36b39248496d5c77"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:612ca9028c718f362c97f552e63d313cf1a70a616ef8532ddb0effdaf12ebef9"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:471b884d318e012f68d858476052742048918854f7dfe87d78e819f87a848ffb"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58ee63c35e99da887eb035c8d6d9e64fd298a0efc1460395297dd5cc281a6912"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0819bb63d2c5025a1fb9589f57ef82602687cef11081d6dfa6f2ce44606a1772"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f6680ee18870bca1fbab1736c8203a965efaec119ab4c37821ad99add248ee08"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:713c498741b54debd3a10a5529e70b6ed85ca33c3e8629e24ae5cd8160b5a5f2"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:730837b8f63941065c9c955c44286aef0987fb084ffb3f55bf1e4fe07df62269"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9f4e38b2ea09214c8e7848a19391009a18c56a3640e1ba1a606b9e57aeb63404"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:457f1d6639e0345b717ae603c79bd087a35361ce68c1c308d154b80b841e5e7d"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:49a55aeb8ea625a87965a96e361bbb1ad67d0931bfb2a575f899c1064e70c2da"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:9230058d8c9b1a04079afae4650fb67745f0f1c39db335728f64d48bd2c19246"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8798258bd556542dd9c6b8ebe62f9c5110c9dcdf97c57fb077e7b8b6d6da0826"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp38-cp38-win32.whl", hash = "sha256:ce8e3f4be46bcc63555863f70ab0035202b082b37e6f16876ef50e7bc4b47056"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp38-cp38-win_amd64.whl", hash = "sha256:2d982959ff628255808d895a67493f2dab0c3a9bfc65eeda0f00c8ae9962a1b3"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a46b227fab4420566ed24ee70d90076226d16fcf09c6ad4d428717efcf536446"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7eaa2ce5ea08cf5fddebb8c274c450e102f329f9e6966b6cd85aa671c48e5552"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f97f0083194d6e23b5ef6156ed0d5388c37847b298118199d7937ba26412a9e2"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a6cab5cdbb0f8ee51d879d977b78f07068b585225ac656f3c081896c362e8f83"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cdb1b011a53ee71539e9dc655f268b111bac484db300da92829ed59e910a8fd0"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7bf51bb761b281d20910b4b689c699ef98027845467daa5bb5dfdb53bd6ee404"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b8ea462e3cebb121ff55002e9c8a9a0a3fd9b5bbbf688b4960f0a83c0172fb31"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:70bee21c245226ad0d637bf470472e2d487b86911b6d673a862127b934336ff4"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:253a3c223b944d691bf0abbd599f592ea3b36f0a71d2526833b1718f37eca5c2"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:a6549b53fc5c403dc556cb39b2ae94d73f9b113daa00438a660bb1dd5380ae4d"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:1c685cd4abe61af1c26279ff04b9f567eb4d6c1ec7fb265af7481b1f153043aa"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7e25144219577491929d032a6c3ddd63c6cd7fa764af829a5637f798190d9b26"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp39-cp39-win32.whl", hash = "sha256:0b9925610d25405a8e6d83ff4f54fc2456a121adb0155999972f5edd6ba3efc8"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-cp39-cp39-win_amd64.whl", hash = "sha256:b243de483cfa02716053b0148d73558f4694f3c27b97fc1eaa97d7079563a14d"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:45a3d5b1d06750fd6a18c29b871494a2635670099ec7693e756a5885a4a70dbf"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8415ffebd6ca9eef3024763abc450f8659f1716d015bd563c537d01c7fbc3569"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ace48db993aa4bd31c42de0fa8d38c94ad47405916d6b61f7a7168a48fb52ac1"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b07123334fe143bfe6fa4e3d4b732d647d5fd2cfb9ec7f2f76104b46fe9d20c6"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e2af3efa73d296420ce6362789f5b1febf75d4aa159a479393f01549115509d5"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:baf57eede88d07a1eb04352d26fc58a4d97991ca3d8840f7c5d48691dec9f251"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:275d0ccdab9c3571bdb3e9acfab4497930aa584ff2766b035bb2f854deaf8b82"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:293da77bfcac3168fb35b27c242f97c1a05502435c0686ecbb8e2e4abcb3de26"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8d6c2e5830705e4eeef33070ca4d5a24dfa221f28f2f540e5e6842c26e70b10b"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:11934bd78d97dd7e1a23a6222b5edd1e1b4d34e1ead5c846dc2b5c56fdc35ff5"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b802b6f0fbdcc3ab81b87f09b694dde91ab049f44d1d2c08c3dc8ea9a5950cfa"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7af871c5315eb829ecf4533c790461ea8f73b3bfd5f533b0467e479fdf6ddcfd"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d577dd4867b9e26cf60590e1f500990c8701a6e3cfbb9e644f4d0c0fb607028"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2ed3dea2d1eca85fef5b8564ddd76dedb15a610c77d55d555b49d9f7c896b64b"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:91ec96f2c48e5bdeac9eea43a9bc9cc19acb2d2c59df0a13d5520dfc32457605"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:7667ab423452754f36ba8fb41e006a46baace9c94e2aca2a745689b9f2753dfb"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:653583b1f3b088d106f180d6f02c90917ecd669ec956b62903a05df4a7f44863"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ef3dd0cbdf2f0171caab90389af0ede068ec802bf46c6a77f14e6edc86671bc"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11b1833ee8ff8d5df39a34a895e060b57bd81e05ea68822bc60476daff4ce1c8"},
|
|
||||||
{file = "clickhouse_driver-0.2.9-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:8a3195639e6393b9d4aafe736036881ff86b6be5855d4bf7d9f5c31637181ec3"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.dependencies]
|
|
||||||
pytz = "*"
|
|
||||||
tzlocal = "*"
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
lz4 = ["clickhouse-cityhash (>=1.0.2.1)", "lz4 (<=3.0.1) ; implementation_name == \"pypy\"", "lz4 ; implementation_name != \"pypy\""]
|
|
||||||
numpy = ["numpy (>=1.12.0)", "pandas (>=0.24.0)"]
|
|
||||||
zstd = ["clickhouse-cityhash (>=1.0.2.1)", "zstd"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "colorama"
|
|
||||||
version = "0.4.6"
|
|
||||||
description = "Cross-platform colored terminal text."
|
|
||||||
optional = false
|
|
||||||
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
|
|
||||||
groups = ["main", "dev"]
|
|
||||||
files = [
|
|
||||||
{file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
|
|
||||||
{file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
|
|
||||||
]
|
|
||||||
markers = {main = "sys_platform == \"win32\" or platform_system == \"Windows\"", dev = "sys_platform == \"win32\""}
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "dill"
|
|
||||||
version = "0.3.9"
|
|
||||||
description = "serialize all of Python"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.8"
|
|
||||||
groups = ["dev"]
|
|
||||||
files = [
|
|
||||||
{file = "dill-0.3.9-py3-none-any.whl", hash = "sha256:468dff3b89520b474c0397703366b7b95eebe6303f108adf9b19da1f702be87a"},
|
|
||||||
{file = "dill-0.3.9.tar.gz", hash = "sha256:81aa267dddf68cbfe8029c42ca9ec6a4ab3b22371d1c450abc54422577b4512c"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
graph = ["objgraph (>=1.7.2)"]
|
|
||||||
profile = ["gprof2dot (>=2022.7.29)"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "docker"
|
|
||||||
version = "7.1.0"
|
|
||||||
description = "A Python library for the Docker Engine API."
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.8"
|
|
||||||
groups = ["main"]
|
|
||||||
files = [
|
|
||||||
{file = "docker-7.1.0-py3-none-any.whl", hash = "sha256:c96b93b7f0a746f9e77d325bcfb87422a3d8bd4f03136ae8a85b37f1898d5fc0"},
|
|
||||||
{file = "docker-7.1.0.tar.gz", hash = "sha256:ad8c70e6e3f8926cb8a92619b832b4ea5299e2831c14284663184e200546fa6c"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.dependencies]
|
|
||||||
pywin32 = {version = ">=304", markers = "sys_platform == \"win32\""}
|
|
||||||
requests = ">=2.26.0"
|
|
||||||
urllib3 = ">=1.26.0"
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
dev = ["coverage (==7.2.7)", "pytest (==7.4.2)", "pytest-cov (==4.1.0)", "pytest-timeout (==2.1.0)", "ruff (==0.1.8)"]
|
|
||||||
docs = ["myst-parser (==0.18.0)", "sphinx (==5.1.1)"]
|
|
||||||
ssh = ["paramiko (>=2.4.3)"]
|
|
||||||
websockets = ["websocket-client (>=1.3.0)"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "idna"
|
|
||||||
version = "3.10"
|
|
||||||
description = "Internationalized Domain Names in Applications (IDNA)"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.6"
|
|
||||||
groups = ["main"]
|
|
||||||
files = [
|
|
||||||
{file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"},
|
|
||||||
{file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "importlib-resources"
|
|
||||||
version = "5.13.0"
|
|
||||||
description = "Read resources from Python packages"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.8"
|
|
||||||
groups = ["main"]
|
|
||||||
files = [
|
|
||||||
{file = "importlib_resources-5.13.0-py3-none-any.whl", hash = "sha256:9f7bd0c97b79972a6cce36a366356d16d5e13b09679c11a58f1014bfdf8e64b2"},
|
|
||||||
{file = "importlib_resources-5.13.0.tar.gz", hash = "sha256:82d5c6cca930697dbbd86c93333bb2c2e72861d4789a11c2662b933e5ad2b528"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
|
|
||||||
testing = ["pytest (>=6)", "pytest-black (>=0.3.7) ; platform_python_implementation != \"PyPy\"", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1) ; platform_python_implementation != \"PyPy\"", "pytest-ruff"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "iniconfig"
|
|
||||||
version = "2.1.0"
|
|
||||||
description = "brain-dead simple config-ini parsing"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.8"
|
|
||||||
groups = ["main"]
|
|
||||||
files = [
|
|
||||||
{file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760"},
|
|
||||||
{file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "isort"
|
|
||||||
version = "6.0.1"
|
|
||||||
description = "A Python utility / library to sort Python imports."
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.9.0"
|
|
||||||
groups = ["dev"]
|
|
||||||
files = [
|
|
||||||
{file = "isort-6.0.1-py3-none-any.whl", hash = "sha256:2dc5d7f65c9678d94c88dfc29161a320eec67328bc97aad576874cb4be1e9615"},
|
|
||||||
{file = "isort-6.0.1.tar.gz", hash = "sha256:1cb5df28dfbc742e490c5e41bad6da41b805b0a8be7bc93cd0fb2a8a890ac450"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
colors = ["colorama"]
|
|
||||||
plugins = ["setuptools"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "mccabe"
|
|
||||||
version = "0.7.0"
|
|
||||||
description = "McCabe checker, plugin for flake8"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.6"
|
|
||||||
groups = ["dev"]
|
|
||||||
files = [
|
|
||||||
{file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"},
|
|
||||||
{file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "mypy-extensions"
|
|
||||||
version = "1.0.0"
|
|
||||||
description = "Type system extensions for programs checked with the mypy type checker."
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.5"
|
|
||||||
groups = ["main"]
|
|
||||||
files = [
|
|
||||||
{file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"},
|
|
||||||
{file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "packaging"
|
|
||||||
version = "24.2"
|
|
||||||
description = "Core utilities for Python packages"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.8"
|
|
||||||
groups = ["main"]
|
|
||||||
files = [
|
|
||||||
{file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"},
|
|
||||||
{file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "pathspec"
|
|
||||||
version = "0.12.1"
|
|
||||||
description = "Utility library for gitignore style pattern matching of file paths."
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.8"
|
|
||||||
groups = ["main"]
|
|
||||||
files = [
|
|
||||||
{file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"},
|
|
||||||
{file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "platformdirs"
|
|
||||||
version = "4.3.7"
|
|
||||||
description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`."
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.9"
|
|
||||||
groups = ["main", "dev"]
|
|
||||||
files = [
|
|
||||||
{file = "platformdirs-4.3.7-py3-none-any.whl", hash = "sha256:a03875334331946f13c549dbd8f4bac7a13a50a895a0eb1e8c6a8ace80d40a94"},
|
|
||||||
{file = "platformdirs-4.3.7.tar.gz", hash = "sha256:eb437d586b6a0986388f0d6f74aa0cde27b48d0e3d66843640bfb6bdcdb6e351"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"]
|
|
||||||
test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.4)", "pytest-cov (>=6)", "pytest-mock (>=3.14)"]
|
|
||||||
type = ["mypy (>=1.14.1)"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "pluggy"
|
|
||||||
version = "1.5.0"
|
|
||||||
description = "plugin and hook calling mechanisms for python"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.8"
|
|
||||||
groups = ["main"]
|
|
||||||
files = [
|
|
||||||
{file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"},
|
|
||||||
{file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
dev = ["pre-commit", "tox"]
|
|
||||||
testing = ["pytest", "pytest-benchmark"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "psycopg2"
|
|
||||||
version = "2.9.10"
|
|
||||||
description = "psycopg2 - Python-PostgreSQL Database Adapter"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.8"
|
|
||||||
groups = ["main"]
|
|
||||||
files = [
|
|
||||||
{file = "psycopg2-2.9.10-cp310-cp310-win32.whl", hash = "sha256:5df2b672140f95adb453af93a7d669d7a7bf0a56bcd26f1502329166f4a61716"},
|
|
||||||
{file = "psycopg2-2.9.10-cp310-cp310-win_amd64.whl", hash = "sha256:c6f7b8561225f9e711a9c47087388a97fdc948211c10a4bccbf0ba68ab7b3b5a"},
|
|
||||||
{file = "psycopg2-2.9.10-cp311-cp311-win32.whl", hash = "sha256:47c4f9875125344f4c2b870e41b6aad585901318068acd01de93f3677a6522c2"},
|
|
||||||
{file = "psycopg2-2.9.10-cp311-cp311-win_amd64.whl", hash = "sha256:0435034157049f6846e95103bd8f5a668788dd913a7c30162ca9503fdf542cb4"},
|
|
||||||
{file = "psycopg2-2.9.10-cp312-cp312-win32.whl", hash = "sha256:65a63d7ab0e067e2cdb3cf266de39663203d38d6a8ed97f5ca0cb315c73fe067"},
|
|
||||||
{file = "psycopg2-2.9.10-cp312-cp312-win_amd64.whl", hash = "sha256:4a579d6243da40a7b3182e0430493dbd55950c493d8c68f4eec0b302f6bbf20e"},
|
|
||||||
{file = "psycopg2-2.9.10-cp313-cp313-win_amd64.whl", hash = "sha256:91fd603a2155da8d0cfcdbf8ab24a2d54bca72795b90d2a3ed2b6da8d979dee2"},
|
|
||||||
{file = "psycopg2-2.9.10-cp39-cp39-win32.whl", hash = "sha256:9d5b3b94b79a844a986d029eee38998232451119ad653aea42bb9220a8c5066b"},
|
|
||||||
{file = "psycopg2-2.9.10-cp39-cp39-win_amd64.whl", hash = "sha256:88138c8dedcbfa96408023ea2b0c369eda40fe5d75002c0964c78f46f11fa442"},
|
|
||||||
{file = "psycopg2-2.9.10.tar.gz", hash = "sha256:12ec0b40b0273f95296233e8750441339298e6a572f7039da5b260e3c8b60e11"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "pyflakes"
|
|
||||||
version = "3.3.2"
|
|
||||||
description = "passive checker of Python programs"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.9"
|
|
||||||
groups = ["dev"]
|
|
||||||
files = [
|
|
||||||
{file = "pyflakes-3.3.2-py2.py3-none-any.whl", hash = "sha256:5039c8339cbb1944045f4ee5466908906180f13cc99cc9949348d10f82a5c32a"},
|
|
||||||
{file = "pyflakes-3.3.2.tar.gz", hash = "sha256:6dfd61d87b97fba5dcfaaf781171ac16be16453be6d816147989e7f6e6a9576b"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "pylint"
|
|
||||||
version = "3.3.6"
|
|
||||||
description = "python code static checker"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.9.0"
|
|
||||||
groups = ["dev"]
|
|
||||||
files = [
|
|
||||||
{file = "pylint-3.3.6-py3-none-any.whl", hash = "sha256:8b7c2d3e86ae3f94fb27703d521dd0b9b6b378775991f504d7c3a6275aa0a6a6"},
|
|
||||||
{file = "pylint-3.3.6.tar.gz", hash = "sha256:b634a041aac33706d56a0d217e6587228c66427e20ec21a019bc4cdee48c040a"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.dependencies]
|
|
||||||
astroid = ">=3.3.8,<=3.4.0.dev0"
|
|
||||||
colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""}
|
|
||||||
dill = {version = ">=0.3.7", markers = "python_version >= \"3.12\""}
|
|
||||||
isort = ">=4.2.5,<5.13 || >5.13,<7"
|
|
||||||
mccabe = ">=0.6,<0.8"
|
|
||||||
platformdirs = ">=2.2"
|
|
||||||
tomlkit = ">=0.10.1"
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
spelling = ["pyenchant (>=3.2,<4.0)"]
|
|
||||||
testutils = ["gitpython (>3)"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "pytest"
|
|
||||||
version = "8.3.5"
|
|
||||||
description = "pytest: simple powerful testing with Python"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.8"
|
|
||||||
groups = ["main"]
|
|
||||||
files = [
|
|
||||||
{file = "pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820"},
|
|
||||||
{file = "pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.dependencies]
|
|
||||||
colorama = {version = "*", markers = "sys_platform == \"win32\""}
|
|
||||||
iniconfig = "*"
|
|
||||||
packaging = "*"
|
|
||||||
pluggy = ">=1.5,<2"
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "python-dotenv"
|
|
||||||
version = "1.1.0"
|
|
||||||
description = "Read key-value pairs from a .env file and set them as environment variables"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.9"
|
|
||||||
groups = ["main"]
|
|
||||||
files = [
|
|
||||||
{file = "python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d"},
|
|
||||||
{file = "python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
cli = ["click (>=5.0)"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "pytz"
|
|
||||||
version = "2025.2"
|
|
||||||
description = "World timezone definitions, modern and historical"
|
|
||||||
optional = false
|
|
||||||
python-versions = "*"
|
|
||||||
groups = ["main"]
|
|
||||||
files = [
|
|
||||||
{file = "pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00"},
|
|
||||||
{file = "pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "pywin32"
|
|
||||||
version = "310"
|
|
||||||
description = "Python for Window Extensions"
|
|
||||||
optional = false
|
|
||||||
python-versions = "*"
|
|
||||||
groups = ["main"]
|
|
||||||
markers = "sys_platform == \"win32\""
|
|
||||||
files = [
|
|
||||||
{file = "pywin32-310-cp310-cp310-win32.whl", hash = "sha256:6dd97011efc8bf51d6793a82292419eba2c71cf8e7250cfac03bba284454abc1"},
|
|
||||||
{file = "pywin32-310-cp310-cp310-win_amd64.whl", hash = "sha256:c3e78706e4229b915a0821941a84e7ef420bf2b77e08c9dae3c76fd03fd2ae3d"},
|
|
||||||
{file = "pywin32-310-cp310-cp310-win_arm64.whl", hash = "sha256:33babed0cf0c92a6f94cc6cc13546ab24ee13e3e800e61ed87609ab91e4c8213"},
|
|
||||||
{file = "pywin32-310-cp311-cp311-win32.whl", hash = "sha256:1e765f9564e83011a63321bb9d27ec456a0ed90d3732c4b2e312b855365ed8bd"},
|
|
||||||
{file = "pywin32-310-cp311-cp311-win_amd64.whl", hash = "sha256:126298077a9d7c95c53823934f000599f66ec9296b09167810eb24875f32689c"},
|
|
||||||
{file = "pywin32-310-cp311-cp311-win_arm64.whl", hash = "sha256:19ec5fc9b1d51c4350be7bb00760ffce46e6c95eaf2f0b2f1150657b1a43c582"},
|
|
||||||
{file = "pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d"},
|
|
||||||
{file = "pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060"},
|
|
||||||
{file = "pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966"},
|
|
||||||
{file = "pywin32-310-cp313-cp313-win32.whl", hash = "sha256:5d241a659c496ada3253cd01cfaa779b048e90ce4b2b38cd44168ad555ce74ab"},
|
|
||||||
{file = "pywin32-310-cp313-cp313-win_amd64.whl", hash = "sha256:667827eb3a90208ddbdcc9e860c81bde63a135710e21e4cb3348968e4bd5249e"},
|
|
||||||
{file = "pywin32-310-cp313-cp313-win_arm64.whl", hash = "sha256:e308f831de771482b7cf692a1f308f8fca701b2d8f9dde6cc440c7da17e47b33"},
|
|
||||||
{file = "pywin32-310-cp38-cp38-win32.whl", hash = "sha256:0867beb8addefa2e3979d4084352e4ac6e991ca45373390775f7084cc0209b9c"},
|
|
||||||
{file = "pywin32-310-cp38-cp38-win_amd64.whl", hash = "sha256:30f0a9b3138fb5e07eb4973b7077e1883f558e40c578c6925acc7a94c34eaa36"},
|
|
||||||
{file = "pywin32-310-cp39-cp39-win32.whl", hash = "sha256:851c8d927af0d879221e616ae1f66145253537bbdd321a77e8ef701b443a9a1a"},
|
|
||||||
{file = "pywin32-310-cp39-cp39-win_amd64.whl", hash = "sha256:96867217335559ac619f00ad70e513c0fcf84b8a3af9fc2bba3b59b97da70475"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "requests"
|
|
||||||
version = "2.32.3"
|
|
||||||
description = "Python HTTP for Humans."
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.8"
|
|
||||||
groups = ["main"]
|
|
||||||
files = [
|
|
||||||
{file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"},
|
|
||||||
{file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.dependencies]
|
|
||||||
certifi = ">=2017.4.17"
|
|
||||||
charset-normalizer = ">=2,<4"
|
|
||||||
idna = ">=2.5,<4"
|
|
||||||
urllib3 = ">=1.21.1,<3"
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
socks = ["PySocks (>=1.5.6,!=1.5.7)"]
|
|
||||||
use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "testcontainers"
|
|
||||||
version = "4.10.0"
|
|
||||||
description = "Python library for throwaway instances of anything that can run in a Docker container"
|
|
||||||
optional = false
|
|
||||||
python-versions = "<4.0,>=3.9"
|
|
||||||
groups = ["main"]
|
|
||||||
files = [
|
|
||||||
{file = "testcontainers-4.10.0-py3-none-any.whl", hash = "sha256:31ed1a81238c7e131a2a29df6db8f23717d892b592fa5a1977fd0dcd0c23fc23"},
|
|
||||||
{file = "testcontainers-4.10.0.tar.gz", hash = "sha256:03f85c3e505d8b4edeb192c72a961cebbcba0dd94344ae778b4a159cb6dcf8d3"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.dependencies]
|
|
||||||
docker = "*"
|
|
||||||
python-dotenv = "*"
|
|
||||||
typing-extensions = "*"
|
|
||||||
urllib3 = "*"
|
|
||||||
wrapt = "*"
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
arangodb = ["python-arango (>=7.8,<8.0)"]
|
|
||||||
aws = ["boto3", "httpx"]
|
|
||||||
azurite = ["azure-storage-blob (>=12.19,<13.0)"]
|
|
||||||
chroma = ["chromadb-client"]
|
|
||||||
clickhouse = ["clickhouse-driver"]
|
|
||||||
cosmosdb = ["azure-cosmos"]
|
|
||||||
db2 = ["ibm_db_sa", "sqlalchemy"]
|
|
||||||
generic = ["httpx", "redis"]
|
|
||||||
google = ["google-cloud-datastore (>=2)", "google-cloud-pubsub (>=2)"]
|
|
||||||
influxdb = ["influxdb", "influxdb-client"]
|
|
||||||
k3s = ["kubernetes", "pyyaml"]
|
|
||||||
keycloak = ["python-keycloak"]
|
|
||||||
localstack = ["boto3"]
|
|
||||||
mailpit = ["cryptography"]
|
|
||||||
minio = ["minio"]
|
|
||||||
mongodb = ["pymongo"]
|
|
||||||
mssql = ["pymssql", "sqlalchemy"]
|
|
||||||
mysql = ["pymysql[rsa]", "sqlalchemy"]
|
|
||||||
nats = ["nats-py"]
|
|
||||||
neo4j = ["neo4j"]
|
|
||||||
opensearch = ["opensearch-py"]
|
|
||||||
oracle = ["oracledb", "sqlalchemy"]
|
|
||||||
oracle-free = ["oracledb", "sqlalchemy"]
|
|
||||||
qdrant = ["qdrant-client"]
|
|
||||||
rabbitmq = ["pika"]
|
|
||||||
redis = ["redis"]
|
|
||||||
registry = ["bcrypt"]
|
|
||||||
scylla = ["cassandra-driver (==3.29.1)"]
|
|
||||||
selenium = ["selenium"]
|
|
||||||
sftp = ["cryptography"]
|
|
||||||
test-module-import = ["httpx"]
|
|
||||||
trino = ["trino"]
|
|
||||||
weaviate = ["weaviate-client (>=4.5.4,<5.0.0)"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "tomlkit"
|
|
||||||
version = "0.13.2"
|
|
||||||
description = "Style preserving TOML library"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.8"
|
|
||||||
groups = ["dev"]
|
|
||||||
files = [
|
|
||||||
{file = "tomlkit-0.13.2-py3-none-any.whl", hash = "sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde"},
|
|
||||||
{file = "tomlkit-0.13.2.tar.gz", hash = "sha256:fff5fe59a87295b278abd31bec92c15d9bc4a06885ab12bcea52c71119392e79"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "typing-extensions"
|
|
||||||
version = "4.13.2"
|
|
||||||
description = "Backported and Experimental Type Hints for Python 3.8+"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.8"
|
|
||||||
groups = ["main"]
|
|
||||||
files = [
|
|
||||||
{file = "typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c"},
|
|
||||||
{file = "typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "tzdata"
|
|
||||||
version = "2025.2"
|
|
||||||
description = "Provider of IANA time zone data"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=2"
|
|
||||||
groups = ["main"]
|
|
||||||
markers = "platform_system == \"Windows\""
|
|
||||||
files = [
|
|
||||||
{file = "tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8"},
|
|
||||||
{file = "tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "tzlocal"
|
|
||||||
version = "5.3.1"
|
|
||||||
description = "tzinfo object for the local timezone"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.9"
|
|
||||||
groups = ["main"]
|
|
||||||
files = [
|
|
||||||
{file = "tzlocal-5.3.1-py3-none-any.whl", hash = "sha256:eb1a66c3ef5847adf7a834f1be0800581b683b5608e74f86ecbcef8ab91bb85d"},
|
|
||||||
{file = "tzlocal-5.3.1.tar.gz", hash = "sha256:cceffc7edecefea1f595541dbd6e990cb1ea3d19bf01b2809f362a03dd7921fd"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.dependencies]
|
|
||||||
tzdata = {version = "*", markers = "platform_system == \"Windows\""}
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
devenv = ["check-manifest", "pytest (>=4.3)", "pytest-cov", "pytest-mock (>=3.3)", "zest.releaser"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "urllib3"
|
|
||||||
version = "2.4.0"
|
|
||||||
description = "HTTP library with thread-safe connection pooling, file post, and more."
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.9"
|
|
||||||
groups = ["main"]
|
|
||||||
files = [
|
|
||||||
{file = "urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813"},
|
|
||||||
{file = "urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""]
|
|
||||||
h2 = ["h2 (>=4,<5)"]
|
|
||||||
socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
|
|
||||||
zstd = ["zstandard (>=0.18.0)"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "wiremock"
|
|
||||||
version = "2.6.1"
|
|
||||||
description = "Wiremock Admin API Client"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.7,<4.0"
|
|
||||||
groups = ["main"]
|
|
||||||
files = [
|
|
||||||
{file = "wiremock-2.6.1-py3-none-any.whl", hash = "sha256:417a803b0bba3ab6240410aedb4de15a32581fb29b1310b05289b4aa1a7c9ffd"},
|
|
||||||
{file = "wiremock-2.6.1.tar.gz", hash = "sha256:89b64d763a68a1808274aa4daf802f7ce3f9bff2a18ac6bf8923c997a21d67c1"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.dependencies]
|
|
||||||
importlib-resources = ">=5.12.0,<6.0.0"
|
|
||||||
requests = ">=2.20.0,<3.0.0"
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
testing = ["docker (>=6.1.0,<7.0.0)", "testcontainers (>=3.7.1,<4.0.0)"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "wrapt"
|
|
||||||
version = "1.17.2"
|
|
||||||
description = "Module for decorators, wrappers and monkey patching."
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.8"
|
|
||||||
groups = ["main"]
|
|
||||||
files = [
|
|
||||||
{file = "wrapt-1.17.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3d57c572081fed831ad2d26fd430d565b76aa277ed1d30ff4d40670b1c0dd984"},
|
|
||||||
{file = "wrapt-1.17.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5e251054542ae57ac7f3fba5d10bfff615b6c2fb09abeb37d2f1463f841ae22"},
|
|
||||||
{file = "wrapt-1.17.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:80dd7db6a7cb57ffbc279c4394246414ec99537ae81ffd702443335a61dbf3a7"},
|
|
||||||
{file = "wrapt-1.17.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a6e821770cf99cc586d33833b2ff32faebdbe886bd6322395606cf55153246c"},
|
|
||||||
{file = "wrapt-1.17.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b60fb58b90c6d63779cb0c0c54eeb38941bae3ecf7a73c764c52c88c2dcb9d72"},
|
|
||||||
{file = "wrapt-1.17.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b870b5df5b71d8c3359d21be8f0d6c485fa0ebdb6477dda51a1ea54a9b558061"},
|
|
||||||
{file = "wrapt-1.17.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4011d137b9955791f9084749cba9a367c68d50ab8d11d64c50ba1688c9b457f2"},
|
|
||||||
{file = "wrapt-1.17.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:1473400e5b2733e58b396a04eb7f35f541e1fb976d0c0724d0223dd607e0f74c"},
|
|
||||||
{file = "wrapt-1.17.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3cedbfa9c940fdad3e6e941db7138e26ce8aad38ab5fe9dcfadfed9db7a54e62"},
|
|
||||||
{file = "wrapt-1.17.2-cp310-cp310-win32.whl", hash = "sha256:582530701bff1dec6779efa00c516496968edd851fba224fbd86e46cc6b73563"},
|
|
||||||
{file = "wrapt-1.17.2-cp310-cp310-win_amd64.whl", hash = "sha256:58705da316756681ad3c9c73fd15499aa4d8c69f9fd38dc8a35e06c12468582f"},
|
|
||||||
{file = "wrapt-1.17.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ff04ef6eec3eee8a5efef2401495967a916feaa353643defcc03fc74fe213b58"},
|
|
||||||
{file = "wrapt-1.17.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db983e7bca53819efdbd64590ee96c9213894272c776966ca6306b73e4affda"},
|
|
||||||
{file = "wrapt-1.17.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9abc77a4ce4c6f2a3168ff34b1da9b0f311a8f1cfd694ec96b0603dff1c79438"},
|
|
||||||
{file = "wrapt-1.17.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b929ac182f5ace000d459c59c2c9c33047e20e935f8e39371fa6e3b85d56f4a"},
|
|
||||||
{file = "wrapt-1.17.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f09b286faeff3c750a879d336fb6d8713206fc97af3adc14def0cdd349df6000"},
|
|
||||||
{file = "wrapt-1.17.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7ed2d9d039bd41e889f6fb9364554052ca21ce823580f6a07c4ec245c1f5d6"},
|
|
||||||
{file = "wrapt-1.17.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:129a150f5c445165ff941fc02ee27df65940fcb8a22a61828b1853c98763a64b"},
|
|
||||||
{file = "wrapt-1.17.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1fb5699e4464afe5c7e65fa51d4f99e0b2eadcc176e4aa33600a3df7801d6662"},
|
|
||||||
{file = "wrapt-1.17.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9a2bce789a5ea90e51a02dfcc39e31b7f1e662bc3317979aa7e5538e3a034f72"},
|
|
||||||
{file = "wrapt-1.17.2-cp311-cp311-win32.whl", hash = "sha256:4afd5814270fdf6380616b321fd31435a462019d834f83c8611a0ce7484c7317"},
|
|
||||||
{file = "wrapt-1.17.2-cp311-cp311-win_amd64.whl", hash = "sha256:acc130bc0375999da18e3d19e5a86403667ac0c4042a094fefb7eec8ebac7cf3"},
|
|
||||||
{file = "wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925"},
|
|
||||||
{file = "wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392"},
|
|
||||||
{file = "wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40"},
|
|
||||||
{file = "wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d"},
|
|
||||||
{file = "wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b"},
|
|
||||||
{file = "wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98"},
|
|
||||||
{file = "wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82"},
|
|
||||||
{file = "wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae"},
|
|
||||||
{file = "wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9"},
|
|
||||||
{file = "wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9"},
|
|
||||||
{file = "wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991"},
|
|
||||||
{file = "wrapt-1.17.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6ed6ffac43aecfe6d86ec5b74b06a5be33d5bb9243d055141e8cabb12aa08125"},
|
|
||||||
{file = "wrapt-1.17.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:35621ae4c00e056adb0009f8e86e28eb4a41a4bfa8f9bfa9fca7d343fe94f998"},
|
|
||||||
{file = "wrapt-1.17.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a604bf7a053f8362d27eb9fefd2097f82600b856d5abe996d623babd067b1ab5"},
|
|
||||||
{file = "wrapt-1.17.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cbabee4f083b6b4cd282f5b817a867cf0b1028c54d445b7ec7cfe6505057cf8"},
|
|
||||||
{file = "wrapt-1.17.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49703ce2ddc220df165bd2962f8e03b84c89fee2d65e1c24a7defff6f988f4d6"},
|
|
||||||
{file = "wrapt-1.17.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8112e52c5822fc4253f3901b676c55ddf288614dc7011634e2719718eaa187dc"},
|
|
||||||
{file = "wrapt-1.17.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9fee687dce376205d9a494e9c121e27183b2a3df18037f89d69bd7b35bcf59e2"},
|
|
||||||
{file = "wrapt-1.17.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:18983c537e04d11cf027fbb60a1e8dfd5190e2b60cc27bc0808e653e7b218d1b"},
|
|
||||||
{file = "wrapt-1.17.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:703919b1633412ab54bcf920ab388735832fdcb9f9a00ae49387f0fe67dad504"},
|
|
||||||
{file = "wrapt-1.17.2-cp313-cp313-win32.whl", hash = "sha256:abbb9e76177c35d4e8568e58650aa6926040d6a9f6f03435b7a522bf1c487f9a"},
|
|
||||||
{file = "wrapt-1.17.2-cp313-cp313-win_amd64.whl", hash = "sha256:69606d7bb691b50a4240ce6b22ebb319c1cfb164e5f6569835058196e0f3a845"},
|
|
||||||
{file = "wrapt-1.17.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:4a721d3c943dae44f8e243b380cb645a709ba5bd35d3ad27bc2ed947e9c68192"},
|
|
||||||
{file = "wrapt-1.17.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:766d8bbefcb9e00c3ac3b000d9acc51f1b399513f44d77dfe0eb026ad7c9a19b"},
|
|
||||||
{file = "wrapt-1.17.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e496a8ce2c256da1eb98bd15803a79bee00fc351f5dfb9ea82594a3f058309e0"},
|
|
||||||
{file = "wrapt-1.17.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d615e4fe22f4ad3528448c193b218e077656ca9ccb22ce2cb20db730f8d306"},
|
|
||||||
{file = "wrapt-1.17.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a5aaeff38654462bc4b09023918b7f21790efb807f54c000a39d41d69cf552cb"},
|
|
||||||
{file = "wrapt-1.17.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7d15bbd2bc99e92e39f49a04653062ee6085c0e18b3b7512a4f2fe91f2d681"},
|
|
||||||
{file = "wrapt-1.17.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e3890b508a23299083e065f435a492b5435eba6e304a7114d2f919d400888cc6"},
|
|
||||||
{file = "wrapt-1.17.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8c8b293cd65ad716d13d8dd3624e42e5a19cc2a2f1acc74b30c2c13f15cb61a6"},
|
|
||||||
{file = "wrapt-1.17.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c82b8785d98cdd9fed4cac84d765d234ed3251bd6afe34cb7ac523cb93e8b4f"},
|
|
||||||
{file = "wrapt-1.17.2-cp313-cp313t-win32.whl", hash = "sha256:13e6afb7fe71fe7485a4550a8844cc9ffbe263c0f1a1eea569bc7091d4898555"},
|
|
||||||
{file = "wrapt-1.17.2-cp313-cp313t-win_amd64.whl", hash = "sha256:eaf675418ed6b3b31c7a989fd007fa7c3be66ce14e5c3b27336383604c9da85c"},
|
|
||||||
{file = "wrapt-1.17.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5c803c401ea1c1c18de70a06a6f79fcc9c5acfc79133e9869e730ad7f8ad8ef9"},
|
|
||||||
{file = "wrapt-1.17.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f917c1180fdb8623c2b75a99192f4025e412597c50b2ac870f156de8fb101119"},
|
|
||||||
{file = "wrapt-1.17.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ecc840861360ba9d176d413a5489b9a0aff6d6303d7e733e2c4623cfa26904a6"},
|
|
||||||
{file = "wrapt-1.17.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb87745b2e6dc56361bfde481d5a378dc314b252a98d7dd19a651a3fa58f24a9"},
|
|
||||||
{file = "wrapt-1.17.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58455b79ec2661c3600e65c0a716955adc2410f7383755d537584b0de41b1d8a"},
|
|
||||||
{file = "wrapt-1.17.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4e42a40a5e164cbfdb7b386c966a588b1047558a990981ace551ed7e12ca9c2"},
|
|
||||||
{file = "wrapt-1.17.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:91bd7d1773e64019f9288b7a5101f3ae50d3d8e6b1de7edee9c2ccc1d32f0c0a"},
|
|
||||||
{file = "wrapt-1.17.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:bb90fb8bda722a1b9d48ac1e6c38f923ea757b3baf8ebd0c82e09c5c1a0e7a04"},
|
|
||||||
{file = "wrapt-1.17.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:08e7ce672e35efa54c5024936e559469436f8b8096253404faeb54d2a878416f"},
|
|
||||||
{file = "wrapt-1.17.2-cp38-cp38-win32.whl", hash = "sha256:410a92fefd2e0e10d26210e1dfb4a876ddaf8439ef60d6434f21ef8d87efc5b7"},
|
|
||||||
{file = "wrapt-1.17.2-cp38-cp38-win_amd64.whl", hash = "sha256:95c658736ec15602da0ed73f312d410117723914a5c91a14ee4cdd72f1d790b3"},
|
|
||||||
{file = "wrapt-1.17.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:99039fa9e6306880572915728d7f6c24a86ec57b0a83f6b2491e1d8ab0235b9a"},
|
|
||||||
{file = "wrapt-1.17.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2696993ee1eebd20b8e4ee4356483c4cb696066ddc24bd70bcbb80fa56ff9061"},
|
|
||||||
{file = "wrapt-1.17.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:612dff5db80beef9e649c6d803a8d50c409082f1fedc9dbcdfde2983b2025b82"},
|
|
||||||
{file = "wrapt-1.17.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62c2caa1585c82b3f7a7ab56afef7b3602021d6da34fbc1cf234ff139fed3cd9"},
|
|
||||||
{file = "wrapt-1.17.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c958bcfd59bacc2d0249dcfe575e71da54f9dcf4a8bdf89c4cb9a68a1170d73f"},
|
|
||||||
{file = "wrapt-1.17.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc78a84e2dfbc27afe4b2bd7c80c8db9bca75cc5b85df52bfe634596a1da846b"},
|
|
||||||
{file = "wrapt-1.17.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ba0f0eb61ef00ea10e00eb53a9129501f52385c44853dbd6c4ad3f403603083f"},
|
|
||||||
{file = "wrapt-1.17.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1e1fe0e6ab7775fd842bc39e86f6dcfc4507ab0ffe206093e76d61cde37225c8"},
|
|
||||||
{file = "wrapt-1.17.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c86563182421896d73858e08e1db93afdd2b947a70064b813d515d66549e15f9"},
|
|
||||||
{file = "wrapt-1.17.2-cp39-cp39-win32.whl", hash = "sha256:f393cda562f79828f38a819f4788641ac7c4085f30f1ce1a68672baa686482bb"},
|
|
||||||
{file = "wrapt-1.17.2-cp39-cp39-win_amd64.whl", hash = "sha256:36ccae62f64235cf8ddb682073a60519426fdd4725524ae38874adf72b5f2aeb"},
|
|
||||||
{file = "wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8"},
|
|
||||||
{file = "wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[metadata]
|
|
||||||
lock-version = "2.1"
|
|
||||||
python-versions = "^3.13"
|
|
||||||
content-hash = "678b22f11117e1b73abfc5359fc144a7c0eeb8c67ed7fb8ef1a66d6587b47232"
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
[tool.poetry]
|
|
||||||
name = "integration"
|
|
||||||
version = "0.1.0"
|
|
||||||
description = ""
|
|
||||||
authors = ["grandwizard28 <vibhupandey28@gmail.com>"]
|
|
||||||
readme = "README.md"
|
|
||||||
|
|
||||||
[tool.poetry.dependencies]
|
|
||||||
python = "^3.13"
|
|
||||||
pytest = "^8.3.5"
|
|
||||||
psycopg2 = "^2.9.10"
|
|
||||||
testcontainers = "^4.10.0"
|
|
||||||
black = "^25.1.0"
|
|
||||||
clickhouse-driver = "^0.2.9"
|
|
||||||
requests = "^2.32.3"
|
|
||||||
wiremock = "^2.6.1"
|
|
||||||
|
|
||||||
|
|
||||||
[tool.poetry.group.dev.dependencies]
|
|
||||||
pylint = "^3.3.6"
|
|
||||||
isort = "^6.0.1"
|
|
||||||
autoflake = "^2.3.1"
|
|
||||||
|
|
||||||
[build-system]
|
|
||||||
requires = ["poetry-core"]
|
|
||||||
build-backend = "poetry.core.masonry.api"
|
|
||||||
|
|
||||||
[tool.pytest.ini_options]
|
|
||||||
python_files = "src/**/**.py"
|
|
||||||
|
|
||||||
[tool.pylint.main]
|
|
||||||
ignore = [".venv"]
|
|
||||||
|
|
||||||
[tool.pylint.format]
|
|
||||||
max-line-length = "88"
|
|
||||||
|
|
||||||
[tool.pylint."messages control"]
|
|
||||||
disable = ["missing-module-docstring", "missing-function-docstring", "missing-class-docstring"]
|
|
||||||
|
|
||||||
[tool.isort]
|
|
||||||
profile = "black"
|
|
||||||
|
|
||||||
[tool.autoflake]
|
|
||||||
recursive = true
|
|
||||||
remove-all-unused-imports = true
|
|
||||||
remove-unused-variables = true
|
|
||||||
exclude = [".venv/**"]
|
|
||||||
in-place = true
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
from clickhouse_driver.dbapi.cursor import Cursor
|
|
||||||
|
|
||||||
from fixtures import types
|
|
||||||
|
|
||||||
|
|
||||||
def test_telemetry_databases(signoz: types.SigNoz) -> None:
|
|
||||||
cursor = signoz.telemetrystore.conn.cursor()
|
|
||||||
assert isinstance(cursor, Cursor)
|
|
||||||
|
|
||||||
cursor.execute("SHOW DATABASES")
|
|
||||||
records = cursor.fetchall()
|
|
||||||
|
|
||||||
assert any("signoz_metrics" in record for record in records)
|
|
||||||
assert any("signoz_logs" in record for record in records)
|
|
||||||
assert any("signoz_traces" in record for record in records)
|
|
||||||
assert any("signoz_metadata" in record for record in records)
|
|
||||||
assert any("signoz_analytics" in record for record in records)
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
from http import HTTPStatus
|
|
||||||
|
|
||||||
import requests
|
|
||||||
|
|
||||||
from fixtures import types
|
|
||||||
|
|
||||||
|
|
||||||
def test_register(signoz: types.SigNoz) -> None:
|
|
||||||
response = requests.get(signoz.self.host_config.get("/api/v1/version"), timeout=2)
|
|
||||||
|
|
||||||
assert response.status_code == HTTPStatus.OK
|
|
||||||
assert response.json()["setupCompleted"] is False
|
|
||||||
|
|
||||||
response = requests.post(
|
|
||||||
signoz.self.host_config.get("/api/v1/register"),
|
|
||||||
json={
|
|
||||||
"name": "admin",
|
|
||||||
"orgId": "",
|
|
||||||
"orgName": "",
|
|
||||||
"email": "admin@admin.com",
|
|
||||||
"password": "password",
|
|
||||||
},
|
|
||||||
timeout=2,
|
|
||||||
)
|
|
||||||
assert response.status_code == HTTPStatus.OK
|
|
||||||
|
|
||||||
response = requests.get(signoz.self.host_config.get("/api/v1/version"), timeout=2)
|
|
||||||
|
|
||||||
assert response.status_code == HTTPStatus.OK
|
|
||||||
assert response.json()["setupCompleted"] is True
|
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
import http
|
|
||||||
|
|
||||||
import requests
|
|
||||||
from wiremock.client import (
|
|
||||||
HttpMethods,
|
|
||||||
Mapping,
|
|
||||||
MappingRequest,
|
|
||||||
MappingResponse,
|
|
||||||
WireMockMatchers,
|
|
||||||
)
|
|
||||||
|
|
||||||
from fixtures.types import SigNoz
|
|
||||||
|
|
||||||
|
|
||||||
def test_apply_license(signoz: SigNoz, make_http_mocks, get_jwt_token) -> None:
|
|
||||||
make_http_mocks(
|
|
||||||
signoz.zeus.container,
|
|
||||||
[
|
|
||||||
Mapping(
|
|
||||||
request=MappingRequest(
|
|
||||||
method=HttpMethods.GET,
|
|
||||||
url="/v2/licenses/me",
|
|
||||||
headers={
|
|
||||||
"X-Signoz-Cloud-Api-Key": {
|
|
||||||
WireMockMatchers.EQUAL_TO: "secret-key"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
),
|
|
||||||
response=MappingResponse(
|
|
||||||
status=200,
|
|
||||||
json_body={
|
|
||||||
"status": "success",
|
|
||||||
"data": {
|
|
||||||
"id": "0196360e-90cd-7a74-8313-1aa815ce2a67",
|
|
||||||
"key": "secret-key",
|
|
||||||
"valid_from": 1732146923,
|
|
||||||
"valid_until": -1,
|
|
||||||
"status": "VALID",
|
|
||||||
"state": "EVALUATING",
|
|
||||||
"plan": {
|
|
||||||
"name": "ENTERPRISE",
|
|
||||||
},
|
|
||||||
"platform": "CLOUD",
|
|
||||||
"features": [],
|
|
||||||
"event_queue": {},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
),
|
|
||||||
persistent=False,
|
|
||||||
)
|
|
||||||
],
|
|
||||||
)
|
|
||||||
|
|
||||||
access_token = get_jwt_token("admin@admin.com", "password")
|
|
||||||
|
|
||||||
response = requests.post(
|
|
||||||
url=signoz.self.host_config.get("/api/v3/licenses"),
|
|
||||||
json={"key": "secret-key"},
|
|
||||||
headers={"Authorization": "Bearer " + access_token},
|
|
||||||
timeout=5,
|
|
||||||
)
|
|
||||||
|
|
||||||
assert response.status_code == http.HTTPStatus.ACCEPTED
|
|
||||||
|
|
||||||
response = requests.post(
|
|
||||||
url=signoz.zeus.host_config.get("/__admin/requests/count"),
|
|
||||||
json={"method": "GET", "url": "/v2/licenses/me"},
|
|
||||||
timeout=5,
|
|
||||||
)
|
|
||||||
|
|
||||||
assert response.json()["count"] >= 1
|
|
||||||
Reference in New Issue
Block a user