@@ -254,7 +254,7 @@ class SchemaOrganization(SchemaOrganizationProtocol):
254254
255255 def __post_init__ (self ) -> None :
256256 if self .name :
257- _check_name (self .name )
257+ _check_org_name (self .name )
258258
259259 async def get_async (
260260 self , * , synapse_client : Optional ["Synapse" ] = None
@@ -826,9 +826,9 @@ class JSONSchema(JSONSchemaProtocol):
826826
827827 def __post_init__ (self ) -> None :
828828 if self .name :
829- _check_name (self .name )
829+ _check_schema_name (self .name )
830830 if self .organization_name :
831- _check_name (self .organization_name )
831+ _check_org_name (self .organization_name )
832832 if self .name and self .organization_name :
833833 self .uri = f"{ self .organization_name } -{ self .name } "
834834 else :
@@ -1313,8 +1313,8 @@ class CreateSchemaRequest(AsynchronousCommunicator):
13131313
13141314 def __post_init__ (self ) -> None :
13151315 self .concrete_type = CREATE_SCHEMA_REQUEST
1316- _check_name (self .name )
1317- _check_name (self .organization_name )
1316+ _check_schema_name (self .name )
1317+ _check_org_name (self .organization_name )
13181318 uri = f"{ self .organization_name } -{ self .name } "
13191319 if self .version :
13201320 self ._check_semantic_version (self .version )
@@ -1428,9 +1428,9 @@ def list_json_schema_organizations(
14281428 return all_orgs
14291429
14301430
1431- def _check_name (name : str ) -> None :
1431+ def _check_org_name (name : str ) -> None :
14321432 """
1433- Checks that the input name is a valid Synapse Organization or JSONSchema name
1433+ Checks that the input name is a valid Synapse Organization
14341434 - Length requirement of 6 ≤ x ≤ 250
14351435 - Names do not contain the string sagebionetworks (case insensitive)
14361436 - May contain periods (each part is separated by periods)
@@ -1449,11 +1449,42 @@ def _check_name(name: str) -> None:
14491449 raise ValueError (f"The name must not contain 'sagebionetworks' : { name } " )
14501450 parts = name .split ("." )
14511451 for part in parts :
1452- if not re .match (r"^([A-Za-z])([A-Za-z]|\d|)*$" , part ):
1452+ if len (part ) == 0 :
1453+ raise ValueError (f"Organization name sections must not be empty: { name } " )
1454+ if not re .match (r"^([A-Za-z])([A-Za-z0-9])*$" , part ):
14531455 raise ValueError (
14541456 (
1455- "Name may be separated by periods, "
1456- "but each part must start with a letter and contain "
1457- f"only letters and numbers: { name } "
1457+ f"Un-allowed characters in organization name: { name } "
1458+ "Organization name may separated into sections by periods. "
1459+ "For example 'my.organization.name'. "
1460+ "Each section must start with a letter and contain only letters and numbers."
1461+ )
1462+ )
1463+
1464+
1465+ def _check_schema_name (name : str ) -> None :
1466+ """
1467+ Checks that the input name is a valid Synapse JSONSchema name
1468+ - May contain periods (each part is separated by periods)
1469+ - Each part must start with a letter
1470+ - Each part contains only letters and numbers
1471+
1472+ Arguments:
1473+ name: The name of the schema to be checked
1474+
1475+ Raises:
1476+ ValueError: When the name isn't valid
1477+ """
1478+ parts = name .split ("." )
1479+ for part in parts :
1480+ if len (part ) == 0 :
1481+ raise ValueError (f"Schema name sections must not be empty: { name } " )
1482+ if not re .match (r"^([A-Za-z])([A-Za-z0-9])*$" , part ):
1483+ raise ValueError (
1484+ (
1485+ f"Un-allowed characters in schema name: { name } "
1486+ "Schema name may separated into sections by periods. "
1487+ "For example 'my.schema.name'. "
1488+ "Each section must start with a letter and contain only letters and numbers."
14581489 )
14591490 )
0 commit comments