You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by pa...@apache.org on 2023/06/16 01:47:41 UTC

[arrow-nanoarrow] branch main updated: chore(python): Use src/ layout for python package (#234)

This is an automated email from the ASF dual-hosted git repository.

paleolimbot pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-nanoarrow.git


The following commit(s) were added to refs/heads/main by this push:
     new f92eb6a  chore(python): Use src/ layout for python package (#234)
f92eb6a is described below

commit f92eb6a153c16845b57dd4c3e105f22a52450f0c
Author: Joris Van den Bossche <jo...@gmail.com>
AuthorDate: Fri Jun 16 03:47:37 2023 +0200

    chore(python): Use src/ layout for python package (#234)
    
    Follow-up on https://github.com/apache/arrow-nanoarrow/pull/117, moving
    back to a src layout
    (https://packaging.python.org/en/latest/discussions/src-layout-vs-flat-layout/)
---
 .github/workflows/python.yaml          |  3 ++-
 python/.gitignore                      |  8 ++++----
 python/MANIFEST.in                     |  6 +++---
 python/bootstrap.py                    | 14 +++++++-------
 python/setup.py                        |  6 +++---
 python/{ => src}/nanoarrow/__init__.py |  0
 python/{ => src}/nanoarrow/_lib.pyx    |  0
 python/{ => src}/nanoarrow/lib.py      |  0
 8 files changed, 19 insertions(+), 18 deletions(-)

diff --git a/.github/workflows/python.yaml b/.github/workflows/python.yaml
index 4b599f7..156b499 100644
--- a/.github/workflows/python.yaml
+++ b/.github/workflows/python.yaml
@@ -74,10 +74,11 @@ jobs:
           pushd python
 
           # Build with Cython + gcc coverage options
+          pip install -e .
           NANOARROW_PYTHON_COVERAGE=1 python setup.py build_ext --inplace
 
           # Run tests + coverage.py (generates .coverage + coverage.xml files)
-          python -m pytest --cov ./nanoarrow
+          python -m pytest --cov ./src/nanoarrow
           python -m coverage xml
 
       - name: Upload coverage to codecov
diff --git a/python/.gitignore b/python/.gitignore
index b372452..8abd5d0 100644
--- a/python/.gitignore
+++ b/python/.gitignore
@@ -16,10 +16,10 @@
 # specific language governing permissions and limitations
 # under the License.
 
-nanoarrow/nanoarrow.c
-nanoarrow/nanoarrow.h
-nanoarrow/nanoarrow_c.pxd
-nanoarrow/*.c
+src/nanoarrow/nanoarrow.c
+src/nanoarrow/nanoarrow.h
+src/nanoarrow/nanoarrow_c.pxd
+src/nanoarrow/*.c
 
 # Byte-compiled / optimized / DLL files
 __pycache__/
diff --git a/python/MANIFEST.in b/python/MANIFEST.in
index 93ed2fd..9fc2937 100644
--- a/python/MANIFEST.in
+++ b/python/MANIFEST.in
@@ -16,6 +16,6 @@
 # under the License.
 
 exclude bootstrap.py
-include nanoarrow/nanoarrow.c
-include nanoarrow/nanoarrow.h
-include nanoarrow/nanoarrow_c.pxd
+include src/nanoarrow/nanoarrow.c
+include src/nanoarrow/nanoarrow.h
+include src/nanoarrow/nanoarrow_c.pxd
diff --git a/python/bootstrap.py b/python/bootstrap.py
index 39b4fd9..cf149ef 100644
--- a/python/bootstrap.py
+++ b/python/bootstrap.py
@@ -145,8 +145,8 @@ def copy_or_generate_nanoarrow_c():
     this_dir = os.path.abspath(os.path.dirname(__file__))
     source_dir = os.path.dirname(this_dir)
 
-    maybe_nanoarrow_h = os.path.join(this_dir, 'nanoarrow/nanoarrow.h')
-    maybe_nanoarrow_c = os.path.join(this_dir, 'nanoarrow/nanoarrow.c')
+    maybe_nanoarrow_h = os.path.join(this_dir, 'src/nanoarrow/nanoarrow.h')
+    maybe_nanoarrow_c = os.path.join(this_dir, 'src/nanoarrow/nanoarrow.c')
     for f in (maybe_nanoarrow_c, maybe_nanoarrow_h):
         if os.path.exists(f):
             os.unlink(f)
@@ -161,7 +161,7 @@ def copy_or_generate_nanoarrow_c():
             os.mkdir(build_dir)
             os.chdir(build_dir)
             os.system(f'cmake ../.. -DNANOARROW_BUNDLE=ON -DNANOARROW_NAMESPACE=PythonPkg')
-            os.system(f'cmake --install . --prefix=../nanoarrow')
+            os.system(f'cmake --install . --prefix=../src/nanoarrow')
         finally:
             if os.path.exists(build_dir):
                 # Can fail on Windows with permission issues
@@ -176,18 +176,18 @@ def copy_or_generate_nanoarrow_c():
     else:
         raise ValueError('Attempt to build source distribution outside the nanoarrow repo')
 
-    if not os.path.exists(os.path.join(this_dir, 'nanoarrow/nanoarrow.h')):
+    if not os.path.exists(os.path.join(this_dir, 'src/nanoarrow/nanoarrow.h')):
         raise ValueError('Attempt to vendor nanoarrow.c/h failed')
 
-    maybe_nanoarrow_hpp = os.path.join(this_dir, 'nanoarrow/nanoarrow.hpp')
+    maybe_nanoarrow_hpp = os.path.join(this_dir, 'src/nanoarrow/nanoarrow.hpp')
     if os.path.exists(maybe_nanoarrow_hpp):
         os.unlink(maybe_nanoarrow_hpp)
 
 # Runs the pxd generator with some information about the file name
 def generate_nanoarrow_pxd():
      this_dir = os.path.abspath(os.path.dirname(__file__))
-     maybe_nanoarrow_h = os.path.join(this_dir, 'nanoarrow/nanoarrow.h')
-     maybe_nanoarrow_pxd = os.path.join(this_dir, 'nanoarrow/nanoarrow_c.pxd')
+     maybe_nanoarrow_h = os.path.join(this_dir, 'src/nanoarrow/nanoarrow.h')
+     maybe_nanoarrow_pxd = os.path.join(this_dir, 'src/nanoarrow/nanoarrow_c.pxd')
 
      NanoarrowPxdGenerator().generate_nanoarrow_pxd(
         maybe_nanoarrow_h,
diff --git a/python/setup.py b/python/setup.py
index 4222cd8..031b6b3 100644
--- a/python/setup.py
+++ b/python/setup.py
@@ -45,11 +45,11 @@ setup(
     ext_modules=[
         Extension(
             name="nanoarrow._lib",
-            include_dirs=["nanoarrow"],
+            include_dirs=["src/nanoarrow"],
             language="c",
             sources=[
-                "nanoarrow/_lib.pyx",
-                "nanoarrow/nanoarrow.c",
+                "src/nanoarrow/_lib.pyx",
+                "src/nanoarrow/nanoarrow.c",
             ],
             extra_compile_args=coverage_compile_args,
             extra_link_args=coverage_link_args,
diff --git a/python/nanoarrow/__init__.py b/python/src/nanoarrow/__init__.py
similarity index 100%
rename from python/nanoarrow/__init__.py
rename to python/src/nanoarrow/__init__.py
diff --git a/python/nanoarrow/_lib.pyx b/python/src/nanoarrow/_lib.pyx
similarity index 100%
rename from python/nanoarrow/_lib.pyx
rename to python/src/nanoarrow/_lib.pyx
diff --git a/python/nanoarrow/lib.py b/python/src/nanoarrow/lib.py
similarity index 100%
rename from python/nanoarrow/lib.py
rename to python/src/nanoarrow/lib.py