diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index 51be54c..94bb014 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -17,9 +17,9 @@ jobs: - uses: actions/checkout@v5 - name: Install uv - uses: astral-sh/setup-uv@v6 + uses: astral-sh/setup-uv@v7 with: - version: "0.9.5" + version: "0.9.11" - name: Install dependencies run: uv sync --dev diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 952e0b3..7216b92 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -17,9 +17,9 @@ jobs: - uses: actions/checkout@v5 - name: Install uv - uses: astral-sh/setup-uv@v6 + uses: astral-sh/setup-uv@v7 with: - version: "0.9.5" + version: "0.9.11" - name: Install dependencies run: uv sync --dev diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml deleted file mode 100644 index ad469dc..0000000 --- a/.github/workflows/publish.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: "Publish verda to PyPI" - -on: - release: - types: [published] - -jobs: - deploy: - runs-on: ubuntu-24.04 - - environment: - name: pypi - - permissions: - id-token: write - contents: read - - steps: - - uses: actions/checkout@v5 - - - name: Install uv - uses: astral-sh/setup-uv@v7 - with: - version: "0.9.11" - - - name: Set up Python - run: uv python install - - - name: Build - run: uv build - - # check that basic features work and we didn't miss to include crucial files - - name: Smoke test (wheel) - run: uv run --isolated --no-project --with dist/*.whl --with "responses==0.25.8" tests/smoke.py - - - name: Smoke test (source distribution) - run: uv run --isolated --no-project --with dist/*.tar.gz --with "responses==0.25.8" tests/smoke.py - - # we use Trusted publishing, no keys necessary: https://docs.astral.sh/uv/guides/integration/github/#publishing-to-pypi - - name: Publish - run: uv publish diff --git a/.github/workflows/publish_datacrunch.yml b/.github/workflows/publish_datacrunch.yml new file mode 100644 index 0000000..74223ff --- /dev/null +++ b/.github/workflows/publish_datacrunch.yml @@ -0,0 +1,56 @@ +name: Publish datacrunch package + +on: + release: + types: [published] + +jobs: + deploy: + runs-on: ubuntu-24.04 + + environment: + name: pypi + + permissions: + id-token: write + contents: read + + steps: + - uses: actions/checkout@v5 + + - name: Install uv + uses: astral-sh/setup-uv@v7 + with: + version: "0.9.11" + + - name: Set up Python + run: uv python install + + - name: Sync datacrunch version and dependency to verda + run: | + # read version from top-level project + VERSION=$(uv version --short --package verda) + echo "Syncing datacrunch to verda==$VERSION" + + uv version --package datacrunch "$VERSION" + uv add --package datacrunch "verda==$VERSION" + + echo + echo "Resulting pyproject.toml:" + cat datacrunch_compat/pyproject.toml + + - name: Build all packages + run: uv build --all-packages + + - name: Smoke test datacrunch (wheel) + run: uv run --isolated --no-project --with dist/datacrunch-*.whl --with dist/verda-*.whl --with "responses==0.25.8" datacrunch_compat/tests/smoke_datacrunch.py + + - name: Smoke test datacrunch (source distribution) + run: uv run --isolated --no-project --with dist/datacrunch-*.tar.gz --with dist/verda-*.tar.gz --with "responses==0.25.8" datacrunch_compat/tests/smoke_datacrunch.py + + # we don't use Trusted publishing for datacrunch package yet, thus we need secrets + - name: Publish datacrunch + env: + UV_PUBLISH_USERNAME: ${{ secrets.PYPI_USERNAME }} + UV_PUBLISH_PASSWORD: ${{ secrets.PYPI_PASSWORD }} + run: uv publish dist/datacrunch-* diff --git a/.github/workflows/publish_verda.yml b/.github/workflows/publish_verda.yml new file mode 100644 index 0000000..368b45b --- /dev/null +++ b/.github/workflows/publish_verda.yml @@ -0,0 +1,40 @@ +name: Publish verda package + +on: + release: + types: [published] + +jobs: + deploy: + runs-on: ubuntu-24.04 + + environment: + name: pypi + + permissions: + id-token: write + contents: read + + steps: + - uses: actions/checkout@v5 + + - name: Install uv + uses: astral-sh/setup-uv@v7 + with: + version: "0.9.11" + + - name: Set up Python + run: uv python install + + - name: Build verda + run: uv build + + - name: Smoke test verda (wheel) + run: uv run --isolated --no-project --with dist/verda-*.whl --with "responses==0.25.8" tests/smoke_verda.py + + - name: Smoke test verda (source distribution) + run: uv run --isolated --no-project --with dist/verda-*.tar.gz --with "responses==0.25.8" tests/smoke_verda.py + + # we use Trusted publishing for verda package, no keys necessary: https://docs.astral.sh/uv/guides/integration/github/#publishing-to-pypi + - name: Publish verda package + run: uv publish dist/verda-* diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index 2e24c62..1912e16 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -20,9 +20,9 @@ jobs: - uses: actions/checkout@v5 - name: Install uv - uses: astral-sh/setup-uv@v6 + uses: astral-sh/setup-uv@v7 with: - version: "0.9.5" + version: "0.9.11" python-version: ${{ matrix.python-version }} - name: Set up Python @@ -39,3 +39,8 @@ jobs: uses: codecov/codecov-action@v1 with: fail_ci_if_error: false + + - name: Test datacrunch_compat with pytest + working-directory: datacrunch_compat + run: | + uv run pytest diff --git a/CHANGELOG.md b/CHANGELOG.md index 858745b..aa113ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,11 +5,18 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] + +### Changed + +- `datacrunch` package now imports `verda`, tracking its releases +- Moved `DataCrunchClient` and `.datacrunch` sub-module into compatibility `datacrunch` package + ## [1.17.0] - 2025-11-26 ### Highlights -- `datacrunch` package is now `verda`, because the company [changed the name to Verda](https://verda.com/blog/datacrunch-is-changing-its-name-to-verda). Original `datacrunch` package does not go anywhere and would continue tracking `verda` releases. +- `datacrunch` package is now `verda`, because [DataCrunch company changed its name to Verda](https://verda.com/blog/datacrunch-is-changing-its-name-to-verda). Original `datacrunch` package is deprecated, but it would continue tracking `verda` releases. ### Deprecated @@ -19,7 +26,7 @@ Was: ```shell uv add datacrunch -pip3 install datacrunch +pip install datacrunch ``` ```python @@ -33,7 +40,7 @@ Now: ```shell uv add verda -pip3 install verda +pip install verda ``` ```python diff --git a/README.md b/README.md index 1e3231d..0316b52 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ Verda Public API documentation [is available here](https://api.verda.com/v1/docs ```bash # via pip - pip3 install verda + pip install verda # via uv uv add verda @@ -117,7 +117,7 @@ Create a file in the root directory of the project: ```python # example.py -from verda.verda import VerdaClient +from verda import VerdaClient CLIENT_SECRET = 'secret' CLIENT_ID = 'your-id' diff --git a/datacrunch_compat/README.md b/datacrunch_compat/README.md new file mode 100644 index 0000000..462fbc6 --- /dev/null +++ b/datacrunch_compat/README.md @@ -0,0 +1,5 @@ +# datacrunch is now verda + +This package has been [renamed](https://verda.com/blog/datacrunch-is-changing-its-name-to-verda). Use `pip install verda` or `uv add verda` instead. + +New package: https://pypi.org/project/verda/ diff --git a/datacrunch_compat/datacrunch/__init__.py b/datacrunch_compat/datacrunch/__init__.py new file mode 100644 index 0000000..5ade6ea --- /dev/null +++ b/datacrunch_compat/datacrunch/__init__.py @@ -0,0 +1,53 @@ +# Compatibility layer for deprecated `datacrunch` package + +from verda import ( + InferenceClient, + __version__, + authentication, + balance, + constants, + containers, + exceptions, + helpers, + http_client, + images, + instance_types, + instances, + locations, + ssh_keys, + startup_scripts, + volume_types, + volumes, +) +from verda import VerdaClient as DataCrunchClient + +# For old `from datacrunch import *`` +__all__ = [ + 'DataCrunchClient', + 'InferenceClient', + '__version__', + 'authentication', + 'balance', + 'constants', + 'containers', + 'datacrunch', + 'exceptions', + 'helpers', + 'http_client', + 'images', + 'instance_types', + 'instances', + 'locations', + 'ssh_keys', + 'startup_scripts', + 'volume_types', + 'volumes', +] + +import warnings + +warnings.warn( + 'datacrunch is deprecated; use verda package instead: https://github.com/verda-cloud/sdk-python/blob/master/CHANGELOG.md#1170---2025-11-26', + DeprecationWarning, + stacklevel=2, +) diff --git a/verda/datacrunch.py b/datacrunch_compat/datacrunch/datacrunch.py similarity index 79% rename from verda/datacrunch.py rename to datacrunch_compat/datacrunch/datacrunch.py index 0101c9a..6725866 100644 --- a/verda/datacrunch.py +++ b/datacrunch_compat/datacrunch/datacrunch.py @@ -1,6 +1,6 @@ -# Frozen, minimal compatibility layer for old DataCrunch API +# Compatibility layer for deprecated `datacrunch.datacrunch` package -from verda import DataCrunchClient +from verda import VerdaClient as DataCrunchClient from verda._version import __version__ from verda.authentication.authentication import AuthenticationService from verda.balance.balance import BalanceService @@ -16,6 +16,7 @@ from verda.volume_types.volume_types import VolumeTypesService from verda.volumes.volumes import VolumesService +# for `from datacrunch.datacrunch import *` __all__ = [ 'AuthenticationService', 'BalanceService', @@ -37,7 +38,7 @@ import warnings warnings.warn( - 'datacrunch.datacrunch is deprecated; use `from verda` instead.', + 'datacrunch is deprecated; use verda package instead: https://github.com/verda-cloud/sdk-python/blob/master/CHANGELOG.md#1170---2025-11-26', DeprecationWarning, stacklevel=2, ) diff --git a/datacrunch_compat/pyproject.toml b/datacrunch_compat/pyproject.toml new file mode 100644 index 0000000..0947e13 --- /dev/null +++ b/datacrunch_compat/pyproject.toml @@ -0,0 +1,46 @@ +[project] +name = "datacrunch" +version = "0.0.0" # version will be set by .github/workflows/publish.yml before release +description = "datacrunch is now verda" +readme = "README.md" +requires-python = ">=3.10" + +authors = [{ name = "Verda Cloud Oy", email = "info@verda.com" }] + +classifiers = [ + "Development Status :: 7 - Inactive", + "Intended Audience :: Developers", + "License :: OSI Approved :: MIT License", + "Natural Language :: English", + "Operating System :: OS Independent", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", +] + +[project.urls] +Homepage = "https://github.com/verda-cloud" +Documentation = "https://datacrunch-python.readthedocs.io/" +Repository = "https://github.com/verda-cloud/sdk-python" +Changelog = "https://github.com/verda-cloud/sdk-python/blob/master/CHANGELOG.md" + +[build-system] +requires = ["uv_build>=0.9.5,<0.10.0"] +build-backend = "uv_build" + +[tool.uv.build-backend] +module-name = "datacrunch" +module-root = "" + +[tool.uv.sources] +verda = { workspace = true } + +[dependency-groups] +dev = [ + "pytest>=8.1,<9", + "pytest-responses>=0.5.1", + "responses>=0.25.8", +] diff --git a/datacrunch_compat/tests/smoke_datacrunch.py b/datacrunch_compat/tests/smoke_datacrunch.py new file mode 100644 index 0000000..2f313b7 --- /dev/null +++ b/datacrunch_compat/tests/smoke_datacrunch.py @@ -0,0 +1,28 @@ +import datacrunch +import responses +from datacrunch import DataCrunchClient + +BASE_URL = 'https://example.com' + + +@responses.activate() +def main(): + responses.add( + responses.POST, + f'{BASE_URL}/oauth2/token', + json={ + 'access_token': 'dummy', + 'token_type': 'Bearer', + 'refresh_token': 'dummy', + 'scope': 'fullAccess', + 'expires_in': 3600, + }, + status=200, + ) + + client = DataCrunchClient('id', 'secret', BASE_URL) + assert client.constants.base_url == BASE_URL + + +if __name__ == '__main__': + main() diff --git a/tests/unit_tests/test_datacrunch.py b/datacrunch_compat/tests/test_datacrunch.py similarity index 67% rename from tests/unit_tests/test_datacrunch.py rename to datacrunch_compat/tests/test_datacrunch.py index 9d13464..7755fa2 100644 --- a/tests/unit_tests/test_datacrunch.py +++ b/datacrunch_compat/tests/test_datacrunch.py @@ -18,27 +18,24 @@ def reset_verda_datacrunch(): # Ensure this module gets freshly imported in each test. Python normally caches imports, # which prevents module-level DeprecationWarnings from firing more than once. - sys.modules.pop('verda.datacrunch', None) + sys.modules.pop('datacrunch.datacrunch', None) + sys.modules.pop('datacrunch', None) def test_datacrunch_client_deprecation(): - from verda import DataCrunchClient + with pytest.warns(DeprecationWarning, match='datacrunch is deprecated'): + from datacrunch import DataCrunchClient responses.add(responses.POST, BASE_URL + '/oauth2/token', json=response_json, status=200) - - with pytest.warns(DeprecationWarning, match='DataCrunchClient is deprecated'): - client = DataCrunchClient('XXXXXXXXXXXXXX', 'XXXXXXXXXXXXXX', BASE_URL) - + client = DataCrunchClient('XXXXXXXXXXXXXX', 'XXXXXXXXXXXXXX', BASE_URL) assert client.constants.base_url == BASE_URL -@pytest.mark.filterwarnings('ignore:DataCrunchClient is deprecated') def test_datacrunch_module_deprecation(): - responses.add(responses.POST, BASE_URL + '/oauth2/token', json=response_json, status=200) - - with pytest.warns(DeprecationWarning, match='datacrunch.datacrunch is deprecated'): - from verda.datacrunch import DataCrunchClient + with pytest.warns(DeprecationWarning, match='datacrunch is deprecated'): + from datacrunch.datacrunch import DataCrunchClient + responses.add(responses.POST, BASE_URL + '/oauth2/token', json=response_json, status=200) client = DataCrunchClient('XXXXXXXXXXXXXX', 'XXXXXXXXXXXXXX', BASE_URL) assert client.constants.base_url == BASE_URL @@ -46,8 +43,8 @@ def test_datacrunch_module_deprecation(): def test_datacrunch_constants_module(): # Test that old re-exports in datacrunch.datacrunch (sub)module still work, but warn - with pytest.warns(DeprecationWarning, match='datacrunch.datacrunch is deprecated'): - from verda.datacrunch import Constants + with pytest.warns(DeprecationWarning, match='datacrunch is deprecated'): + from datacrunch.datacrunch import Constants constants = Constants('url', 'v1') diff --git a/docs/source/installation.rst b/docs/source/installation.rst index 869c2ef..7e16462 100644 --- a/docs/source/installation.rst +++ b/docs/source/installation.rst @@ -6,7 +6,7 @@ Stable Release Use `pip (Package manager for python) `_ to install the latest stable release:: - pip3 install verda + pip install verda Install from source ------------------- diff --git a/pyproject.toml b/pyproject.toml index 9e7334a..a43dd0a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,10 +26,10 @@ dependencies = ["requests>=2.25.1,<3", "dataclasses_json>=0.6.7"] [dependency-groups] dev = [ "pytest-cov>=2.10.1,<3", - "pytest-responses>=0.4.0,<1", + "pytest-responses>=0.5.1", "pytest>=8.1,<9", "python-dotenv>=1.1.1", - "responses>=0.12.1,<1", + "responses>=0.25.8", "ruff>=0.14.2", ] @@ -37,7 +37,7 @@ dev = [ Homepage = "https://github.com/verda-cloud" Documentation = "https://datacrunch-python.readthedocs.io/" Repository = "https://github.com/verda-cloud/sdk-python" -Changelog = "https://datacrunch-python.readthedocs.io/en/latest/changelog.html" +Changelog = "https://github.com/verda-cloud/sdk-python/blob/master/CHANGELOG.md" [build-system] requires = ["uv_build>=0.9.5,<0.10.0"] @@ -47,6 +47,9 @@ build-backend = "uv_build" module-name = "verda" module-root = "" +[tool.uv.workspace] +members = ["datacrunch_compat"] + [tool.ruff] line-length = 100 @@ -81,7 +84,7 @@ pydocstyle.convention = "google" ignore = ["F401", "B006", "D100", "D105", "D107"] [tool.ruff.lint.per-file-ignores] -"{tests,examples}/*" = ["D"] +"{tests,examples,datacrunch_compat/tests}/*" = ["D"] "__init__.py" = ["D104"] [tool.ruff.format] diff --git a/tests/integration_tests/conftest.py b/tests/integration_tests/conftest.py index e557734..3f695ab 100644 --- a/tests/integration_tests/conftest.py +++ b/tests/integration_tests/conftest.py @@ -3,7 +3,7 @@ import pytest from dotenv import load_dotenv -from verda.verda import VerdaClient +from verda import VerdaClient """ Make sure to run the server and the account has enough balance before running the tests diff --git a/tests/integration_tests/test_instances.py b/tests/integration_tests/test_instances.py index 3f50b46..d7ec1b7 100644 --- a/tests/integration_tests/test_instances.py +++ b/tests/integration_tests/test_instances.py @@ -2,8 +2,8 @@ import pytest +from verda import VerdaClient from verda.constants import Locations -from verda.verda import VerdaClient IN_GITHUB_ACTIONS = os.getenv('GITHUB_ACTIONS') == 'true' diff --git a/tests/integration_tests/test_locations.py b/tests/integration_tests/test_locations.py index 4b04c4d..679b320 100644 --- a/tests/integration_tests/test_locations.py +++ b/tests/integration_tests/test_locations.py @@ -2,8 +2,8 @@ import pytest +from verda import VerdaClient from verda.constants import Locations -from verda.verda import VerdaClient IN_GITHUB_ACTIONS = os.getenv('GITHUB_ACTIONS') == 'true' diff --git a/tests/integration_tests/test_volumes.py b/tests/integration_tests/test_volumes.py index bc02dab..d37d9c6 100644 --- a/tests/integration_tests/test_volumes.py +++ b/tests/integration_tests/test_volumes.py @@ -3,8 +3,8 @@ import pytest +from verda import VerdaClient from verda.constants import Locations, VolumeStatus, VolumeTypes -from verda.verda import VerdaClient IN_GITHUB_ACTIONS = os.getenv('GITHUB_ACTIONS') == 'true' diff --git a/tests/smoke.py b/tests/smoke_verda.py similarity index 100% rename from tests/smoke.py rename to tests/smoke_verda.py diff --git a/tests/unit_tests/test_client.py b/tests/unit_tests/test_client.py index 845c674..1296162 100644 --- a/tests/unit_tests/test_client.py +++ b/tests/unit_tests/test_client.py @@ -1,8 +1,8 @@ import pytest import responses # https://github.com/getsentry/responses +from verda import VerdaClient from verda.exceptions import APIException -from verda.verda import VerdaClient BASE_URL = 'https://api.example.com/v1' diff --git a/uv.lock b/uv.lock index 24e8db0..02c0811 100644 --- a/uv.lock +++ b/uv.lock @@ -2,6 +2,12 @@ version = 1 revision = 3 requires-python = ">=3.10" +[manifest] +members = [ + "datacrunch", + "verda", +] + [[package]] name = "certifi" version = "2024.8.30" @@ -161,6 +167,27 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/c3/be/d0d44e092656fe7a06b55e6103cbce807cdbdee17884a5367c68c9860853/dataclasses_json-0.6.7-py3-none-any.whl", hash = "sha256:0dbf33f26c8d5305befd61b39d2b3414e8a407bedc2834dea9b8d642666fb40a", size = 28686, upload-time = "2024-06-09T16:20:16.715Z" }, ] +[[package]] +name = "datacrunch" +version = "0.0.0" +source = { editable = "datacrunch_compat" } + +[package.dev-dependencies] +dev = [ + { name = "pytest" }, + { name = "pytest-responses" }, + { name = "responses" }, +] + +[package.metadata] + +[package.metadata.requires-dev] +dev = [ + { name = "pytest", specifier = ">=8.1,<9" }, + { name = "pytest-responses", specifier = ">=0.5.1" }, + { name = "responses", specifier = ">=0.25.8" }, +] + [[package]] name = "exceptiongroup" version = "1.3.1" @@ -353,16 +380,16 @@ wheels = [ [[package]] name = "responses" -version = "0.25.3" +version = "0.25.8" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pyyaml" }, { name = "requests" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/67/24/1d67c8974daa502e860b4a5b57ad6de0d7dbc0b1160ef7148189a24a40e1/responses-0.25.3.tar.gz", hash = "sha256:617b9247abd9ae28313d57a75880422d55ec63c29d33d629697590a034358dba", size = 77798, upload-time = "2024-06-14T16:32:58.41Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0e/95/89c054ad70bfef6da605338b009b2e283485835351a9935c7bfbfaca7ffc/responses-0.25.8.tar.gz", hash = "sha256:9374d047a575c8f781b94454db5cab590b6029505f488d12899ddb10a4af1cf4", size = 79320, upload-time = "2025-08-08T19:01:46.709Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/12/24/93293d0be0db9da1ed8dfc5e6af700fdd40e8f10a928704dd179db9f03c1/responses-0.25.3-py3-none-any.whl", hash = "sha256:521efcbc82081ab8daa588e08f7e8a64ce79b91c39f6e62199b19159bea7dbcb", size = 55238, upload-time = "2024-06-14T16:32:55.758Z" }, + { url = "https://files.pythonhosted.org/packages/1c/4c/cc276ce57e572c102d9542d383b2cfd551276581dc60004cb94fe8774c11/responses-0.25.8-py3-none-any.whl", hash = "sha256:0c710af92def29c8352ceadff0c3fe340ace27cf5af1bbe46fb71275bcd2831c", size = 34769, upload-time = "2025-08-08T19:01:45.018Z" }, ] [[package]] @@ -509,8 +536,8 @@ requires-dist = [ dev = [ { name = "pytest", specifier = ">=8.1,<9" }, { name = "pytest-cov", specifier = ">=2.10.1,<3" }, - { name = "pytest-responses", specifier = ">=0.4.0,<1" }, + { name = "pytest-responses", specifier = ">=0.5.1" }, { name = "python-dotenv", specifier = ">=1.1.1" }, - { name = "responses", specifier = ">=0.12.1,<1" }, + { name = "responses", specifier = ">=0.25.8" }, { name = "ruff", specifier = ">=0.14.2" }, ] diff --git a/verda/__init__.py b/verda/__init__.py index d666f6f..92f0316 100644 --- a/verda/__init__.py +++ b/verda/__init__.py @@ -1,22 +1,4 @@ -import warnings - +from verda._verda import VerdaClient from verda._version import __version__ -from verda.verda import VerdaClient - - -class _DataCrunchClientAlias: - def __call__(self, *args, **kwargs): - warnings.warn( - 'DataCrunchClient is deprecated; use VerdaClient instead.', - DeprecationWarning, - stacklevel=2, - ) - return VerdaClient(*args, **kwargs) - - -# creates a callable that behaves like the class -DataCrunchClient = _DataCrunchClientAlias() -DataCrunchClient.__name__ = 'DataCrunchClient' -DataCrunchClient.__doc__ = VerdaClient.__doc__ -__all__ = ['DataCrunchClient', 'VerdaClient', '__version__'] +__all__ = ['VerdaClient'] diff --git a/verda/verda.py b/verda/_verda.py similarity index 100% rename from verda/verda.py rename to verda/_verda.py