Skip to content

Commit e5d627c

Browse files
committed
Adding qualified version for analytics
1 parent 744fbc0 commit e5d627c

File tree

10 files changed

+110
-2
lines changed

10 files changed

+110
-2
lines changed

.github/scripts/check-release.sh

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/bin/sh
2+
3+
# Checking if current tag matches the package version
4+
current_tag=$(echo $GITHUB_REF | cut -d '/' -f 3 | sed -r 's/^v//')
5+
file_tag=$(grep '__version__ =' meilisearch/version.py | cut -d '=' -f 2- | tr -d ' ' | tr -d '"' | tr -d ',')
6+
if [ "$current_tag" != "$file_tag" ]; then
7+
echo "Error: the current tag does not match the version in package file(s)."
8+
echo "$current_tag vs $file_tag"
9+
exit 1
10+
fi
11+
12+
echo 'OK'
13+
exit 0

.github/workflows/publish-docker-image.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ jobs:
1313
- name: Set up Docker Buildx
1414
uses: docker/setup-buildx-action@v2
1515

16+
- name: Check release validity
17+
run: sh .github/scripts/check-release.sh
18+
1619
- name: Set up QEMU
1720
uses: docker/setup-qemu-action@v2
1821

scraper/src/config/config_loader.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import os
1111
import copy
1212

13+
from .version import qualified_version
1314
from .config_validator import ConfigValidator
1415
from .urls_parser import UrlsParser
1516
from .selectors_parser import SelectorsParser
@@ -44,7 +45,7 @@ class ConfigLoader:
4445
strict_redirect = True
4546
strip_chars = ".,;:§¶"
4647
use_anchors = False
47-
user_agent = 'Meilisearch docs-scraper'
48+
user_agent = qualified_version()
4849
only_content_level = False
4950
query_rules = []
5051

scraper/src/config/version.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
from __future__ import annotations
2+
3+
__version__ = "0.12.9"
4+
5+
6+
def qualified_version() -> str:
7+
"""Get the qualified version of this module."""
8+
9+
return f"Meilisearch DocsScraper (v{__version__})"

scraper/src/meilisearch_helper.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import meilisearch
55
from builtins import range
66

7+
from .config.version import qualified_version
8+
79
def remove_bad_encoding(value):
810
return value.replace(''', "'")
911

@@ -99,7 +101,7 @@ class MeiliSearchHelper:
99101
}
100102

101103
def __init__(self, host_url, api_key, index_uid, custom_settings):
102-
self.meilisearch_client = meilisearch.Client(host_url, api_key)
104+
self.meilisearch_client = meilisearch.Client(host_url, api_key, client_agents=(qualified_version(),))
103105
self.meilisearch_index = self.meilisearch_client.index(index_uid)
104106
self.delete_index()
105107
self.add_settings(MeiliSearchHelper.SETTINGS, custom_settings)

tests/config_loader/basic_test.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
# coding: utf-8
2+
import re
3+
from scraper.src.config.version import __version__, qualified_version
24
from scraper.src.config.config_loader import ConfigLoader
35
from .abstract import config
46
import pytest
@@ -48,3 +50,14 @@ def test_excpetion_when_shadowing_(self):
4850

4951
with pytest.raises(Exception):
5052
ConfigLoader(c)
53+
54+
def test_get_qualified_version(self):
55+
""" Old variable scrap_url must be spread to scrape_url. If one is defined, the previous one must be used"""
56+
# Given
57+
c = config({
58+
'user_agent': qualified_version()
59+
})
60+
61+
config_loaded = ConfigLoader(c)
62+
63+
assert config_loaded.user_agent == f"Meilisearch DocsScraper (v{__version__})"

tests/meilisearch_helper/__init__.py

Whitespace-only changes.

tests/meilisearch_helper/common.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MASTER_KEY = "masterKey"
2+
BASE_URL = "http://127.0.0.1:7700"
3+
4+
DEFAULT_INDEX = 'index_uid'
5+
6+
DEFAULT_DATA_DELETE = {
7+
"taskUid": 1,
8+
"indexUid": DEFAULT_INDEX,
9+
"status": "enqueued",
10+
"type": "indexDeletion",
11+
"enqueuedAt": "2023-03-30T13:24:01.789654093Z"
12+
}
13+
DEFAULT_DATA_PATCH = {
14+
"taskUid": 1,
15+
"indexUid": DEFAULT_INDEX,
16+
"status": "enqueued",
17+
"type": "settingsUpdate",
18+
"enqueuedAt": "2023-03-30T13:24:01.789654093Z"
19+
}
20+
21+
DEFAULT_ACCEPTED_STATUS = 202
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# coding: utf-8
2+
import json
3+
from unittest.mock import patch
4+
5+
import requests
6+
7+
from scraper.src.meilisearch_helper import MeiliSearchHelper
8+
from scraper.src.config.version import __version__
9+
from tests.meilisearch_helper import common
10+
11+
12+
class TestMeilisearchHelper:
13+
@patch("requests.delete")
14+
@patch("requests.patch")
15+
def test_use_meilisearch_default(self, mock_delete, mock_patch):
16+
mock_delete.configure_mock(__name__="delete")
17+
mock_response = requests.models.Response()
18+
mock_response.status_code = common.DEFAULT_ACCEPTED_STATUS
19+
mock_response._content = json.dumps(common.DEFAULT_DATA_DELETE).encode('utf-8')
20+
mock_delete.return_value = mock_response
21+
22+
mock_patch.configure_mock(__name__="patch")
23+
mock_response = requests.models.Response()
24+
mock_response.status_code = common.DEFAULT_ACCEPTED_STATUS
25+
mock_response._content = json.dumps(common.DEFAULT_DATA_DELETE).encode('utf-8')
26+
mock_patch.return_value = mock_response
27+
""" Should set the `User-Agent` doscraper by default """
28+
# When
29+
actual = MeiliSearchHelper(
30+
common.BASE_URL,
31+
common.MASTER_KEY,
32+
common.DEFAULT_INDEX,
33+
MeiliSearchHelper.SETTINGS
34+
)
35+
36+
# Then
37+
assert actual.meilisearch_client.http.headers['User-Agent'] == f"Meilisearch Python (v0.27.0);Meilisearch DocsScraper (v{__version__})"
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# coding: utf-8
2+
import re
3+
4+
from scraper.src.config.version import __version__
5+
6+
7+
class TestInit:
8+
def test_get_version(self):
9+
assert re.match(r"^(\d+\.)?(\d+\.)?(\*|\d+)$", __version__)

0 commit comments

Comments
 (0)