Skip to content

Commit

Permalink
feat(api): manual updates (#357)
Browse files Browse the repository at this point in the history
  • Loading branch information
stainless-app[bot] authored Aug 21, 2024
1 parent 2a4e925 commit 8d01a3e
Show file tree
Hide file tree
Showing 252 changed files with 64 additions and 2 deletions.
Empty file modified .devcontainer/Dockerfile
100644 → 100755
Empty file.
Empty file modified .devcontainer/devcontainer.json
100644 → 100755
Empty file.
Empty file modified .github/workflows/ci.yml
100644 → 100755
Empty file.
Empty file modified .github/workflows/create_asana_task.yaml
100644 → 100755
Empty file.
Empty file modified .github/workflows/publish-pypi.yml
100644 → 100755
Empty file.
Empty file modified .github/workflows/release-doctor.yml
100644 → 100755
Empty file.
Empty file modified .gitignore
100644 → 100755
Empty file.
Empty file modified .python-version
100644 → 100755
Empty file.
Empty file modified .release-please-manifest.json
100644 → 100755
Empty file.
Empty file modified .stats.yml
100644 → 100755
Empty file.
Empty file modified Brewfile
100644 → 100755
Empty file.
Empty file modified CHANGELOG.md
100644 → 100755
Empty file.
Empty file modified CONTRIBUTING.md
100644 → 100755
Empty file.
Empty file modified LICENSE
100644 → 100755
Empty file.
Empty file modified README.md
100644 → 100755
Empty file.
Empty file modified SECURITY.md
100644 → 100755
Empty file.
Empty file modified api.md
100644 → 100755
Empty file.
Empty file modified bin/check-release-environment
100644 → 100755
Empty file.
Empty file modified bin/publish-pypi
100644 → 100755
Empty file.
Empty file modified codegen.log
100644 → 100755
Empty file.
Empty file modified examples/.keep
100644 → 100755
Empty file.
Empty file modified mypy.ini
100644 → 100755
Empty file.
Empty file modified noxfile.py
100644 → 100755
Empty file.
Empty file modified pyproject.toml
100644 → 100755
Empty file.
Empty file modified release-please-config.json
100644 → 100755
Empty file.
Empty file modified requirements-dev.lock
100644 → 100755
Empty file.
Empty file modified requirements.lock
100644 → 100755
Empty file.
3 changes: 3 additions & 0 deletions scripts/test
Original file line number Diff line number Diff line change
Expand Up @@ -54,3 +54,6 @@ fi

echo "==> Running tests"
rye run pytest "$@"

echo "==> Running Pydantic v1 tests"
rye run nox -s test-pydantic-v1 -- "$@"
Empty file modified scripts/utils/ruffen-docs.py
100644 → 100755
Empty file.
Empty file modified src/orb/__init__.py
100644 → 100755
Empty file.
Empty file modified src/orb/_base_client.py
100644 → 100755
Empty file.
Empty file modified src/orb/_client.py
100644 → 100755
Empty file.
Empty file modified src/orb/_compat.py
100644 → 100755
Empty file.
Empty file modified src/orb/_constants.py
100644 → 100755
Empty file.
Empty file modified src/orb/_exceptions.py
100644 → 100755
Empty file.
Empty file modified src/orb/_files.py
100644 → 100755
Empty file.
Empty file modified src/orb/_legacy_response.py
100644 → 100755
Empty file.
2 changes: 2 additions & 0 deletions src/orb/_models.py
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -380,6 +380,8 @@ def is_basemodel(type_: type) -> bool:

def is_basemodel_type(type_: type) -> TypeGuard[type[BaseModel] | type[GenericModel]]:
origin = get_origin(type_) or type_
if not inspect.isclass(origin):
return False
return issubclass(origin, BaseModel) or issubclass(origin, GenericModel)


Expand Down
Empty file modified src/orb/_qs.py
100644 → 100755
Empty file.
Empty file modified src/orb/_resource.py
100644 → 100755
Empty file.
Empty file modified src/orb/_response.py
100644 → 100755
Empty file.
Empty file modified src/orb/_streaming.py
100644 → 100755
Empty file.
Empty file modified src/orb/_types.py
100644 → 100755
Empty file.
Empty file modified src/orb/_utils/__init__.py
100644 → 100755
Empty file.
Empty file modified src/orb/_utils/_logs.py
100644 → 100755
Empty file.
Empty file modified src/orb/_utils/_proxy.py
100644 → 100755
Empty file.
Empty file modified src/orb/_utils/_reflection.py
100644 → 100755
Empty file.
Empty file modified src/orb/_utils/_streams.py
100644 → 100755
Empty file.
Empty file modified src/orb/_utils/_sync.py
100644 → 100755
Empty file.
Empty file modified src/orb/_utils/_transform.py
100644 → 100755
Empty file.
Empty file modified src/orb/_utils/_typing.py
100644 → 100755
Empty file.
Empty file modified src/orb/_utils/_utils.py
100644 → 100755
Empty file.
Empty file modified src/orb/_version.py
100644 → 100755
Empty file.
Empty file modified src/orb/lib/.keep
100644 → 100755
Empty file.
Empty file modified src/orb/pagination.py
100644 → 100755
Empty file.
Empty file modified src/orb/py.typed
100644 → 100755
Empty file.
Empty file modified src/orb/resources/__init__.py
100644 → 100755
Empty file.
Empty file modified src/orb/resources/alerts.py
100644 → 100755
Empty file.
Empty file modified src/orb/resources/coupons/__init__.py
100644 → 100755
Empty file.
Empty file modified src/orb/resources/coupons/coupons.py
100644 → 100755
Empty file.
Empty file modified src/orb/resources/coupons/subscriptions.py
100644 → 100755
Empty file.
Empty file modified src/orb/resources/credit_notes.py
100644 → 100755
Empty file.
Empty file modified src/orb/resources/customers/__init__.py
100644 → 100755
Empty file.
Empty file modified src/orb/resources/customers/balance_transactions.py
100644 → 100755
Empty file.
Empty file modified src/orb/resources/customers/costs.py
100644 → 100755
Empty file.
Empty file modified src/orb/resources/customers/credits/__init__.py
100644 → 100755
Empty file.
Empty file modified src/orb/resources/customers/credits/credits.py
100644 → 100755
Empty file.
Empty file modified src/orb/resources/customers/credits/ledger.py
100644 → 100755
Empty file.
Empty file modified src/orb/resources/customers/credits/top_ups.py
100644 → 100755
Empty file.
Empty file modified src/orb/resources/customers/customers.py
100644 → 100755
Empty file.
Empty file modified src/orb/resources/events/__init__.py
100644 → 100755
Empty file.
Empty file modified src/orb/resources/events/backfills.py
100644 → 100755
Empty file.
Empty file modified src/orb/resources/events/events.py
100644 → 100755
Empty file.
Empty file modified src/orb/resources/invoice_line_items.py
100644 → 100755
Empty file.
Empty file modified src/orb/resources/invoices.py
100644 → 100755
Empty file.
Empty file modified src/orb/resources/items.py
100644 → 100755
Empty file.
Empty file modified src/orb/resources/metrics.py
100644 → 100755
Empty file.
Empty file modified src/orb/resources/plans/__init__.py
100644 → 100755
Empty file.
Empty file modified src/orb/resources/plans/external_plan_id.py
100644 → 100755
Empty file.
Empty file modified src/orb/resources/plans/plans.py
100644 → 100755
Empty file.
Empty file modified src/orb/resources/prices/__init__.py
100644 → 100755
Empty file.
Empty file modified src/orb/resources/prices/external_price_id.py
100644 → 100755
Empty file.
Empty file modified src/orb/resources/prices/prices.py
100644 → 100755
Empty file.
Empty file modified src/orb/resources/subscriptions.py
100644 → 100755
Empty file.
Empty file modified src/orb/resources/top_level.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/__init__.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/alert.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/alert_create_for_customer_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/alert_create_for_external_customer_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/alert_create_for_subscription_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/alert_list_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/alert_update_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/billable_metric.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/coupon.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/coupon_create_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/coupon_list_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/coupons/__init__.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/coupons/subscription_list_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/credit_note.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/credit_note_list_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/customer.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/customer_create_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/customer_list_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/customer_update_by_external_id_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/customer_update_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/customers/__init__.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/customers/balance_transaction_create_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/customers/balance_transaction_create_response.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/customers/balance_transaction_list_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/customers/balance_transaction_list_response.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/customers/cost_list_by_external_id_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/customers/cost_list_by_external_id_response.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/customers/cost_list_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/customers/cost_list_response.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/customers/credit_list_by_external_id_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/customers/credit_list_by_external_id_response.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/customers/credit_list_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/customers/credit_list_response.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/customers/credits/__init__.py
100644 → 100755
Empty file.
Empty file.
Empty file.
Empty file modified src/orb/types/customers/credits/ledger_create_entry_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/customers/credits/ledger_create_entry_response.py
100644 → 100755
Empty file.
Empty file.
Empty file.
Empty file modified src/orb/types/customers/credits/ledger_list_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/customers/credits/ledger_list_response.py
100644 → 100755
Empty file.
Empty file.
Empty file.
Empty file modified src/orb/types/customers/credits/top_up_create_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/customers/credits/top_up_create_response.py
100644 → 100755
Empty file.
Empty file.
Empty file.
Empty file modified src/orb/types/customers/credits/top_up_list_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/customers/credits/top_up_list_response.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/evaluate_price_group.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/event_deprecate_response.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/event_ingest_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/event_ingest_response.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/event_search_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/event_search_response.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/event_update_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/event_update_response.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/events/__init__.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/events/backfill_close_response.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/events/backfill_create_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/events/backfill_create_response.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/events/backfill_fetch_response.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/events/backfill_list_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/events/backfill_list_response.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/events/backfill_revert_response.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/invoice.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/invoice_create_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/invoice_fetch_upcoming_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/invoice_fetch_upcoming_response.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/invoice_line_item_create_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/invoice_line_item_create_response.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/invoice_list_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/invoice_mark_paid_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/invoice_update_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/item.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/item_create_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/item_list_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/item_update_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/metric_create_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/metric_list_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/metric_update_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/plan.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/plan_create_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/plan_list_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/plan_update_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/plans/__init__.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/plans/external_plan_id_update_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/price.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/price_create_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/price_evaluate_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/price_evaluate_response.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/price_list_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/price_update_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/prices/__init__.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/prices/external_price_id_update_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/shared/__init__.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/shared/billing_cycle_relative_date.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/shared/discount.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/shared/pagination_metadata.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/shared_params/__init__.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/shared_params/billing_cycle_relative_date.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/shared_params/discount.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/subscription.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/subscription_cancel_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/subscription_create_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/subscription_fetch_costs_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/subscription_fetch_costs_response.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/subscription_fetch_schedule_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/subscription_fetch_schedule_response.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/subscription_fetch_usage_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/subscription_list_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/subscription_price_intervals_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/subscription_schedule_plan_change_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/subscription_trigger_phase_params.py
100644 → 100755
Empty file.
Empty file.
Empty file modified src/orb/types/subscription_update_fixed_fee_quantity_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/subscription_update_params.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/subscription_usage.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/subscriptions.py
100644 → 100755
Empty file.
Empty file modified src/orb/types/top_level_ping_response.py
100644 → 100755
Empty file.
Empty file modified tests/__init__.py
100644 → 100755
Empty file.
Empty file modified tests/api_resources/__init__.py
100644 → 100755
Empty file.
Empty file modified tests/api_resources/coupons/__init__.py
100644 → 100755
Empty file.
Empty file modified tests/api_resources/coupons/test_subscriptions.py
100644 → 100755
Empty file.
Empty file modified tests/api_resources/customers/__init__.py
100644 → 100755
Empty file.
Empty file modified tests/api_resources/customers/credits/__init__.py
100644 → 100755
Empty file.
Empty file modified tests/api_resources/customers/credits/test_ledger.py
100644 → 100755
Empty file.
Empty file modified tests/api_resources/customers/credits/test_top_ups.py
100644 → 100755
Empty file.
Empty file modified tests/api_resources/customers/test_balance_transactions.py
100644 → 100755
Empty file.
Empty file modified tests/api_resources/customers/test_costs.py
100644 → 100755
Empty file.
Empty file modified tests/api_resources/customers/test_credits.py
100644 → 100755
Empty file.
Empty file modified tests/api_resources/events/__init__.py
100644 → 100755
Empty file.
Empty file modified tests/api_resources/events/test_backfills.py
100644 → 100755
Empty file.
Empty file modified tests/api_resources/plans/__init__.py
100644 → 100755
Empty file.
Empty file modified tests/api_resources/plans/test_external_plan_id.py
100644 → 100755
Empty file.
Empty file modified tests/api_resources/prices/__init__.py
100644 → 100755
Empty file.
Empty file modified tests/api_resources/prices/test_external_price_id.py
100644 → 100755
Empty file.
Empty file modified tests/api_resources/test_alerts.py
100644 → 100755
Empty file.
Empty file modified tests/api_resources/test_coupons.py
100644 → 100755
Empty file.
Empty file modified tests/api_resources/test_credit_notes.py
100644 → 100755
Empty file.
Empty file modified tests/api_resources/test_customers.py
100644 → 100755
Empty file.
Empty file modified tests/api_resources/test_events.py
100644 → 100755
Empty file.
Empty file modified tests/api_resources/test_invoice_line_items.py
100644 → 100755
Empty file.
Empty file modified tests/api_resources/test_invoices.py
100644 → 100755
Empty file.
Empty file modified tests/api_resources/test_items.py
100644 → 100755
Empty file.
Empty file modified tests/api_resources/test_metrics.py
100644 → 100755
Empty file.
Empty file modified tests/api_resources/test_plans.py
100644 → 100755
Empty file.
Empty file modified tests/api_resources/test_prices.py
100644 → 100755
Empty file.
Empty file modified tests/api_resources/test_subscriptions.py
100644 → 100755
Empty file.
Empty file modified tests/api_resources/test_top_level.py
100644 → 100755
Empty file.
Empty file modified tests/conftest.py
100644 → 100755
Empty file.
Empty file modified tests/sample_file.txt
100644 → 100755
Empty file.
Empty file modified tests/test_client.py
100644 → 100755
Empty file.
Empty file modified tests/test_deepcopy.py
100644 → 100755
Empty file.
Empty file modified tests/test_extract_files.py
100644 → 100755
Empty file.
Empty file modified tests/test_files.py
100644 → 100755
Empty file.
22 changes: 21 additions & 1 deletion tests/test_legacy_response.py
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import json
from typing import cast
from typing import Any, Union, cast
from typing_extensions import Annotated

import httpx
Expand Down Expand Up @@ -81,3 +81,23 @@ def test_response_parse_annotated_type(client: Orb) -> None:
)
assert obj.foo == "hello!"
assert obj.bar == 2


