Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Direct Solr query for items in a specific date range
#!/usr/bin/env python3
import re
import requests
# Enumerate the cores in Solr to determine if statistics have been sharded into
# yearly shards by DSpace's stats-util or not (for example: statistics-2018).
def get_statistics_shards():
# Initialize an empty list for statistics core years
statistics_core_years = []
# URL for Solr status to check active cores
solr_query_params = {"action": "STATUS", "wt": "json"}
solr_url = SOLR_SERVER + "/admin/cores"
res = requests.get(solr_url, params=solr_query_params)
if res.status_code == requests.codes.ok:
data = res.json()
# Iterate over active cores from Solr's STATUS response (cores are in
# the status array of this response).
for core in data["status"]:
# Pattern to match, for example: statistics-2018
pattern = re.compile("^statistics-[0-9]{4}$")
if not pattern.match(core):
continue
# Append current core to list
statistics_core_years.append(core)
# Initialize a string to hold our shards (may end up being empty if the Solr
# core has not been processed by stats-util).
shards = str()
if len(statistics_core_years) > 0:
# Begin building a string of shards starting with the default one
shards = f"{SOLR_SERVER}/statistics"
for core in statistics_core_years:
# Create a comma-separated list of shards to pass to our Solr query
#
# See: https://wiki.apache.org/solr/DistributedSearch
shards += f",{SOLR_SERVER}/{core}"
# Return the string of shards, which may actually be empty. Solr doesn't
# seem to mind if the shards query parameter is empty and I haven't seen
# any negative performance impact so this should be fine.
return shards
def index_views():
# join the UUIDs with "OR" and escape the hyphens for Solr
item_ids_str = ' OR '.join(item_ids).replace('-', '\-')
# get total number of distinct facets for items with a minimum of 1 view,
# otherwise Solr returns all kinds of weird ids that are actually not in
# the database. Also, stats are expensive, but we need stats.calcdistinct
# so we can get the countDistinct summary.
#
# see: https://lucene.apache.org/solr/guide/6_6/the-stats-component.html
solr_query_params = {
"q": f"id:({item_ids_str})",
"fq": "type:2 AND isBot:false AND statistics_type:view AND time:[2020-01-01T00:00:00Z TO 2020-09-02T00:00:00Z]",
"facet": "true",
"facet.field": "id",
"facet.mincount": 1,
"facet.limit": 1,
"facet.offset": 0,
"stats": "true",
"stats.field": "id",
"stats.calcdistinct": "true",
"shards": shards,
"rows": 0,
"wt": "json",
}
solr_url = SOLR_SERVER + "/statistics/select"
res = requests.get(solr_url, params=solr_query_params)
try:
# get total number of distinct facets (countDistinct)
results_totalNumFacets = res.json()["stats"]["stats_fields"]["id"][
"countDistinct"
]
except TypeError:
print("No item views to index, exiting.")
exit(0)
# divide results into "pages" (cast to int to effectively round down)
results_per_page = 100
results_num_pages = int(results_totalNumFacets / results_per_page)
results_current_page = 0
# create an empty list to store values for batch insertion
data = []
while results_current_page <= results_num_pages:
# "pages" are zero based, but one based is more human readable
print(
f"Indexing item views (page {results_current_page + 1} of {results_num_pages + 1})"
)
solr_query_params = {
"q": f"id:({item_ids_str})",
"fq": "type:2 AND isBot:false AND statistics_type:view AND time:[2020-01-01T00:00:00Z TO 2020-09-02T00:00:00Z]",
"facet": "true",
"facet.field": "id",
"facet.mincount": 1,
"facet.limit": results_per_page,
"facet.offset": results_current_page * results_per_page,
"shards": shards,
"rows": 0,
"wt": "json",
"json.nl": "map", # return facets as a dict instead of a flat list
}
solr_url = SOLR_SERVER + "/statistics/select"
res = requests.get(solr_url, params=solr_query_params)
# Solr returns facets as a dict of dicts (see json.nl parameter)
views = res.json()["facet_counts"]["facet_fields"]
# iterate over the 'id' dict and get the item ids and views
for item_id, item_views in views["id"].items():
data.append((item_id, item_views))
print(data)
# clear all items from the list so we can populate it with the next batch
data.clear()
results_current_page += 1
SOLR_SERVER = "http://localhost:8081/solr"
shards = get_statistics_shards()
# list of item UUIDs (will be passed into function by remote request
item_ids = ['0079470a-87a1-4373-beb1-b16e3f0c4d81', '007a9df1-0871-4612-8b28-5335982198cb', '007ad705-32f4-4d05-a5b2-1b07fdc4eee4', '007c0778-06c0-4aba-be1b-9f708e2e0f53', '007cee01-9eed-4e8c-8250-2aed09a0172d', '007d4f0b-59b2-4233-84b1-ee059eef371a', '007e0315-ebc9-46b2-9dbe-99bc8f087529', '007f3438-70f4-4ca3-b3ee-0b9cd909a4ee', '008008a4-f3d7-4c13-9273-fb258f03c13e', '00801088-3caa-48ae-a164-9dded975d9e4', '00810c2f-baf5-4f87-a18c-3095f1c0fbaf', '0081252e-d15e-463e-80d2-a490c7f2af34', '0081f617-246f-4234-acf7-a6c118538b55', '00824114-b319-41ad-abb8-45c4dfeebba9', '0082bc30-cb85-42be-a76c-2b37e34dd435', '0082e131-bb85-44df-8b98-3c156867dd06', '0083cb32-57f3-4f47-b5d3-a3790284c640', '0084333b-6dd0-4f45-aaab-13929aabfc83', '008493fc-9d2d-438c-8492-43891ee81e1c', '0084dc60-75b1-4059-95c8-ea0559d0fc5f', '00851233-a0f2-4d43-a0d1-18e6c17af62c', '0085b94a-778d-4605-be37-73394b54553c', '008728af-fcf2-4067-99a3-982e04f4310d', '0087e66a-51f1-4b75-95a7-5ab8e0dba561', '00893bd8-e7e4-40fd-8cab-455f2604c00e', '008993d8-dd43-489f-b1d8-a986a19b44a5', '0089f081-d95f-461f-b043-d49811200153', '008a10b0-4161-4b5f-a8e5-925eafcf9a1d', '008b07a0-13d8-492c-a5f2-c02ecfe65eea', '008c3a6b-1dd3-4ea6-bb51-f6cc3882430d', '008c62ec-73a8-4075-b84b-45d8bd91a873', '00906c38-eac1-444a-bdd2-6e54e203cfc2', '059dfc7b-7039-4fee-91f0-883b79783f11', '05a06330-2de9-4179-9d1c-ec3af5262209', '05a281b1-635d-4a60-945d-fe67f9eed7e6', '05a38f68-1969-4a36-ace6-4e64c05137eb', '05a39eab-4dd4-4107-a4c2-ec463c030f68', '05a3e851-197f-41f6-a189-adcce5d6d048', '05a50197-9e0e-4dff-aa8c-65e85d494139', '05a531b1-5541-445a-b204-525b8a9cc2a3', '05a5afcc-8f83-4536-9f59-a636d99e2173', '05a5cd0e-37e1-49a6-9760-e1bfeb248a15', '05a5d773-8a4c-49c1-859e-17e7b50ab77e', '05a6a3f1-0359-42d6-958d-41d5cc36e2d1', '05a6ad4d-c2d9-4381-9856-5341eccefd2a', '05a7af8a-c398-489c-995e-150ae96482fb', '05a7cefe-0ad6-45ff-89f0-7d98d043857d', '05a85e29-42e8-437d-ae8b-d532c75448e6', '05a9333e-8c79-43aa-b007-ab11342ca92c', '05a95c3a-5caa-4a6e-8fda-59860cf411d0', '05aa96a4-9d28-4595-bb64-c93fc6a0233e', '05ac5a0c-cccb-41dc-9b81-525eb523cad3', '05ac69cc-eada-4dd4-ad6d-a6a200e180dc', '05ad4a12-077f-45d2-bee0-e72098016846', '05ad4bbb-04bc-4b6b-86a3-a2d3b87824de', '05aec674-083a-4d61-abcf-c8043258d5c2', '05aedbcf-d2cf-4a71-a9d6-f2acfa3a7084', '05b0183d-e973-4ec7-a0f0-12bf5a5332bf', '05b0ad86-b3b4-4f27-a047-96bb3d6fa935', '054b6651-12e0-4fb9-a765-fa77d1745b1b', '054d3d32-81d0-4ff5-96e8-41be9e0e423c', '054d7a06-799b-4a85-acfd-963d31cb10a8', '054dcce9-8638-4bc0-ac12-8338896be396', '054f3e4b-f615-43ab-932f-fb57d76078fd', '054fcf83-f10e-410b-a2f4-4dc5d90ffa77', '05502c21-9282-4e56-a46f-0987b8d5d7c1', '055082df-401e-4de3-93ce-8d02a2bae15b', '0550b8e5-f901-45da-ab80-183fc625f457', '055139e6-9d96-441f-9329-c13b59061169', '05547550-51f7-457f-bb03-71d5affc5208', '05576ef2-32db-47c9-a28e-060778ade6f7', '0558c1dc-9891-40a7-86ce-8fb786629371', '0559c318-d8c1-4586-b59e-b782c25cc460', '055a60dc-3a4f-483d-b8b2-0a9b037ebf80', '055af12c-b0a5-4810-aadd-dfe589a6e418', '055b296b-26c6-4c59-9018-2c0ac360e4fe', '055b9504-051a-49e0-959a-3b6819f0db52', '055d6e58-2bc9-4a89-b325-e8aae7900c86', '055d7e6f-c281-40a9-abfe-c02558c23679', '055d9232-fb5d-4bba-a10f-007bbf027bbc', '055e3c78-7a33-4628-aae0-527c2849f68f', '055e4f90-8987-433f-b0d8-27073fb9882c', '055e5d20-aa78-4ada-8072-62596d45a618', '055fc901-3528-430a-9e5f-0548f6a664ed', '056262d0-9388-4143-89e7-f6d6afbe643e', '056275fb-75e4-4f07-b357-ba5cc87c4809', '05634e9c-9452-42f7-aa03-260a7b1b3ac7', '05637b6b-fe6b-437a-8929-6eeaeaa71198', '04e6b2b2-7ec4-47c6-9e1a-d40bd0d23895', '04e7bc25-31d8-4946-8b66-7a9432cb7163', '04e7bdb5-e6b0-4652-9f36-2a7be321d577', '04e80f37-751f-47b5-a8f7-a7bb0756d838', '04e8654f-ecf4-4932-830a-249b05ee0b33', '04e8b786-4a7f-41da-9409-a924ea3db8ca', '04e8d5b0-b37d-4510-be87-025352b2e452', '04e8e7e2-c3ef-4f20-b4fa-e5a19564b9dc', '04e9b11c-b560-4402-9ccc-8d7c8bff4dbf', '04e9d374-0db8-481c-9cdc-67c873b95c1f', '04e9e7b8-026f-4b7f-959c-becb0fc4cb6d', '04eab9b8-5e53-4729-8e12-f79eec81b629', '04ec2162-f205-4cc8-83a1-64784f76bee5', '04ec37ed-4ca3-4732-8268-9b64aa6dd3f3', '04edb062-0230-4c74-a4be-58d239f6df04', '04edb498-e7e0-4098-9065-18099ba344ee', '04ee234a-814d-4127-933e-1c5004d75d2f', '04eeae60-c961-419d-8990-185e006bd389', '04ef0ba9-10ed-40d8-ad45-85c2a4f74507', '04ef8660-d0a2-4a97-b182-1e11fe48012e', '04efbf7e-edaa-43ed-a1f9-ccb35f003569', '04f0cad4-ffb8-44c9-8137-569d5383b3b1', '04f0ce85-9fce-4ae6-9654-fe04ecca9c12', '04f19a39-0c66-4b47-bc8d-f287b46b0312', '04f21420-bd58-45f7-b422-b5f19592928e', '04f27eba-1729-4271-98be-d1a095c19798', '04f2e7da-09d9-4ae1-960d-20517c0db51b', '04f3812d-b53d-4fa8-9316-d09aedaabdd9', '04f3f044-b702-42e0-bd90-448c49d676a4', '048dbdac-0703-4329-9e05-ea866f52e965', '048ddf32-3394-4390-8798-0f170ce77a9e', '048eaad0-9534-4a0f-8cdc-e66ae8aef956', '048f0949-1986-48c4-99cb-be5b8af13bec', '048fc80b-7200-494c-959c-94e56fa5a311', '0490257b-8773-4be6-a90b-19028d92f913', '0490ceb6-571c-4944-84f5-190e40376a10', '04915ff7-ff54-4857-8306-c405b9a41d76', '0491ff29-1f48-4a1a-931b-c1da0d70225e', '04924815-7662-44d6-908c-9a911534339e', '049268c0-c1a1-4b34-96e7-dead9f863135', '049384d9-4ece-4c72-aa10-cc5434c08755', '0493e61a-c345-4cbe-90fa-b658cf51fa8b', '0493ea68-bcd6-461c-9b62-b4dadcf57bf2', '04960af4-e214-4796-a1e8-47aa1bc834ec', '04963c84-36ca-4492-a38e-0f569b25c99c', '04967f6b-68b5-484e-b704-3fabe9e3c209', '0496f5c8-3cc7-4d69-a467-c84ccfbdaf21', '04974f16-d70f-44b5-a70b-015154de8724', '0498601c-0045-4c2b-a119-f0e5e572cff7', '04989c76-9255-4353-a8aa-9ef473596b51', '0498cd95-1c90-4f28-8e0a-c85447ac965c', '04993774-7554-4794-9b1d-1f268985d771', '0499faf2-f930-4398-a772-79f58e383e9d', '049ab515-c079-4096-9247-12eb2320ffae', '049b18c6-a930-4065-8d24-78ad2460abeb', '049cc829-0310-464c-99a3-10240ad27c8a', '049d2048-f0f1-47be-993c-ff5ab02dca94', '049e5275-ab38-45f2-9fd6-157d7f1442e5', '049ed436-a78f-4c10-aa58-162622978955']
index_views()
# vim: set sw=4 ts=4 expandtab:
Getting item views (page 1 of 2)
[('0490257b-8773-4be6-a90b-19028d92f913', 44), ('04ef8660-d0a2-4a97-b182-1e11fe48012e', 36), ('05502c21-9282-4e56-a46f-0987b8d5d7c1', 26), ('008c62ec-73a8-4075-b84b-45d8bd91a873', 25), ('0493e61a-c345-4cbe-90fa-b658cf51fa8b', 19), ('05a5cd0e-37e1-49a6-9760-e1bfeb248a15', 19), ('049ed436-a78f-4c10-aa58-162622978955', 18), ('04ee234a-814d-4127-933e-1c5004d75d2f', 17), ('04f2e7da-09d9-4ae1-960d-20517c0db51b', 14), ('04974f16-d70f-44b5-a70b-015154de8724', 13), ('05aa96a4-9d28-4595-bb64-c93fc6a0233e', 13), ('0089f081-d95f-461f-b043-d49811200153', 12), ('0559c318-d8c1-4586-b59e-b782c25cc460', 12), ('00851233-a0f2-4d43-a0d1-18e6c17af62c', 10), ('008a10b0-4161-4b5f-a8e5-925eafcf9a1d', 10), ('05634e9c-9452-42f7-aa03-260a7b1b3ac7', 10), ('04f0ce85-9fce-4ae6-9654-fe04ecca9c12', 9), ('054b6651-12e0-4fb9-a765-fa77d1745b1b', 9), ('05b0183d-e973-4ec7-a0f0-12bf5a5332bf', 9), ('008993d8-dd43-489f-b1d8-a986a19b44a5', 7), ('00906c38-eac1-444a-bdd2-6e54e203cfc2', 7), ('04960af4-e214-4796-a1e8-47aa1bc834ec', 7), ('04e7bc25-31d8-4946-8b66-7a9432cb7163', 7), ('04e8d5b0-b37d-4510-be87-025352b2e452', 7), ('05a7af8a-c398-489c-995e-150ae96482fb', 7), ('0491ff29-1f48-4a1a-931b-c1da0d70225e', 6), ('04e9b11c-b560-4402-9ccc-8d7c8bff4dbf', 6), ('059dfc7b-7039-4fee-91f0-883b79783f11', 6), ('05a7cefe-0ad6-45ff-89f0-7d98d043857d', 6), ('05a9333e-8c79-43aa-b007-ab11342ca92c', 6), ('05ac5a0c-cccb-41dc-9b81-525eb523cad3', 6), ('05ac69cc-eada-4dd4-ad6d-a6a200e180dc', 6), ('0084dc60-75b1-4059-95c8-ea0559d0fc5f', 5), ('048ddf32-3394-4390-8798-0f170ce77a9e', 5), ('04924815-7662-44d6-908c-9a911534339e', 5), ('0493ea68-bcd6-461c-9b62-b4dadcf57bf2', 5), ('0498601c-0045-4c2b-a119-f0e5e572cff7', 5), ('049e5275-ab38-45f2-9fd6-157d7f1442e5', 5), ('04e7bdb5-e6b0-4652-9f36-2a7be321d577', 5), ('04e8b786-4a7f-41da-9409-a924ea3db8ca', 5), ('04f3f044-b702-42e0-bd90-448c49d676a4', 5), ('055082df-401e-4de3-93ce-8d02a2bae15b', 5), ('055e4f90-8987-433f-b0d8-27073fb9882c', 5), ('056262d0-9388-4143-89e7-f6d6afbe643e', 5), ('05a39eab-4dd4-4107-a4c2-ec463c030f68', 5), ('007a9df1-0871-4612-8b28-5335982198cb', 4), ('0082e131-bb85-44df-8b98-3c156867dd06', 4), ('0083cb32-57f3-4f47-b5d3-a3790284c640', 4), ('00893bd8-e7e4-40fd-8cab-455f2604c00e', 4), ('048f0949-1986-48c4-99cb-be5b8af13bec', 4), ('04915ff7-ff54-4857-8306-c405b9a41d76', 4), ('04993774-7554-4794-9b1d-1f268985d771', 4), ('049cc829-0310-464c-99a3-10240ad27c8a', 4), ('04f21420-bd58-45f7-b422-b5f19592928e', 4), ('055139e6-9d96-441f-9329-c13b59061169', 4), ('055d6e58-2bc9-4a89-b325-e8aae7900c86', 4), ('05a95c3a-5caa-4a6e-8fda-59860cf411d0', 4), ('0079470a-87a1-4373-beb1-b16e3f0c4d81', 3), ('007c0778-06c0-4aba-be1b-9f708e2e0f53', 3), ('007cee01-9eed-4e8c-8250-2aed09a0172d', 3), ('007e0315-ebc9-46b2-9dbe-99bc8f087529', 3), ('007f3438-70f4-4ca3-b3ee-0b9cd909a4ee', 3), ('00824114-b319-41ad-abb8-45c4dfeebba9', 3), ('0082bc30-cb85-42be-a76c-2b37e34dd435', 3), ('0084333b-6dd0-4f45-aaab-13929aabfc83', 3), ('008728af-fcf2-4067-99a3-982e04f4310d', 3), ('0490ceb6-571c-4944-84f5-190e40376a10', 3), ('049268c0-c1a1-4b34-96e7-dead9f863135', 3), ('049384d9-4ece-4c72-aa10-cc5434c08755', 3), ('04963c84-36ca-4492-a38e-0f569b25c99c', 3), ('04967f6b-68b5-484e-b704-3fabe9e3c209', 3), ('049ab515-c079-4096-9247-12eb2320ffae', 3), ('04e9e7b8-026f-4b7f-959c-becb0fc4cb6d', 3), ('04edb498-e7e0-4098-9065-18099ba344ee', 3), ('04f19a39-0c66-4b47-bc8d-f287b46b0312', 3), ('054dcce9-8638-4bc0-ac12-8338896be396', 3), ('05576ef2-32db-47c9-a28e-060778ade6f7', 3), ('055b296b-26c6-4c59-9018-2c0ac360e4fe', 3), ('055e3c78-7a33-4628-aae0-527c2849f68f', 3), ('05637b6b-fe6b-437a-8929-6eeaeaa71198', 3), ('05a3e851-197f-41f6-a189-adcce5d6d048', 3), ('05a50197-9e0e-4dff-aa8c-65e85d494139', 3), ('05a531b1-5541-445a-b204-525b8a9cc2a3', 3), ('05a6ad4d-c2d9-4381-9856-5341eccefd2a', 3), ('05a85e29-42e8-437d-ae8b-d532c75448e6', 3), ('007ad705-32f4-4d05-a5b2-1b07fdc4eee4', 2), ('007d4f0b-59b2-4233-84b1-ee059eef371a', 2), ('008008a4-f3d7-4c13-9273-fb258f03c13e', 2), ('0081252e-d15e-463e-80d2-a490c7f2af34', 2), ('0087e66a-51f1-4b75-95a7-5ab8e0dba561', 2), ('048dbdac-0703-4329-9e05-ea866f52e965', 2), ('048eaad0-9534-4a0f-8cdc-e66ae8aef956', 2), ('048fc80b-7200-494c-959c-94e56fa5a311', 2), ('0499faf2-f930-4398-a772-79f58e383e9d', 2), ('049b18c6-a930-4065-8d24-78ad2460abeb', 2), ('049d2048-f0f1-47be-993c-ff5ab02dca94', 2), ('04e6b2b2-7ec4-47c6-9e1a-d40bd0d23895', 2), ('04e8e7e2-c3ef-4f20-b4fa-e5a19564b9dc', 2), ('04e9d374-0db8-481c-9cdc-67c873b95c1f', 2), ('04edb062-0230-4c74-a4be-58d239f6df04', 2)]
Getting item views (page 2 of 2)
[('04efbf7e-edaa-43ed-a1f9-ccb35f003569', 2), ('04f0cad4-ffb8-44c9-8137-569d5383b3b1', 2), ('04f27eba-1729-4271-98be-d1a095c19798', 2), ('04f3812d-b53d-4fa8-9316-d09aedaabdd9', 2), ('054d7a06-799b-4a85-acfd-963d31cb10a8', 2), ('0550b8e5-f901-45da-ab80-183fc625f457', 2), ('055d7e6f-c281-40a9-abfe-c02558c23679', 2), ('056275fb-75e4-4f07-b357-ba5cc87c4809', 2), ('05a38f68-1969-4a36-ace6-4e64c05137eb', 2), ('05a6a3f1-0359-42d6-958d-41d5cc36e2d1', 2), ('05ad4a12-077f-45d2-bee0-e72098016846', 2), ('00801088-3caa-48ae-a164-9dded975d9e4', 1), ('00810c2f-baf5-4f87-a18c-3095f1c0fbaf', 1), ('0081f617-246f-4234-acf7-a6c118538b55', 1), ('008493fc-9d2d-438c-8492-43891ee81e1c', 1), ('008b07a0-13d8-492c-a5f2-c02ecfe65eea', 1), ('008c3a6b-1dd3-4ea6-bb51-f6cc3882430d', 1), ('0496f5c8-3cc7-4d69-a467-c84ccfbdaf21', 1), ('04989c76-9255-4353-a8aa-9ef473596b51', 1), ('0498cd95-1c90-4f28-8e0a-c85447ac965c', 1), ('04e80f37-751f-47b5-a8f7-a7bb0756d838', 1), ('04e8654f-ecf4-4932-830a-249b05ee0b33', 1), ('04eab9b8-5e53-4729-8e12-f79eec81b629', 1), ('04ec2162-f205-4cc8-83a1-64784f76bee5', 1), ('04ec37ed-4ca3-4732-8268-9b64aa6dd3f3', 1), ('054d3d32-81d0-4ff5-96e8-41be9e0e423c', 1), ('054f3e4b-f615-43ab-932f-fb57d76078fd', 1), ('054fcf83-f10e-410b-a2f4-4dc5d90ffa77', 1), ('0558c1dc-9891-40a7-86ce-8fb786629371', 1), ('055a60dc-3a4f-483d-b8b2-0a9b037ebf80', 1), ('055af12c-b0a5-4810-aadd-dfe589a6e418', 1), ('055b9504-051a-49e0-959a-3b6819f0db52', 1), ('055d9232-fb5d-4bba-a10f-007bbf027bbc', 1), ('055e5d20-aa78-4ada-8072-62596d45a618', 1), ('055fc901-3528-430a-9e5f-0548f6a664ed', 1), ('05a281b1-635d-4a60-945d-fe67f9eed7e6', 1), ('05a5afcc-8f83-4536-9f59-a636d99e2173', 1), ('05a5d773-8a4c-49c1-859e-17e7b50ab77e', 1), ('05ad4bbb-04bc-4b6b-86a3-a2d3b87824de', 1), ('05aec674-083a-4d61-abcf-c8043258d5c2', 1), ('05aedbcf-d2cf-4a71-a9d6-f2acfa3a7084', 1)]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment