dramaticlly commented on code in PR #4505:
URL: https://github.com/apache/iceberg/pull/4505#discussion_r845625028


##########
python/src/iceberg/catalog/base.py:
##########
@@ -0,0 +1,88 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+from typing import Tuple
+
+import mmh3  # type: ignore
+
+
+class Namespace:
+    """A namespace in a Catalog
+
+    Example:
+        >>> from iceberg.catalog.base import Namespace
+        >>> namespace = Namespace("foo", "bar", "baz")

Review Comment:
   just curious about, for namespace, are we anticipating something like 
`iceberg.datdabase.table` and potentially the 4th level with metadata tables 
such as `partitions` or `files`? or is it being used different?
   
   Trying to see if we shall build some assumptions into length of the 
namespace, too long or too short wont make any sence?



##########
python/tests/catalog/test_catalog_base.py:
##########
@@ -0,0 +1,131 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+import pytest
+
+from iceberg.catalog import base
+
+
+def test_namespace_init():
+    namespace = base.Namespace("foo", "bar", "baz")
+
+    assert namespace.levels == ("foo", "bar", "baz")
+    assert namespace.empty() is False
+    assert namespace.level(0) == "foo"
+    assert namespace.level(1) == "bar"
+    assert namespace.level(2) == "baz"
+    assert hash(namespace) == 1445470134
+    assert len(namespace) == 3
+    assert str(namespace) == "foo.bar.baz"

Review Comment:
   nit: shall we have one for `assert repr(namespace)` as well? 
   
   I do see there's `test_namespace_repr ` below but we also 
had`test_namespace_hash` and we tested hash here :)
   



##########
python/src/iceberg/catalog/base.py:
##########
@@ -0,0 +1,88 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+from typing import Tuple
+
+import mmh3  # type: ignore
+
+
+class Namespace:
+    """A namespace in a Catalog
+
+    Example:
+        >>> from iceberg.catalog.base import Namespace
+        >>> namespace = Namespace("foo", "bar", "baz")
+        >>> print(namespace)
+        foo.bar.baz
+    """
+
+    def __init__(self, *levels: str):
+        self._levels = levels
+        for level in levels:

Review Comment:
   nit: shall we switch to have validation run before the assignment ?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to