class OtherModel(pydantic.BaseModel):
a: str


@pytest.mark.parametrize("client", [False], indirect=True) # loose validation
def test_response_parse_expect_model_union_non_json_content(client: Orb) -> None:
response = LegacyAPIResponse(
raw=httpx.Response(200, content=b"foo", headers={"Content-Type": "application/text"}),
client=client,
stream=False,
stream_cls=None,
cast_to=str,
options=FinalRequestOptions.construct(method="get", url="/foo"),
)

obj = response.parse(to=cast(Any, Union[CustomModel, OtherModel]))
assert isinstance(obj, str)
assert obj == "foo"
Empty file modified tests/test_models.py
100644 → 100755
Empty file.
Empty file modified tests/test_qs.py
100644 → 100755
Empty file.
Empty file modified tests/test_required_args.py
100644 → 100755
Empty file.
39 changes: 38 additions & 1 deletion tests/test_response.py
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import json
from typing import List, cast
from typing import Any, List, Union, cast
from typing_extensions import Annotated

import httpx
Expand Down Expand Up @@ -188,3 +188,40 @@ async def test_async_response_parse_annotated_type(async_client: AsyncOrb) -> No
)
assert obj.foo == "hello!"
assert obj.bar == 2


class OtherModel(BaseModel):
a: str


