Solrstice: A Solr 8+ Client for Rust and Python
Solrstice is a solr client library written in rust. With this wrapper you can use it in python.
Both asyncio and blocking clients are provided. All apis have type hints.
Features
- Config API
- Collection API
- Alias API
- Select Documents
- Grouping Component Query
- Stats Component
- DefTypes (lucene, dismax, edismax)
- Facet Counts (Query, Field, Pivot)
- Json Facet (Query, Stat, Terms, Nested)
- Indexing Documents
- Deleting Documents
Installation
pip install solrstice
Basic Usage
Async
import asyncio
from solrstice import SolrBasicAuth, SolrServerContext, SolrSingleServerHost, AsyncSolrCloudClient, UpdateQuery, \
SelectQuery, DeleteQuery
# A SolrServerContext specifies how the library should interact with Solr
context = SolrServerContext(SolrSingleServerHost('localhost:8983'), SolrBasicAuth('solr', 'SolrRocks'))
client = AsyncSolrCloudClient(context)
async def main() -> None:
# Create config and collection
await client.upload_config('example_config', 'path/to/config')
await client.create_collection('example_collection', 'example_config', shards=1, replication_factor=1)
# Index a document
await client.index(UpdateQuery(), 'example_collection', [{'id': 'example_document', 'title': 'Example document'}])
# Search for the document
response = await client.select(SelectQuery(fq=['title:Example document']), 'example_collection')
docs_response = response.get_docs_response()
assert docs_response is not None
assert docs_response.get_num_found() == 1
docs = docs_response.get_docs()
# Delete the document
await client.delete(DeleteQuery(ids=['example_document']), 'example_collection')
asyncio.run(main())
Blocking
from solrstice import SolrBasicAuth, BlockingSolrCloudClient, SolrServerContext, SolrSingleServerHost, DeleteQuery, \
SelectQuery, UpdateQuery
# A SolrServerContext specifies how the library should interact with Solr
context = SolrServerContext(SolrSingleServerHost('localhost:8983'), SolrBasicAuth('solr', 'SolrRocks'))
client = BlockingSolrCloudClient(context)
# Create config and collection
client.upload_config('example_config', 'path/to/config')
client.create_collection('example_collection', 'example_config', shards=1, replication_factor=1)
# Index a document
client.index(UpdateQuery(), 'example_collection', [{'id': 'example_document', 'title': 'Example document'}])
# Search for the document
response = client.select(SelectQuery(fq=['title:Example document']), 'example_collection')
docs_response = response.get_docs_response()
assert docs_response is not None
assert docs_response.get_num_found() == 1
docs = docs_response.get_docs()
# Delete the document
client.delete(DeleteQuery(ids=['example_document']), 'example_collection')
Grouping component
Field grouping
from solrstice import GroupingComponent, SelectQuery, SolrServerContext, AsyncSolrCloudClient
client = AsyncSolrCloudClient(SolrServerContext('localhost:8983'))
async def main() -> None:
group_builder = GroupingComponent(fields=["age"], limit=10)
select_builder = SelectQuery(fq=["age:[* TO *]"], grouping=group_builder)
groups = (await client.select(select_builder, "example_collection")).get_groups()
age_group = groups["age"]
docs = age_group.get_field_result()
Query grouping
from solrstice import GroupingComponent, SelectQuery, SolrServerContext, AsyncSolrCloudClient
client = AsyncSolrCloudClient(SolrServerContext('localhost:8983'))
async def main() -> None:
group_builder = GroupingComponent(queries=["age:[0 TO 59]", "age:[60 TO *]"], limit=10)
select_builder = SelectQuery(fq=["age:[* TO *]"], grouping=group_builder)
groups = (await client.select(select_builder, "example_collection")).get_groups()
age_group = groups["age:[0 TO 59]"]
group = age_group.get_query_result()
assert group is not None
docs = group.get_docs()
Query parsers
Lucene
from solrstice import LuceneQuery, SelectQuery, SolrServerContext, AsyncSolrCloudClient
client = AsyncSolrCloudClient(SolrServerContext('localhost:8983'))
async def main() -> None:
query_parser = LuceneQuery(df="population")
select_builder = SelectQuery(q="outdoors", def_type=query_parser)
response = (await client.select(select_builder, "example_collection")).get_docs_response()
assert response is not None
docs = response.get_docs()
Dismax
from solrstice import DismaxQuery, SelectQuery, SolrServerContext, AsyncSolrCloudClient
client = AsyncSolrCloudClient(SolrServerContext('localhost:8983'))
async def main() -> None:
query_parser = DismaxQuery(qf="interests^20", bq=["interests:cars^20"])
select_builder = SelectQuery(q="outdoors", def_type=query_parser)
response = (await client.select(select_builder, "example_collection")).get_docs_response()
assert response is not None
docs = response.get_docs()
Edismax
from solrstice import EdismaxQuery, SelectQuery, SolrServerContext, AsyncSolrCloudClient
client = AsyncSolrCloudClient(SolrServerContext('localhost:8983'))
async def main() -> None:
query_parser = EdismaxQuery(qf="interests^20", bq=["interests:cars^20"])
select_builder = SelectQuery(q="outdoors", def_type=query_parser)
response = (await client.select(select_builder, "example_collection")).get_docs_response()
assert response is not None
docs = response.get_docs()
FacetSet Component
Pivot facet
from solrstice import FacetSetComponent, PivotFacetComponent, SelectQuery, SolrServerContext, AsyncSolrCloudClient
client = AsyncSolrCloudClient(SolrServerContext('localhost:8983'))
async def main() -> None:
select_builder = SelectQuery(facet_set=FacetSetComponent(pivots=PivotFacetComponent(["interests,age"])))
response = await client.select(select_builder, "example_collection")
facets = response.get_facet_set()
pivots = facets.get_pivots()
interests_age = pivots.get("interests,age")
Field facet
from solrstice import FacetSetComponent, FieldFacetComponent, FieldFacetEntry, SelectQuery, SolrServerContext, AsyncSolrCloudClient
client = AsyncSolrCloudClient(SolrServerContext('localhost:8983'))
async def main() -> None:
facet_set = FacetSetComponent(fields=FieldFacetComponent(fields=[FieldFacetEntry("age")]))
select_builder = SelectQuery(facet_set=facet_set)
response = await client.select(select_builder, "example_collection")
facets = response.get_facet_set()
fields = facets.get_fields()
age = fields.get("age")
Query facet
from solrstice import AsyncSolrCloudClient, SolrServerContext, SelectQuery, FacetSetComponent, FacetSetComponent
client = AsyncSolrCloudClient(SolrServerContext('localhost:8983'))
async def main() -> None:
select_builder = SelectQuery(facet_set=FacetSetComponent(queries=["age:[0 TO 59]"]))
response = await client.select(select_builder, "example_collection")
facets = response.get_facet_set()
queries = facets.get_queries()
query = queries.get("age:[0 TO 59]")
Stats Component
from solrstice import StatsComponent, SelectQuery, SolrServerContext, AsyncSolrCloudClient
client = AsyncSolrCloudClient(SolrServerContext('localhost:8983'))
async def main() -> None:
select_builder = SelectQuery(stats=StatsComponent(fields=["age"]))
response = await client.select(select_builder, "example_collection")
stats = response.get_stats()
assert stats is not None
age_stats = stats.get_fields()["age"]
age_count = age_stats.get_count()
Json Facet Component
Query
from solrstice import JsonFacetComponent, JsonQueryFacet, SelectQuery, SolrServerContext, AsyncSolrCloudClient
async def main() -> None:
client = AsyncSolrCloudClient(SolrServerContext('localhost:8983'))
select_builder = SelectQuery(
json_facet=JsonFacetComponent(
facets={"below_60": JsonQueryFacet(q="age:[0 TO 59]")}
)
)
response = await client.select(select_builder, "example_collection")
facets = response.get_json_facets()
assert facets is not None
below_60 = facets.get_nested_facets().get("below_60")
assert below_60 is not None
assert below_60.get_count() == 4
Stat
from solrstice import JsonFacetComponent, JsonStatFacet, SelectQuery, SolrServerContext, AsyncSolrCloudClient
client = AsyncSolrCloudClient(SolrServerContext('localhost:8983'))
async def main() -> None:
select_builder = SelectQuery(
json_facet=JsonFacetComponent(
facets={"total_people": JsonStatFacet("sum(count)")}
)
)
response = await client.select(select_builder, "example_collection")
facets = response.get_json_facets()
assert facets is not None
total_people = facets.get_flat_facets()["total_people"]
assert total_people == 1000
Terms
from solrstice import AsyncSolrCloudClient, SolrServerContext, SelectQuery, JsonFacetComponent, JsonTermsFacet
client = AsyncSolrCloudClient(SolrServerContext('localhost:8983'))
async def main() -> None:
select_builder = SelectQuery(
json_facet=JsonFacetComponent(facets={"age": JsonTermsFacet("age")})
)
response = await client.select(select_builder, "example_collection")
facets = response.get_json_facets()
assert facets is not None
age_buckets = facets.get_nested_facets()["age"].get_buckets()
assert len(age_buckets) == 3
Nested
from solrstice import AsyncSolrCloudClient, SolrServerContext, SelectQuery, JsonFacetComponent, JsonQueryFacet, JsonStatFacet
client = AsyncSolrCloudClient(SolrServerContext('localhost:8983'))
async def main() -> None:
select_builder = SelectQuery(
json_facet=JsonFacetComponent(
facets={
"below_60": JsonQueryFacet(
q="age:[0 TO 59]",
facets={"total_people": JsonStatFacet("sum(count)")},
)
}
)
)
response = await client.select(select_builder, "example_collection")
facets = response.get_json_facets()
assert facets is not None
total_people = (
facets.get_nested_facets()
["below_60"]
.get_flat_facets()
.get("total_people")
)
assert total_people == 750.0
Hosts
Single Server
from solrstice import SolrServerContext, SolrSingleServerHost, SolrBasicAuth, AsyncSolrCloudClient
context = SolrServerContext(SolrSingleServerHost('localhost:8983'), SolrBasicAuth('solr', 'SolrRocks'))
client = AsyncSolrCloudClient(context)
Multiple servers
from solrstice import SolrServerContext, SolrMultipleServerHost, SolrBasicAuth, AsyncSolrCloudClient
# The client will randomly select a server to send requests to. It will wait 5 seconds for a response, before trying another server.
context = SolrServerContext(
SolrMultipleServerHost(["localhost:8983", "localhost:8984"], 5),
SolrBasicAuth('solr', 'SolrRocks'),
)
client = AsyncSolrCloudClient(context)
Zookeeper
from solrstice import SolrServerContext, ZookeeperEnsembleHostConnector, SolrBasicAuth, AsyncSolrCloudClient
async def main() -> None:
context = SolrServerContext(
await ZookeeperEnsembleHostConnector(["localhost:2181"], 30).connect(),
SolrBasicAuth('solr', 'SolrRocks'),
)
client = AsyncSolrCloudClient(context)
Notes
-
Multiprocessing does not work, and will block forever. Normal multithreading works fine.
-
Pyo3, the Rust library for creating bindings does not allow overriding the
__init__method on objects from Rust.__new__has to be overridden instead.For example, if you want to create a simpler way to create a client
from typing import Optional from solrstice import SolrServerContext, SolrSingleServerHost, SolrBasicAuth, AsyncSolrCloudClient, SolrAuth class SolrClient(AsyncSolrCloudClient): def __new__(cls, host: str, auth: Optional[SolrAuth] = None): context = SolrServerContext(SolrSingleServerHost(host), auth) return super().__new__(cls, context=context) client = SolrClient("localhost:8983", SolrBasicAuth("username", "password"))
Metadata
Release files for solrstice 0.15.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| solrstice-0.15.1.tar.gz | 106.1 kB | Details |
Built distributions (wheels)
Total release size: 53.8 MB
Release files / solrstice-0.15.1.tar.gz
| Download URL | solrstice-0.15.1.tar.gz |
|---|---|
| Size | 106.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
acee5fc3c5559700c98e0565506cc864613b015313a0e30cb783710506dee1ec
|
|
BLAKE2b-256 checksum How to use checksums |
35b5855e0fd468415d13b915ac82fadddcb608b380cee0ac4c583327243a9b18
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / solrstice-0.15.1-cp39-abi3-win_arm64.whl
| Download URL | solrstice-0.15.1-cp39-abi3-win_arm64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.9 Windows ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
e52ce5b1b447879157d80418cafaa3706da23579bf837d78514f41a4f6fef9af
|
|
BLAKE2b-256 checksum How to use checksums |
a65e9a1237fe200feede072ec5b70b735320052695946d02210955f0c6a72612
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / solrstice-0.15.1-cp39-abi3-win_amd64.whl
| Download URL | solrstice-0.15.1-cp39-abi3-win_amd64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.9 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
bbe8b7de9c1a900366cc4e540a691a675628693e5034964eed69f1e54fe5b373
|
|
BLAKE2b-256 checksum How to use checksums |
6959076d033bef1dfd11586fafb0975a65d8be2a33bc3d10e689810bec073a77
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / solrstice-0.15.1-cp39-abi3-musllinux_1_2_x86_64.whl
| Download URL | solrstice-0.15.1-cp39-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 5.0 MB |
| Tags | CPython 3.9 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
65d3b4a13bd1d29cb2090fcf63b54d83ead3e6f87c951b8daf72888e90122aa9
|
|
BLAKE2b-256 checksum How to use checksums |
6c61b8f28202355756e930bdfb6b0c7cf1b2ab18852020f28738c48fa49b7a83
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / solrstice-0.15.1-cp39-abi3-musllinux_1_2_armv7l.whl
| Download URL | solrstice-0.15.1-cp39-abi3-musllinux_1_2_armv7l.whl |
|---|---|
| Size | 4.4 MB |
| Tags | CPython 3.9 Linux musl 1.2+ ARMv7l abi3 |
|
SHA-256 checksum How to use checksums |
755e690a8103d904f23810f8e060de43f503098a6333fb411b5d395ab260365d
|
|
BLAKE2b-256 checksum How to use checksums |
91ddef1f5e30b726208bc2bf167f114e525ea96f85b4450f218af4d59a9c8416
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / solrstice-0.15.1-cp39-abi3-musllinux_1_2_aarch64.whl
| Download URL | solrstice-0.15.1-cp39-abi3-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 4.8 MB |
| Tags | CPython 3.9 Linux musl 1.2+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
6c1c382b9fe9f1bed65fce97571a6fd51b1f02b48e8355c3e0adb747cc8789fa
|
|
BLAKE2b-256 checksum How to use checksums |
02ce519cf720369e5978b52932e4eb1b85477f187e69bbdf684ec4c3243b8bdc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / solrstice-0.15.1-cp39-abi3-manylinux_2_28_x86_64.whl
| Download URL | solrstice-0.15.1-cp39-abi3-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 4.7 MB |
| Tags | CPython 3.9 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
3568ebe9efe52f7bf9fdb1d2ac7335b922a048a2860ca753518513b9c25ceffd
|
|
BLAKE2b-256 checksum How to use checksums |
3c68de8ed969fbf0e6f3ed99d21edbeb21826312785d95257f06c2188391b423
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / solrstice-0.15.1-cp39-abi3-manylinux_2_28_s390x.whl
| Download URL | solrstice-0.15.1-cp39-abi3-manylinux_2_28_s390x.whl |
|---|---|
| Size | 4.4 MB |
| Tags | CPython 3.9 Linux glibc 2.28+ IBM System/390x abi3 |
|
SHA-256 checksum How to use checksums |
39876659e8cfefb395492eeda89824a9ae3cd48ec8d058884f589c8d651461eb
|
|
BLAKE2b-256 checksum How to use checksums |
7438023e598b8d1360372d7e1142b5182650cb648d67f385626b35a1907c13bc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / solrstice-0.15.1-cp39-abi3-manylinux_2_28_ppc64le.whl
| Download URL | solrstice-0.15.1-cp39-abi3-manylinux_2_28_ppc64le.whl |
|---|---|
| Size | 5.1 MB |
| Tags | CPython 3.9 Linux glibc 2.28+ PowerPC 64-le abi3 |
|
SHA-256 checksum How to use checksums |
d50e13bee233a4b2544368ff62bf669320f9f3262b8b0ef8479c0a44895d0014
|
|
BLAKE2b-256 checksum How to use checksums |
d141315e7172fd2ebb69add77e9ca19280495a6a59b3faa37e0f076641a6af8b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / solrstice-0.15.1-cp39-abi3-manylinux_2_28_armv7l.whl
| Download URL | solrstice-0.15.1-cp39-abi3-manylinux_2_28_armv7l.whl |
|---|---|
| Size | 4.2 MB |
| Tags | CPython 3.9 Linux glibc 2.28+ ARMv7l abi3 |
|
SHA-256 checksum How to use checksums |
be987c43dda04f6b3bfc495ae291565c25406ff0622e0193525dc770ea6b8bba
|
|
BLAKE2b-256 checksum How to use checksums |
f75a3610c5cbc798913a05f94f902eff91a0c0c462b5b107f90e2ce23dd99cf7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / solrstice-0.15.1-cp39-abi3-manylinux_2_28_aarch64.whl
| Download URL | solrstice-0.15.1-cp39-abi3-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 4.6 MB |
| Tags | CPython 3.9 Linux glibc 2.28+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
832de4f0715f77cfda6ab2d15e11fc8eb12339834aeb865f95042f60a1f471c4
|
|
BLAKE2b-256 checksum How to use checksums |
0982ddbc2755d2dde2b904d4e0c686c3a847e7af9b0232b87a2490372f5fa348
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / solrstice-0.15.1-cp39-abi3-macosx_11_0_arm64.whl
| Download URL | solrstice-0.15.1-cp39-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 4.3 MB |
| Tags | CPython 3.9 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
42820791ca20fb86820ff1f41129df4236eb3e568f79655f7b2aae2b15cc2b74
|
|
BLAKE2b-256 checksum How to use checksums |
2277014225dd8bfc66f07620a96b76154eb4488f22b7708e99efb5dd84a317f1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / solrstice-0.15.1-cp39-abi3-macosx_10_12_x86_64.whl
| Download URL | solrstice-0.15.1-cp39-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 4.5 MB |
| Tags | CPython 3.9 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
ea60555d89dc09e32e3e275f32dc7948ca5dade6afe91662d86f638127e258ec
|
|
BLAKE2b-256 checksum How to use checksums |
44c4095a41a614759178e095e752274c39191935858dbfe9e7e65ebb9f47e6b3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|