diff --git a/.github/workflows/python.yaml b/.github/workflows/python.yaml index 4b599f7ee..156b499e3 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 b3724522b..8abd5d0de 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 93ed2fd0a..9fc293725 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 39b4fd950..cf149ef6d 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 4222cd85d..031b6b394 100644 --- a/python/setup.py +++ b/python/setup.py @@ -45,11 +45,11 @@ 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