diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 65f558e..cf72398 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "2.0.0" + ".": "2.0.1" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index 8ed7920..1fd38d8 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 85 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/coingecko/coingecko-705ab95ba3a2ad5b97b9a9a8d942a52f918da8b2544b1a156846dd438c1d26d4.yml -openapi_spec_hash: 82c4000d4dbeb57eabac6bb6cf9e3dc1 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/coingecko/coingecko-fb6b6a203ce654df6f662bce7e112dbbab1106024132e5b8145fefc7b3297436.yml +openapi_spec_hash: 56fbbaf3608f6cde0b9ed8854fdaeb4c config_hash: c77352c905b1a7d1ab31960e5195bddf diff --git a/CHANGELOG.md b/CHANGELOG.md index ff97499..1a7f5c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 2.0.1 (2026-04-30) + +Full Changelog: [v2.0.0...v2.0.1](https://github.com/coingecko/coingecko-python/compare/v2.0.0...v2.0.1) + +### Bug Fixes + +* Remove orphaned MCP tools ([f85b4af](https://github.com/coingecko/coingecko-python/commit/f85b4af2fbddd5e30ba43f658f56ccf49c245239)) + ## 2.0.0 (2026-04-30) Full Changelog: [v1.14.2...v2.0.0](https://github.com/coingecko/coingecko-python/compare/v1.14.2...v2.0.0) diff --git a/pyproject.toml b/pyproject.toml index 06f009d..c63d2c8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "coingecko_sdk" -version = "2.0.0" +version = "2.0.1" description = "The official Python library for the coingecko API" dynamic = ["readme"] license = "Apache-2.0" diff --git a/src/coingecko_sdk/_version.py b/src/coingecko_sdk/_version.py index c286659..7a2b6d2 100644 --- a/src/coingecko_sdk/_version.py +++ b/src/coingecko_sdk/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "coingecko_sdk" -__version__ = "2.0.0" # x-release-please-version +__version__ = "2.0.1" # x-release-please-version diff --git a/src/coingecko_sdk/types/coins/category_get_list_response.py b/src/coingecko_sdk/types/coins/category_get_list_response.py index 3dcf342..48c9d86 100644 --- a/src/coingecko_sdk/types/coins/category_get_list_response.py +++ b/src/coingecko_sdk/types/coins/category_get_list_response.py @@ -1,15 +1,19 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -from typing import Optional +from typing import List, Optional +from typing_extensions import TypeAlias from ..._models import BaseModel -__all__ = ["CategoryGetListResponse"] +__all__ = ["CategoryGetListResponse", "CategoryGetListResponseItem"] -class CategoryGetListResponse(BaseModel): +class CategoryGetListResponseItem(BaseModel): category_id: Optional[str] = None """category ID""" name: Optional[str] = None """category name""" + + +CategoryGetListResponse: TypeAlias = List[CategoryGetListResponseItem] diff --git a/src/coingecko_sdk/types/coins/category_get_response.py b/src/coingecko_sdk/types/coins/category_get_response.py index 8470832..1d289dd 100644 --- a/src/coingecko_sdk/types/coins/category_get_response.py +++ b/src/coingecko_sdk/types/coins/category_get_response.py @@ -1,13 +1,14 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. from typing import List, Optional +from typing_extensions import TypeAlias from ..._models import BaseModel -__all__ = ["CategoryGetResponse"] +__all__ = ["CategoryGetResponse", "CategoryGetResponseItem"] -class CategoryGetResponse(BaseModel): +class CategoryGetResponseItem(BaseModel): id: Optional[str] = None """category ID""" @@ -34,3 +35,6 @@ class CategoryGetResponse(BaseModel): volume_24h: Optional[float] = None """category volume in 24 hours""" + + +CategoryGetResponse: TypeAlias = List[CategoryGetResponseItem] diff --git a/src/coingecko_sdk/types/derivative_get_response.py b/src/coingecko_sdk/types/derivative_get_response.py index 2038c62..81cd78a 100644 --- a/src/coingecko_sdk/types/derivative_get_response.py +++ b/src/coingecko_sdk/types/derivative_get_response.py @@ -1,13 +1,14 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -from typing import Optional +from typing import List, Optional +from typing_extensions import TypeAlias from .._models import BaseModel -__all__ = ["DerivativeGetResponse"] +__all__ = ["DerivativeGetResponse", "DerivativeGetResponseItem"] -class DerivativeGetResponse(BaseModel): +class DerivativeGetResponseItem(BaseModel): basis: Optional[float] = None """difference of derivative price and index price""" @@ -48,3 +49,6 @@ class DerivativeGetResponse(BaseModel): volume_24h: Optional[float] = None """derivative volume in 24 hours""" + + +DerivativeGetResponse: TypeAlias = List[DerivativeGetResponseItem] diff --git a/src/coingecko_sdk/types/derivatives/exchange_get_list_response.py b/src/coingecko_sdk/types/derivatives/exchange_get_list_response.py index 708a395..dad93ce 100644 --- a/src/coingecko_sdk/types/derivatives/exchange_get_list_response.py +++ b/src/coingecko_sdk/types/derivatives/exchange_get_list_response.py @@ -1,15 +1,19 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -from typing import Optional +from typing import List, Optional +from typing_extensions import TypeAlias from ..._models import BaseModel -__all__ = ["ExchangeGetListResponse"] +__all__ = ["ExchangeGetListResponse", "ExchangeGetListResponseItem"] -class ExchangeGetListResponse(BaseModel): +class ExchangeGetListResponseItem(BaseModel): id: Optional[str] = None """derivatives exchange ID""" name: Optional[str] = None """derivatives exchange name""" + + +ExchangeGetListResponse: TypeAlias = List[ExchangeGetListResponseItem] diff --git a/src/coingecko_sdk/types/derivatives/exchange_get_response.py b/src/coingecko_sdk/types/derivatives/exchange_get_response.py index c086d2d..87dd82c 100644 --- a/src/coingecko_sdk/types/derivatives/exchange_get_response.py +++ b/src/coingecko_sdk/types/derivatives/exchange_get_response.py @@ -1,13 +1,14 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -from typing import Optional +from typing import List, Optional +from typing_extensions import TypeAlias from ..._models import BaseModel -__all__ = ["ExchangeGetResponse"] +__all__ = ["ExchangeGetResponse", "ExchangeGetResponseItem"] -class ExchangeGetResponse(BaseModel): +class ExchangeGetResponseItem(BaseModel): id: Optional[str] = None """derivatives exchange ID""" @@ -40,3 +41,6 @@ class ExchangeGetResponse(BaseModel): year_established: Optional[float] = None """derivatives exchange established year""" + + +ExchangeGetResponse: TypeAlias = List[ExchangeGetResponseItem] diff --git a/src/coingecko_sdk/types/exchange_get_response.py b/src/coingecko_sdk/types/exchange_get_response.py index a21ac31..6deaed4 100644 --- a/src/coingecko_sdk/types/exchange_get_response.py +++ b/src/coingecko_sdk/types/exchange_get_response.py @@ -1,13 +1,14 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -from typing import Optional +from typing import List, Optional +from typing_extensions import TypeAlias from .._models import BaseModel -__all__ = ["ExchangeGetResponse"] +__all__ = ["ExchangeGetResponse", "ExchangeGetResponseItem"] -class ExchangeGetResponse(BaseModel): +class ExchangeGetResponseItem(BaseModel): id: Optional[str] = None """exchange ID""" @@ -40,3 +41,6 @@ class ExchangeGetResponse(BaseModel): year_established: Optional[float] = None """exchange established year""" + + +ExchangeGetResponse: TypeAlias = List[ExchangeGetResponseItem] diff --git a/src/coingecko_sdk/types/nft_get_list_response.py b/src/coingecko_sdk/types/nft_get_list_response.py index d7d55e6..37d0f7d 100644 --- a/src/coingecko_sdk/types/nft_get_list_response.py +++ b/src/coingecko_sdk/types/nft_get_list_response.py @@ -1,13 +1,14 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -from typing import Optional +from typing import List, Optional +from typing_extensions import TypeAlias from .._models import BaseModel -__all__ = ["NFTGetListResponse"] +__all__ = ["NFTGetListResponse", "NFTGetListResponseItem"] -class NFTGetListResponse(BaseModel): +class NFTGetListResponseItem(BaseModel): id: Optional[str] = None """NFT collection ID""" @@ -22,3 +23,6 @@ class NFTGetListResponse(BaseModel): symbol: Optional[str] = None """NFT collection symbol""" + + +NFTGetListResponse: TypeAlias = List[NFTGetListResponseItem] diff --git a/src/coingecko_sdk/types/onchain/networks/pools/info_get_response.py b/src/coingecko_sdk/types/onchain/networks/pools/info_get_response.py index 3e68fb0..5343ac4 100644 --- a/src/coingecko_sdk/types/onchain/networks/pools/info_get_response.py +++ b/src/coingecko_sdk/types/onchain/networks/pools/info_get_response.py @@ -33,13 +33,13 @@ class DataDataAttributesGtScoreDetails(BaseModel): class DataDataAttributesHoldersDistributionPercentage(BaseModel): - dist_11_30: Optional[float] = FieldInfo(alias="11_30", default=None) + dist_11_30: Optional[str] = FieldInfo(alias="11_30", default=None) - dist_31_50: Optional[float] = FieldInfo(alias="31_50", default=None) + dist_31_50: Optional[str] = FieldInfo(alias="31_50", default=None) - rest: Optional[float] = None + rest: Optional[str] = None - top_10: Optional[float] = None + top_10: Optional[str] = None class DataDataAttributesHolders(BaseModel): diff --git a/src/coingecko_sdk/types/onchain/networks/tokens/info_get_response.py b/src/coingecko_sdk/types/onchain/networks/tokens/info_get_response.py index b8c5218..f0960bc 100644 --- a/src/coingecko_sdk/types/onchain/networks/tokens/info_get_response.py +++ b/src/coingecko_sdk/types/onchain/networks/tokens/info_get_response.py @@ -30,13 +30,13 @@ class DataAttributesGtScoreDetails(BaseModel): class DataAttributesHoldersDistributionPercentage(BaseModel): - dist_11_30: Optional[float] = FieldInfo(alias="11_30", default=None) + dist_11_30: Optional[str] = FieldInfo(alias="11_30", default=None) - dist_31_50: Optional[float] = FieldInfo(alias="31_50", default=None) + dist_31_50: Optional[str] = FieldInfo(alias="31_50", default=None) - rest: Optional[float] = None + rest: Optional[str] = None - top_10: Optional[float] = None + top_10: Optional[str] = None class DataAttributesHolders(BaseModel): diff --git a/tests/api_resources/exchanges/test_volume_chart.py b/tests/api_resources/exchanges/test_volume_chart.py index 3fe01cf..488ea19 100644 --- a/tests/api_resources/exchanges/test_volume_chart.py +++ b/tests/api_resources/exchanges/test_volume_chart.py @@ -71,8 +71,8 @@ def test_path_params_get(self, client: Coingecko) -> None: def test_method_get_range(self, client: Coingecko) -> None: volume_chart = client.exchanges.volume_chart.get_range( id="id", - from_=0, - to=0, + from_=1672531200, + to=1675123200, ) assert_matches_type(VolumeChartGetRangeResponse, volume_chart, path=["response"]) @@ -81,8 +81,8 @@ def test_method_get_range(self, client: Coingecko) -> None: def test_raw_response_get_range(self, client: Coingecko) -> None: response = client.exchanges.volume_chart.with_raw_response.get_range( id="id", - from_=0, - to=0, + from_=1672531200, + to=1675123200, ) assert response.is_closed is True @@ -95,8 +95,8 @@ def test_raw_response_get_range(self, client: Coingecko) -> None: def test_streaming_response_get_range(self, client: Coingecko) -> None: with client.exchanges.volume_chart.with_streaming_response.get_range( id="id", - from_=0, - to=0, + from_=1672531200, + to=1675123200, ) as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -112,8 +112,8 @@ def test_path_params_get_range(self, client: Coingecko) -> None: with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"): client.exchanges.volume_chart.with_raw_response.get_range( id="", - from_=0, - to=0, + from_=1672531200, + to=1675123200, ) @@ -173,8 +173,8 @@ async def test_path_params_get(self, async_client: AsyncCoingecko) -> None: async def test_method_get_range(self, async_client: AsyncCoingecko) -> None: volume_chart = await async_client.exchanges.volume_chart.get_range( id="id", - from_=0, - to=0, + from_=1672531200, + to=1675123200, ) assert_matches_type(VolumeChartGetRangeResponse, volume_chart, path=["response"]) @@ -183,8 +183,8 @@ async def test_method_get_range(self, async_client: AsyncCoingecko) -> None: async def test_raw_response_get_range(self, async_client: AsyncCoingecko) -> None: response = await async_client.exchanges.volume_chart.with_raw_response.get_range( id="id", - from_=0, - to=0, + from_=1672531200, + to=1675123200, ) assert response.is_closed is True @@ -197,8 +197,8 @@ async def test_raw_response_get_range(self, async_client: AsyncCoingecko) -> Non async def test_streaming_response_get_range(self, async_client: AsyncCoingecko) -> None: async with async_client.exchanges.volume_chart.with_streaming_response.get_range( id="id", - from_=0, - to=0, + from_=1672531200, + to=1675123200, ) as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -214,6 +214,6 @@ async def test_path_params_get_range(self, async_client: AsyncCoingecko) -> None with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"): await async_client.exchanges.volume_chart.with_raw_response.get_range( id="", - from_=0, - to=0, + from_=1672531200, + to=1675123200, )