@pytest.mark.parametrize("client", [False], indirect=True) # loose validation
def test_response_parse_expect_model_union_non_json_content(client: Orb) -> None:
response = APIResponse(
raw=httpx.Response(200, content=b"foo", headers={"Content-Type": "application/text"}),
client=client,
stream=False,
stream_cls=None,
cast_to=str,
options=FinalRequestOptions.construct(method="get", url="/foo"),
)

obj = response.parse(to=cast(Any, Union[CustomModel, OtherModel]))
assert isinstance(obj, str)
assert obj == "foo"


@pytest.mark.asyncio
@pytest.mark.parametrize("async_client", [False], indirect=True) # loose validation
async def test_async_response_parse_expect_model_union_non_json_content(async_client: AsyncOrb) -> None:
response = AsyncAPIResponse(
raw=httpx.Response(200, content=b"foo", headers={"Content-Type": "application/text"}),
client=async_client,
stream=False,
stream_cls=None,
cast_to=str,
options=FinalRequestOptions.construct(method="get", url="/foo"),
)

obj = await response.parse(to=cast(Any, Union[CustomModel, OtherModel]))
assert isinstance(obj, str)
assert obj == "foo"
Empty file modified tests/test_streaming.py
100644 → 100755
Empty file.
Empty file modified tests/test_transform.py
100644 → 100755
Empty file.
Empty file modified tests/test_utils/test_proxy.py
100644 → 100755
Empty file.
Empty file modified tests/test_utils/test_typing.py
100644 → 100755
Empty file.
Empty file modified tests/utils.py
100644 → 100755
Empty file.

0 comments on commit 8d01a3e

Please sign in to comment.