def test_snake_case_from_pascal_with_acronyms(): assert utils.snake_case("HTTPResponse") == "http_response" assert utils.snake_case( "APIClientHTTPResponse") == "api_client_http_response" assert utils.snake_case( "OAuthClientHTTPResponse") == "o_auth_client_http_response" assert utils.snake_case("S3Config") == "s3_config"
def _build_api(self) -> None: # Generate Client client_path = self.package_dir / "client.py" client_template = self.env.get_template("client.pyi") client_path.write_text(client_template.render()) # Generate endpoints api_dir = self.package_dir / "api" api_dir.mkdir() api_init = api_dir / "__init__.py" api_init.write_text( '""" Contains synchronous methods for accessing the API """') async_api_dir = self.package_dir / "async_api" async_api_dir.mkdir() async_api_init = async_api_dir / "__init__.py" async_api_init.write_text( '""" Contains async methods for accessing the API """') api_errors = self.package_dir / "errors.py" errors_template = self.env.get_template("errors.pyi") api_errors.write_text(errors_template.render()) endpoint_template = self.env.get_template("endpoint_module.pyi") async_endpoint_template = self.env.get_template( "async_endpoint_module.pyi") for tag, collection in self.openapi.endpoint_collections_by_tag.items( ): tag = utils.snake_case(tag) module_path = api_dir / f"{tag}.py" module_path.write_text( endpoint_template.render(collection=collection)) async_module_path = async_api_dir / f"{tag}.py" async_module_path.write_text( async_endpoint_template.render(collection=collection))
def _build_api(self) -> None: # Generate Client client_path = self.package_dir / "client.py" client_template = self.env.get_template("client.pyi") client_path.write_text(client_template.render()) # Generate endpoints api_dir = self.package_dir / "api" api_dir.mkdir() api_init = api_dir / "__init__.py" api_init.write_text('""" Contains methods for accessing the API """') endpoint_template = self.env.get_template("endpoint_module.pyi") for tag, collection in self.openapi.endpoint_collections_by_tag.items(): tag = utils.snake_case(tag) tag_dir = api_dir / tag tag_dir.mkdir() (tag_dir / "__init__.py").touch() for endpoint in collection.endpoints: module_path = tag_dir / f"{snake_case(endpoint.name)}.py" module_path.write_text(endpoint_template.render(endpoint=endpoint))
def test_snake_case_from_camel(): assert utils.snake_case("httpResponseLowerCamel") == "http_response_lower_camel" assert utils.snake_case("connectionID") == "connection_id"
def test_snake_case_from_pascal(): assert utils.snake_case("HttpResponsePascalCase") == "http_response_pascal_case"
def test_snake_case_from_pascal_with_numbers(): assert utils.snake_case("Response200") == "response_200" assert utils.snake_case("Response200WithContent") == "response_200_with_content"
def test_snake_case_uppercase_str(): assert utils.snake_case("HTTP") == "http" assert utils.snake_case("HTTP RESPONSE") == "http_response"
def test_snake_case_from_camel(): assert utils.snake_case( "httpResponseLowerCamel") == "http_response_lower_camel"
def __post_init__(self) -> None: self.python_name = utils.snake_case(self.name)