From 1e707901a4700290f1db0022218b007150eeed14 Mon Sep 17 00:00:00 2001 From: jgostick Date: Thu, 20 Nov 2025 09:05:20 -0500 Subject: [PATCH 01/11] removing import from pyproject --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 19937a5800..462ea90670 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -95,8 +95,8 @@ dev = [ requires = ["setuptools>=80"] build-backend = "setuptools.build_meta" -[tool.setuptools] -packages = ["openpnm"] +# [tool.setuptools] +# packages = ["openpnm"] [tool.setuptools.dynamic] version = {attr = "openpnm.__version__.__version__"} From 9a2ddea0989c6c0245b9e61a875d996459136ed6 Mon Sep 17 00:00:00 2001 From: jgostick Date: Thu, 20 Nov 2025 21:35:23 -0500 Subject: [PATCH 02/11] Removing the bump-version-dev action which is bit of a pain --- .github/workflows/bump-version-dev.yml | 59 -------------------------- 1 file changed, 59 deletions(-) delete mode 100644 .github/workflows/bump-version-dev.yml diff --git a/.github/workflows/bump-version-dev.yml b/.github/workflows/bump-version-dev.yml deleted file mode 100644 index 43fcf860c9..0000000000 --- a/.github/workflows/bump-version-dev.yml +++ /dev/null @@ -1,59 +0,0 @@ -name: Bump Version (dev) - -on: - push: - branches: - - dev - -jobs: - build: - if: (! contains(github.event.head_commit.message, '[no bump]')) - - name: Bump version - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: '3.9' - - - name: Set env variables - run: | - # The next line is very important, otherwise the line after triggers - # git to track the permission change, which breaks bump2version API (needs clean git folder) - git config core.filemode false - chmod +x .github/workflows/utils.sh - echo "VERSION_FILE=openpnm/__version__.py" >> $GITHUB_ENV - echo "SETUP_CFG_FILE=setup.cfg" >> $GITHUB_ENV - echo "${{ github.event.head_commit.message }}" - - - name: Install dependencies - run: | - pip install bump2version - - - name: Bump version (build) - run: | - source .github/workflows/utils.sh - bump_version build $VERSION_FILE - # Note that we don't want to create a new tag for "builds" - - # - name: Commit files - # run: | - # REPOSITORY=${INPUT_REPOSITORY:-$GITHUB_REPOSITORY} - # remote_repo="https://${GITHUB_ACTOR}:${{ secrets.PUSH_ACTION_TOKEN }}@github.com/${REPOSITORY}.git" - - # git config --local user.email "action@github.com" - # git config --local user.name "GitHub Action" - - # # Commit version bump to dev ([no ci] to avoid infinite loop) - # git commit -m "Bump version number (build) [no ci]" -a - # git push "${remote_repo}" dev - - - name: Commit files - uses: stefanzweifel/git-auto-commit-action@v4 - with: - commit_message: Bump version number (build part) - commit_author: Author From 8d889efbfc8b2a08a0f3a25e0b2a89ecc72c5ca2 Mon Sep 17 00:00:00 2001 From: kgrox Date: Fri, 21 Nov 2025 16:34:23 +0800 Subject: [PATCH 03/11] Optimized _find_trapped_pores and _qupc.py --- openpnm/_skgraph/queries/_qupc.py | 18 ++++- openpnm/algorithms/_invasion_percolation.py | 75 ++++++++------------- 2 files changed, 46 insertions(+), 47 deletions(-) diff --git a/openpnm/_skgraph/queries/_qupc.py b/openpnm/_skgraph/queries/_qupc.py index 4aa5b606d3..7616dd1db7 100644 --- a/openpnm/_skgraph/queries/_qupc.py +++ b/openpnm/_skgraph/queries/_qupc.py @@ -8,6 +8,8 @@ 'qupc_update', 'qupc_compress', 'qupc_reduce', + 'qupc_union', + 'qupc_find', ] @@ -42,6 +44,20 @@ def qupc_reduce(arr): arr[i] = arr[arr[i]] return arr +@njit +def qupc_union(arr, ind, val): + indp=qupc_find(arr, ind) + valp=qupc_find(arr, val) + arr[indp]=valp + return arr + +@njit +def qupc_find(arr, ind): + while arr[ind] != ind: + arr[ind] = arr[arr[ind]] + ind = arr[ind] + return ind + if __name__ == '__main__': a = qupc_initialize(10) @@ -60,4 +76,4 @@ def qupc_reduce(arr): qupc_reduce(a) qupc_compress(a) assert np.all(a == [0, 0, 1, 2, 1, 1, 1, 1, 0, 3]) - print(a) + print(a) \ No newline at end of file diff --git a/openpnm/algorithms/_invasion_percolation.py b/openpnm/algorithms/_invasion_percolation.py index e7060b6041..08a7f1368d 100644 --- a/openpnm/algorithms/_invasion_percolation.py +++ b/openpnm/algorithms/_invasion_percolation.py @@ -6,7 +6,7 @@ from numba import jit, njit from tqdm.auto import tqdm -from openpnm._skgraph.queries import qupc_initialize, qupc_reduce, qupc_update +from openpnm._skgraph.queries import qupc_find, qupc_union from openpnm._skgraph.simulations import bond_percolation, site_percolation from openpnm.algorithms import Algorithm from openpnm.utils import Docorator @@ -351,60 +351,43 @@ def _apply_trapping_slow(self, step_size=1, mode='mixed'): # pragma: no cover @jit(forceobj=True) def _find_trapped_pores(inv_seq, indices, indptr, outlets): Np = len(inv_seq) + inv_seq[outlets] =max(inv_seq) + 1 sorted_seq = np.vstack((inv_seq.astype(np.int_), np.arange(Np, dtype=np.int_))).T sorted_seq = sorted_seq[sorted_seq[:, 0].argsort()][::-1] - cluster = -np.ones(Np, dtype=np.int_) trapped_pores = np.zeros(Np, dtype=bool) - trapped_clusters = np.zeros(Np, dtype=bool) - # cluster_map = qupc_initialize(Np) + # The algorithm described by Masson could be simplify as below: + # For each pore in sorted_seq + # 1) union the pore with all neighbors that are invaded later than itself() + # 2) if the pore is still not connected to an outlet, mark it as trapped + # so you don't have to maintain a list of trapped clusters because when initilizing a union-find set + # each pore is its own cluster. Therefore, you don't have to check the isolated pore situation. + # you also don't have to check the one-neighbor situation because it's exact the same as the general case + + has_outlet = np.zeros(Np, dtype=bool) + has_outlet[outlets] = True cluster_map = np.arange(Np, dtype=np.int_) - next_cluster_num = 0 + i = -1 for step, pore in sorted_seq: i += 1 step, pore = sorted_seq[i, :] n = indices[indptr[pore]:indptr[pore+1]] - nc = cluster_map[cluster[n]][inv_seq[n] > step] - nc_uniq = np.unique(nc) - if nc.size == 0: - # Found an isolated pore, start a new cluster - cluster[pore] = next_cluster_num - # If pore is an outlet then note cluster as no longer trapped - if pore in outlets: - trapped_clusters[next_cluster_num] = False - else: # Otherwise note this cluster as being a trapped cluster - trapped_clusters[next_cluster_num] = True - # Note this pore as trapped as well - trapped_pores[pore] = True - # Increment cluster number for next time - next_cluster_num += 1 - elif nc_uniq.size == 1: - c = nc_uniq[0] - # Neighbors have one unique cluster number, so assign it to current pore - cluster[pore] = c - # If pore is an outlet then note cluster as no longer trapped - if pore in outlets: - trapped_clusters[c] = False - # Also set all joined clusters to not trapped - cluster_map = qupc_reduce(cluster_map) - hits = np.where(cluster_map == cluster_map[c])[0] - trapped_clusters[hits] = False - # If this cluster number is part of a trapped cluster then - # mark pore as trapped - if trapped_clusters[c]: - trapped_pores[pore] = True - elif nc_uniq.size > 1: - cluster[pore] = min(nc_uniq) - # Merge all clusters into a single cluster - for c in nc: - qupc_update(cluster_map, c, min(nc_uniq)) - cluster_map = qupc_reduce(cluster_map) - # If all neighboring clusters are trapped, then set current pore to - # trapped as well - if np.all(trapped_clusters[nc]): - trapped_pores[pore] = True - else: # Otherwise set all neighbor clusters to untrapped! - trapped_clusters[nc] = False + for neighbor in n: + if inv_seq[neighbor] > step: + porep=qupc_find(cluster_map, pore) + neighborp=qupc_find(cluster_map, neighbor) + if porep==neighborp: + continue + if has_outlet[qupc_find(cluster_map,neighbor)]: + #Since the qupc implements union-find set whihout rank, + #we just need to make sure the root with outlet is always the new root after union + qupc_union(cluster_map, pore, neighbor) + else: + qupc_union(cluster_map, neighbor, pore) + + if not has_outlet[qupc_find(cluster_map,pore)]: + trapped_pores[pore] = True + return trapped_pores From 6d1e2d84d4a4f5391069b777bc85dea7d5b3e2d4 Mon Sep 17 00:00:00 2001 From: jgostick Date: Fri, 21 Nov 2025 14:14:52 -0500 Subject: [PATCH 04/11] moving to src layout --- {openpnm => src/openpnm}/__init__.py | 0 {openpnm => src/openpnm}/__version__.py | 0 {openpnm => src/openpnm}/_skgraph/__init__.py | 0 .../openpnm}/_skgraph/generators/__init__.py | 0 .../openpnm}/_skgraph/generators/_bcc.py | 0 .../openpnm}/_skgraph/generators/_cubic.py | 0 .../openpnm}/_skgraph/generators/_delaunay.py | 0 .../openpnm}/_skgraph/generators/_fcc.py | 0 .../openpnm}/_skgraph/generators/_gabriel.py | 0 .../openpnm}/_skgraph/generators/_template.py | 0 .../openpnm}/_skgraph/generators/_voronoi.py | 0 .../_skgraph/generators/_voronoi_delaunay_dual.py | 0 .../openpnm}/_skgraph/generators/network | Bin .../openpnm}/_skgraph/generators/tools/__init__.py | 0 .../openpnm}/_skgraph/generators/tools/_funcs.py | 0 {openpnm => src/openpnm}/_skgraph/io/__init__.py | 0 {openpnm => src/openpnm}/_skgraph/io/_funcs.py | 0 .../openpnm}/_skgraph/operations/__init__.py | 0 .../openpnm}/_skgraph/operations/_binary.py | 0 .../openpnm}/_skgraph/operations/_funcs.py | 0 .../openpnm}/_skgraph/operations/_unary.py | 0 .../openpnm}/_skgraph/queries/QuickUnion.py | 0 .../openpnm}/_skgraph/queries/__init__.py | 0 {openpnm => src/openpnm}/_skgraph/queries/_funcs.py | 0 {openpnm => src/openpnm}/_skgraph/queries/_qupc.py | 0 .../openpnm}/_skgraph/simulations/__init__.py | 0 .../openpnm}/_skgraph/simulations/_funcs.py | 0 .../openpnm}/_skgraph/simulations/_percolation.py | 0 .../openpnm}/_skgraph/tools/GraphBundle.py | 0 {openpnm => src/openpnm}/_skgraph/tools/__init__.py | 0 .../openpnm}/_skgraph/tools/_coords_transforms.py | 0 {openpnm => src/openpnm}/_skgraph/tools/_funcs.py | 0 .../openpnm}/_skgraph/visualization/__init__.py | 0 .../openpnm}/_skgraph/visualization/_funcs.py | 0 {openpnm => src/openpnm}/algorithms/__init__.py | 0 .../openpnm}/algorithms/_advection_diffusion.py | 0 {openpnm => src/openpnm}/algorithms/_algorithm.py | 0 {openpnm => src/openpnm}/algorithms/_drainage.py | 0 .../openpnm}/algorithms/_fickian_diffusion.py | 0 .../openpnm}/algorithms/_fourier_conduction.py | 0 .../openpnm}/algorithms/_invasion_percolation.py | 0 .../openpnm}/algorithms/_ohmic_conduction.py | 0 .../openpnm}/algorithms/_reactive_transport.py | 0 {openpnm => src/openpnm}/algorithms/_solution.py | 0 {openpnm => src/openpnm}/algorithms/_stokes_flow.py | 0 .../algorithms/_transient_advection_diffusion.py | 0 .../algorithms/_transient_fickian_diffusion.py | 0 .../algorithms/_transient_fourier_conduction.py | 0 .../algorithms/_transient_reactive_transport.py | 0 {openpnm => src/openpnm}/algorithms/_transport.py | 0 {openpnm => src/openpnm}/beta/__init__.py | 0 {openpnm => src/openpnm}/beta/_funcs.py | 0 {openpnm => src/openpnm}/contrib/__init__.py | 0 {openpnm => src/openpnm}/contrib/_multiphase.py | 0 .../openpnm}/contrib/_transient_multiphysics.py | 0 {openpnm => src/openpnm}/core/__init__.py | 0 {openpnm => src/openpnm}/core/_base2.py | 0 {openpnm => src/openpnm}/core/_mixins.py | 0 {openpnm => src/openpnm}/core/_models.py | 0 {openpnm => src/openpnm}/integrators/__init__.py | 0 {openpnm => src/openpnm}/integrators/_base.py | 0 {openpnm => src/openpnm}/integrators/_scipy.py | 0 {openpnm => src/openpnm}/io/__init__.py | 0 {openpnm => src/openpnm}/io/_comsol.py | 0 {openpnm => src/openpnm}/io/_csv.py | 0 {openpnm => src/openpnm}/io/_dict.py | 0 {openpnm => src/openpnm}/io/_hdf5.py | 0 {openpnm => src/openpnm}/io/_jsongraph.py | 0 {openpnm => src/openpnm}/io/_marock.py | 0 {openpnm => src/openpnm}/io/_networkx.py | 0 {openpnm => src/openpnm}/io/_pandas.py | 0 {openpnm => src/openpnm}/io/_paraview.py | 0 {openpnm => src/openpnm}/io/_pergeos.py | 0 {openpnm => src/openpnm}/io/_porespy.py | 0 {openpnm => src/openpnm}/io/_salome.py | 0 {openpnm => src/openpnm}/io/_statoil.py | 0 {openpnm => src/openpnm}/io/_stl.py | 0 {openpnm => src/openpnm}/io/_utils.py | 0 {openpnm => src/openpnm}/io/_vtk.py | 0 {openpnm => src/openpnm}/io/_xdmf.py | 0 {openpnm => src/openpnm}/models/__init__.py | 0 {openpnm => src/openpnm}/models/_doctxt.py | 0 .../openpnm}/models/collections/__init__.py | 0 .../models/collections/geometry/__init__.py | 0 .../collections/geometry/circles_and_rectangles.py | 0 .../collections/geometry/cones_and_cylinders.py | 0 .../collections/geometry/cubes_and_cuboids.py | 0 .../collections/geometry/pyramids_and_cuboids.py | 0 .../collections/geometry/spheres_and_cylinders.py | 0 .../collections/geometry/squares_and_rectangles.py | 0 .../geometry/trapezoids_and_rectangles.py | 0 .../openpnm}/models/collections/network/__init__.py | 0 .../openpnm}/models/collections/phase/__init__.py | 0 .../openpnm}/models/collections/phase/air.py | 0 .../openpnm}/models/collections/phase/gas.py | 0 .../openpnm}/models/collections/phase/liquid.py | 0 .../openpnm}/models/collections/phase/mercury.py | 0 .../openpnm}/models/collections/phase/water.py | 0 .../openpnm}/models/collections/physics/__init__.py | 0 .../openpnm}/models/collections/physics/basic.py | 0 .../openpnm}/models/collections/physics/standard.py | 0 .../openpnm}/models/geometry/__init__.py | 0 .../openpnm}/models/geometry/_geodocs.py | 0 .../models/geometry/conduit_lengths/__init__.py | 0 .../models/geometry/conduit_lengths/_funcs.py | 0 .../geometry/diffusive_size_factors/__init__.py | 0 .../geometry/diffusive_size_factors/_funcs.py | 0 .../geometry/hydraulic_size_factors/__init__.py | 0 .../geometry/hydraulic_size_factors/_funcs.py | 0 .../geometry/pore_cross_sectional_area/__init__.py | 0 .../geometry/pore_cross_sectional_area/_funcs.py | 0 .../openpnm}/models/geometry/pore_seed/__init__.py | 0 .../openpnm}/models/geometry/pore_seed/_funcs.py | 0 .../openpnm}/models/geometry/pore_size/__init__.py | 0 .../openpnm}/models/geometry/pore_size/_funcs.py | 0 .../models/geometry/pore_surface_area/__init__.py | 0 .../models/geometry/pore_surface_area/_funcs.py | 0 .../models/geometry/pore_volume/__init__.py | 0 .../openpnm}/models/geometry/pore_volume/_funcs.py | 0 .../throat_capillary_shape_factor/__init__.py | 0 .../throat_capillary_shape_factor/_funcs.py | 0 .../models/geometry/throat_centroid/__init__.py | 0 .../models/geometry/throat_centroid/_funcs.py | 0 .../throat_cross_sectional_area/__init__.py | 0 .../geometry/throat_cross_sectional_area/_funcs.py | 0 .../models/geometry/throat_endpoints/__init__.py | 0 .../models/geometry/throat_endpoints/_funcs.py | 0 .../models/geometry/throat_length/__init__.py | 0 .../models/geometry/throat_length/_funcs.py | 0 .../models/geometry/throat_perimeter/__init__.py | 0 .../models/geometry/throat_perimeter/_funcs.py | 0 .../models/geometry/throat_seed/__init__.py | 0 .../openpnm}/models/geometry/throat_seed/_funcs.py | 0 .../models/geometry/throat_size/__init__.py | 0 .../openpnm}/models/geometry/throat_size/_funcs.py | 0 .../models/geometry/throat_surface_area/__init__.py | 0 .../models/geometry/throat_surface_area/_funcs.py | 0 .../models/geometry/throat_vector/__init__.py | 0 .../models/geometry/throat_vector/_funcs.py | 0 .../models/geometry/throat_volume/__init__.py | 0 .../models/geometry/throat_volume/_funcs.py | 0 {openpnm => src/openpnm}/models/misc/__init__.py | 0 {openpnm => src/openpnm}/models/misc/_basic_math.py | 0 .../openpnm}/models/misc/_neighbor_lookups.py | 0 .../openpnm}/models/misc/_simple_equations.py | 0 .../models/misc/_statistical_distributions.py | 0 {openpnm => src/openpnm}/models/network/__init__.py | 0 {openpnm => src/openpnm}/models/network/_health.py | 0 .../openpnm}/models/network/_topology.py | 0 {openpnm => src/openpnm}/models/phase/__init__.py | 0 {openpnm => src/openpnm}/models/phase/_phasedocs.py | 0 .../models/phase/critical_props/__init__.py | 0 .../openpnm}/models/phase/critical_props/_funcs.py | 0 .../openpnm}/models/phase/density/__init__.py | 0 .../openpnm}/models/phase/density/_funcs.py | 0 .../openpnm}/models/phase/diffusivity/__init__.py | 0 .../openpnm}/models/phase/diffusivity/_funcs.py | 0 .../openpnm}/models/phase/heat_capacity/__init__.py | 0 .../openpnm}/models/phase/heat_capacity/_funcs.py | 0 .../openpnm}/models/phase/misc/__init__.py | 0 .../openpnm}/models/phase/misc/_funcs.py | 0 .../openpnm}/models/phase/mixtures/__init__.py | 0 .../openpnm}/models/phase/mixtures/_funcs.py | 0 .../models/phase/partition_coefficient/__init__.py | 0 .../models/phase/partition_coefficient/_funcs.py | 0 .../phase/partition_coefficient/gas_water_henry.csv | 0 .../models/phase/surface_tension/__init__.py | 0 .../openpnm}/models/phase/surface_tension/_funcs.py | 0 .../models/phase/thermal_conductivity/__init__.py | 0 .../models/phase/thermal_conductivity/_funcs.py | 0 .../models/phase/vapor_pressure/__init__.py | 0 .../openpnm}/models/phase/vapor_pressure/_funcs.py | 0 .../openpnm}/models/phase/viscosity/__init__.py | 0 .../openpnm}/models/phase/viscosity/_funcs.py | 0 {openpnm => src/openpnm}/models/physics/__init__.py | 0 {openpnm => src/openpnm}/models/physics/_utils.py | 0 .../models/physics/ad_dif_conductance/__init__.py | 0 .../models/physics/ad_dif_conductance/_funcs.py | 0 .../models/physics/capillary_pressure/__init__.py | 0 .../models/physics/capillary_pressure/_funcs.py | 0 .../physics/diffusive_conductance/__init__.py | 0 .../models/physics/diffusive_conductance/_funcs.py | 0 .../physics/electrical_conductance/__init__.py | 0 .../models/physics/electrical_conductance/_funcs.py | 0 .../physics/hydraulic_conductance/__init__.py | 0 .../models/physics/hydraulic_conductance/_funcs.py | 0 .../openpnm}/models/physics/meniscus/__init__.py | 0 .../openpnm}/models/physics/meniscus/_funcs.py | 0 .../openpnm}/models/physics/multiphase/__init__.py | 0 .../openpnm}/models/physics/multiphase/_funcs.py | 0 .../models/physics/source_terms/__init__.py | 0 .../openpnm}/models/physics/source_terms/_funcs.py | 0 .../models/physics/thermal_conductance/__init__.py | 0 .../models/physics/thermal_conductance/_funcs.py | 0 {openpnm => src/openpnm}/network/__init__.py | 0 {openpnm => src/openpnm}/network/_bcc.py | 0 {openpnm => src/openpnm}/network/_cubic.py | 0 {openpnm => src/openpnm}/network/_cubic_template.py | 0 {openpnm => src/openpnm}/network/_delaunay.py | 0 .../openpnm}/network/_delaunay_voronoi_dual.py | 0 {openpnm => src/openpnm}/network/_demo.py | 0 {openpnm => src/openpnm}/network/_fcc.py | 0 {openpnm => src/openpnm}/network/_network.py | 0 {openpnm => src/openpnm}/network/_voronoi.py | 0 {openpnm => src/openpnm}/phase/__init__.py | 0 {openpnm => src/openpnm}/phase/_air.py | 0 {openpnm => src/openpnm}/phase/_mercury.py | 0 {openpnm => src/openpnm}/phase/_mixture.py | 0 {openpnm => src/openpnm}/phase/_phase.py | 0 {openpnm => src/openpnm}/phase/_species.py | 0 {openpnm => src/openpnm}/phase/_water.py | 0 {openpnm => src/openpnm}/solvers/__init__.py | 0 {openpnm => src/openpnm}/solvers/_base.py | 0 {openpnm => src/openpnm}/solvers/_pardiso.py | 0 {openpnm => src/openpnm}/solvers/_petsc.py | 0 {openpnm => src/openpnm}/solvers/_pyamg.py | 0 {openpnm => src/openpnm}/solvers/_scipy.py | 0 {openpnm => src/openpnm}/topotools/__init__.py | 0 {openpnm => src/openpnm}/topotools/_graphtools.py | 0 {openpnm => src/openpnm}/topotools/_perctools.py | 0 {openpnm => src/openpnm}/topotools/_topotools.py | 0 {openpnm => src/openpnm}/utils/__init__.py | 0 {openpnm => src/openpnm}/utils/_health.py | 0 {openpnm => src/openpnm}/utils/_misc.py | 0 {openpnm => src/openpnm}/utils/_project.py | 0 {openpnm => src/openpnm}/utils/_settings.py | 0 {openpnm => src/openpnm}/utils/_workspace.py | 0 {openpnm => src/openpnm}/utils/jgf_schema.pkl | Bin {openpnm => src/openpnm}/visualization/__init__.py | 0 .../openpnm}/visualization/_conduit_visualizer.py | 0 .../openpnm}/visualization/_plottools.py | 0 231 files changed, 0 insertions(+), 0 deletions(-) rename {openpnm => src/openpnm}/__init__.py (100%) rename {openpnm => src/openpnm}/__version__.py (100%) rename {openpnm => src/openpnm}/_skgraph/__init__.py (100%) rename {openpnm => src/openpnm}/_skgraph/generators/__init__.py (100%) rename {openpnm => src/openpnm}/_skgraph/generators/_bcc.py (100%) rename {openpnm => src/openpnm}/_skgraph/generators/_cubic.py (100%) rename {openpnm => src/openpnm}/_skgraph/generators/_delaunay.py (100%) rename {openpnm => src/openpnm}/_skgraph/generators/_fcc.py (100%) rename {openpnm => src/openpnm}/_skgraph/generators/_gabriel.py (100%) rename {openpnm => src/openpnm}/_skgraph/generators/_template.py (100%) rename {openpnm => src/openpnm}/_skgraph/generators/_voronoi.py (100%) rename {openpnm => src/openpnm}/_skgraph/generators/_voronoi_delaunay_dual.py (100%) rename {openpnm => src/openpnm}/_skgraph/generators/network (100%) rename {openpnm => src/openpnm}/_skgraph/generators/tools/__init__.py (100%) rename {openpnm => src/openpnm}/_skgraph/generators/tools/_funcs.py (100%) rename {openpnm => src/openpnm}/_skgraph/io/__init__.py (100%) rename {openpnm => src/openpnm}/_skgraph/io/_funcs.py (100%) rename {openpnm => src/openpnm}/_skgraph/operations/__init__.py (100%) rename {openpnm => src/openpnm}/_skgraph/operations/_binary.py (100%) rename {openpnm => src/openpnm}/_skgraph/operations/_funcs.py (100%) rename {openpnm => src/openpnm}/_skgraph/operations/_unary.py (100%) rename {openpnm => src/openpnm}/_skgraph/queries/QuickUnion.py (100%) rename {openpnm => src/openpnm}/_skgraph/queries/__init__.py (100%) rename {openpnm => src/openpnm}/_skgraph/queries/_funcs.py (100%) rename {openpnm => src/openpnm}/_skgraph/queries/_qupc.py (100%) rename {openpnm => src/openpnm}/_skgraph/simulations/__init__.py (100%) rename {openpnm => src/openpnm}/_skgraph/simulations/_funcs.py (100%) rename {openpnm => src/openpnm}/_skgraph/simulations/_percolation.py (100%) rename {openpnm => src/openpnm}/_skgraph/tools/GraphBundle.py (100%) rename {openpnm => src/openpnm}/_skgraph/tools/__init__.py (100%) rename {openpnm => src/openpnm}/_skgraph/tools/_coords_transforms.py (100%) rename {openpnm => src/openpnm}/_skgraph/tools/_funcs.py (100%) rename {openpnm => src/openpnm}/_skgraph/visualization/__init__.py (100%) rename {openpnm => src/openpnm}/_skgraph/visualization/_funcs.py (100%) rename {openpnm => src/openpnm}/algorithms/__init__.py (100%) rename {openpnm => src/openpnm}/algorithms/_advection_diffusion.py (100%) rename {openpnm => src/openpnm}/algorithms/_algorithm.py (100%) rename {openpnm => src/openpnm}/algorithms/_drainage.py (100%) rename {openpnm => src/openpnm}/algorithms/_fickian_diffusion.py (100%) rename {openpnm => src/openpnm}/algorithms/_fourier_conduction.py (100%) rename {openpnm => src/openpnm}/algorithms/_invasion_percolation.py (100%) rename {openpnm => src/openpnm}/algorithms/_ohmic_conduction.py (100%) rename {openpnm => src/openpnm}/algorithms/_reactive_transport.py (100%) rename {openpnm => src/openpnm}/algorithms/_solution.py (100%) rename {openpnm => src/openpnm}/algorithms/_stokes_flow.py (100%) rename {openpnm => src/openpnm}/algorithms/_transient_advection_diffusion.py (100%) rename {openpnm => src/openpnm}/algorithms/_transient_fickian_diffusion.py (100%) rename {openpnm => src/openpnm}/algorithms/_transient_fourier_conduction.py (100%) rename {openpnm => src/openpnm}/algorithms/_transient_reactive_transport.py (100%) rename {openpnm => src/openpnm}/algorithms/_transport.py (100%) rename {openpnm => src/openpnm}/beta/__init__.py (100%) rename {openpnm => src/openpnm}/beta/_funcs.py (100%) rename {openpnm => src/openpnm}/contrib/__init__.py (100%) rename {openpnm => src/openpnm}/contrib/_multiphase.py (100%) rename {openpnm => src/openpnm}/contrib/_transient_multiphysics.py (100%) rename {openpnm => src/openpnm}/core/__init__.py (100%) rename {openpnm => src/openpnm}/core/_base2.py (100%) rename {openpnm => src/openpnm}/core/_mixins.py (100%) rename {openpnm => src/openpnm}/core/_models.py (100%) rename {openpnm => src/openpnm}/integrators/__init__.py (100%) rename {openpnm => src/openpnm}/integrators/_base.py (100%) rename {openpnm => src/openpnm}/integrators/_scipy.py (100%) rename {openpnm => src/openpnm}/io/__init__.py (100%) rename {openpnm => src/openpnm}/io/_comsol.py (100%) rename {openpnm => src/openpnm}/io/_csv.py (100%) rename {openpnm => src/openpnm}/io/_dict.py (100%) rename {openpnm => src/openpnm}/io/_hdf5.py (100%) rename {openpnm => src/openpnm}/io/_jsongraph.py (100%) rename {openpnm => src/openpnm}/io/_marock.py (100%) rename {openpnm => src/openpnm}/io/_networkx.py (100%) rename {openpnm => src/openpnm}/io/_pandas.py (100%) rename {openpnm => src/openpnm}/io/_paraview.py (100%) rename {openpnm => src/openpnm}/io/_pergeos.py (100%) rename {openpnm => src/openpnm}/io/_porespy.py (100%) rename {openpnm => src/openpnm}/io/_salome.py (100%) rename {openpnm => src/openpnm}/io/_statoil.py (100%) rename {openpnm => src/openpnm}/io/_stl.py (100%) rename {openpnm => src/openpnm}/io/_utils.py (100%) rename {openpnm => src/openpnm}/io/_vtk.py (100%) rename {openpnm => src/openpnm}/io/_xdmf.py (100%) rename {openpnm => src/openpnm}/models/__init__.py (100%) rename {openpnm => src/openpnm}/models/_doctxt.py (100%) rename {openpnm => src/openpnm}/models/collections/__init__.py (100%) rename {openpnm => src/openpnm}/models/collections/geometry/__init__.py (100%) rename {openpnm => src/openpnm}/models/collections/geometry/circles_and_rectangles.py (100%) rename {openpnm => src/openpnm}/models/collections/geometry/cones_and_cylinders.py (100%) rename {openpnm => src/openpnm}/models/collections/geometry/cubes_and_cuboids.py (100%) rename {openpnm => src/openpnm}/models/collections/geometry/pyramids_and_cuboids.py (100%) rename {openpnm => src/openpnm}/models/collections/geometry/spheres_and_cylinders.py (100%) rename {openpnm => src/openpnm}/models/collections/geometry/squares_and_rectangles.py (100%) rename {openpnm => src/openpnm}/models/collections/geometry/trapezoids_and_rectangles.py (100%) rename {openpnm => src/openpnm}/models/collections/network/__init__.py (100%) rename {openpnm => src/openpnm}/models/collections/phase/__init__.py (100%) rename {openpnm => src/openpnm}/models/collections/phase/air.py (100%) rename {openpnm => src/openpnm}/models/collections/phase/gas.py (100%) rename {openpnm => src/openpnm}/models/collections/phase/liquid.py (100%) rename {openpnm => src/openpnm}/models/collections/phase/mercury.py (100%) rename {openpnm => src/openpnm}/models/collections/phase/water.py (100%) rename {openpnm => src/openpnm}/models/collections/physics/__init__.py (100%) rename {openpnm => src/openpnm}/models/collections/physics/basic.py (100%) rename {openpnm => src/openpnm}/models/collections/physics/standard.py (100%) rename {openpnm => src/openpnm}/models/geometry/__init__.py (100%) rename {openpnm => src/openpnm}/models/geometry/_geodocs.py (100%) rename {openpnm => src/openpnm}/models/geometry/conduit_lengths/__init__.py (100%) rename {openpnm => src/openpnm}/models/geometry/conduit_lengths/_funcs.py (100%) rename {openpnm => src/openpnm}/models/geometry/diffusive_size_factors/__init__.py (100%) rename {openpnm => src/openpnm}/models/geometry/diffusive_size_factors/_funcs.py (100%) rename {openpnm => src/openpnm}/models/geometry/hydraulic_size_factors/__init__.py (100%) rename {openpnm => src/openpnm}/models/geometry/hydraulic_size_factors/_funcs.py (100%) rename {openpnm => src/openpnm}/models/geometry/pore_cross_sectional_area/__init__.py (100%) rename {openpnm => src/openpnm}/models/geometry/pore_cross_sectional_area/_funcs.py (100%) rename {openpnm => src/openpnm}/models/geometry/pore_seed/__init__.py (100%) rename {openpnm => src/openpnm}/models/geometry/pore_seed/_funcs.py (100%) rename {openpnm => src/openpnm}/models/geometry/pore_size/__init__.py (100%) rename {openpnm => src/openpnm}/models/geometry/pore_size/_funcs.py (100%) rename {openpnm => src/openpnm}/models/geometry/pore_surface_area/__init__.py (100%) rename {openpnm => src/openpnm}/models/geometry/pore_surface_area/_funcs.py (100%) rename {openpnm => src/openpnm}/models/geometry/pore_volume/__init__.py (100%) rename {openpnm => src/openpnm}/models/geometry/pore_volume/_funcs.py (100%) rename {openpnm => src/openpnm}/models/geometry/throat_capillary_shape_factor/__init__.py (100%) rename {openpnm => src/openpnm}/models/geometry/throat_capillary_shape_factor/_funcs.py (100%) rename {openpnm => src/openpnm}/models/geometry/throat_centroid/__init__.py (100%) rename {openpnm => src/openpnm}/models/geometry/throat_centroid/_funcs.py (100%) rename {openpnm => src/openpnm}/models/geometry/throat_cross_sectional_area/__init__.py (100%) rename {openpnm => src/openpnm}/models/geometry/throat_cross_sectional_area/_funcs.py (100%) rename {openpnm => src/openpnm}/models/geometry/throat_endpoints/__init__.py (100%) rename {openpnm => src/openpnm}/models/geometry/throat_endpoints/_funcs.py (100%) rename {openpnm => src/openpnm}/models/geometry/throat_length/__init__.py (100%) rename {openpnm => src/openpnm}/models/geometry/throat_length/_funcs.py (100%) rename {openpnm => src/openpnm}/models/geometry/throat_perimeter/__init__.py (100%) rename {openpnm => src/openpnm}/models/geometry/throat_perimeter/_funcs.py (100%) rename {openpnm => src/openpnm}/models/geometry/throat_seed/__init__.py (100%) rename {openpnm => src/openpnm}/models/geometry/throat_seed/_funcs.py (100%) rename {openpnm => src/openpnm}/models/geometry/throat_size/__init__.py (100%) rename {openpnm => src/openpnm}/models/geometry/throat_size/_funcs.py (100%) rename {openpnm => src/openpnm}/models/geometry/throat_surface_area/__init__.py (100%) rename {openpnm => src/openpnm}/models/geometry/throat_surface_area/_funcs.py (100%) rename {openpnm => src/openpnm}/models/geometry/throat_vector/__init__.py (100%) rename {openpnm => src/openpnm}/models/geometry/throat_vector/_funcs.py (100%) rename {openpnm => src/openpnm}/models/geometry/throat_volume/__init__.py (100%) rename {openpnm => src/openpnm}/models/geometry/throat_volume/_funcs.py (100%) rename {openpnm => src/openpnm}/models/misc/__init__.py (100%) rename {openpnm => src/openpnm}/models/misc/_basic_math.py (100%) rename {openpnm => src/openpnm}/models/misc/_neighbor_lookups.py (100%) rename {openpnm => src/openpnm}/models/misc/_simple_equations.py (100%) rename {openpnm => src/openpnm}/models/misc/_statistical_distributions.py (100%) rename {openpnm => src/openpnm}/models/network/__init__.py (100%) rename {openpnm => src/openpnm}/models/network/_health.py (100%) rename {openpnm => src/openpnm}/models/network/_topology.py (100%) rename {openpnm => src/openpnm}/models/phase/__init__.py (100%) rename {openpnm => src/openpnm}/models/phase/_phasedocs.py (100%) rename {openpnm => src/openpnm}/models/phase/critical_props/__init__.py (100%) rename {openpnm => src/openpnm}/models/phase/critical_props/_funcs.py (100%) rename {openpnm => src/openpnm}/models/phase/density/__init__.py (100%) rename {openpnm => src/openpnm}/models/phase/density/_funcs.py (100%) rename {openpnm => src/openpnm}/models/phase/diffusivity/__init__.py (100%) rename {openpnm => src/openpnm}/models/phase/diffusivity/_funcs.py (100%) rename {openpnm => src/openpnm}/models/phase/heat_capacity/__init__.py (100%) rename {openpnm => src/openpnm}/models/phase/heat_capacity/_funcs.py (100%) rename {openpnm => src/openpnm}/models/phase/misc/__init__.py (100%) rename {openpnm => src/openpnm}/models/phase/misc/_funcs.py (100%) rename {openpnm => src/openpnm}/models/phase/mixtures/__init__.py (100%) rename {openpnm => src/openpnm}/models/phase/mixtures/_funcs.py (100%) rename {openpnm => src/openpnm}/models/phase/partition_coefficient/__init__.py (100%) rename {openpnm => src/openpnm}/models/phase/partition_coefficient/_funcs.py (100%) mode change 100755 => 100644 rename {openpnm => src/openpnm}/models/phase/partition_coefficient/gas_water_henry.csv (100%) rename {openpnm => src/openpnm}/models/phase/surface_tension/__init__.py (100%) rename {openpnm => src/openpnm}/models/phase/surface_tension/_funcs.py (100%) rename {openpnm => src/openpnm}/models/phase/thermal_conductivity/__init__.py (100%) rename {openpnm => src/openpnm}/models/phase/thermal_conductivity/_funcs.py (100%) rename {openpnm => src/openpnm}/models/phase/vapor_pressure/__init__.py (100%) rename {openpnm => src/openpnm}/models/phase/vapor_pressure/_funcs.py (100%) rename {openpnm => src/openpnm}/models/phase/viscosity/__init__.py (100%) rename {openpnm => src/openpnm}/models/phase/viscosity/_funcs.py (100%) rename {openpnm => src/openpnm}/models/physics/__init__.py (100%) rename {openpnm => src/openpnm}/models/physics/_utils.py (100%) rename {openpnm => src/openpnm}/models/physics/ad_dif_conductance/__init__.py (100%) rename {openpnm => src/openpnm}/models/physics/ad_dif_conductance/_funcs.py (100%) rename {openpnm => src/openpnm}/models/physics/capillary_pressure/__init__.py (100%) rename {openpnm => src/openpnm}/models/physics/capillary_pressure/_funcs.py (100%) rename {openpnm => src/openpnm}/models/physics/diffusive_conductance/__init__.py (100%) rename {openpnm => src/openpnm}/models/physics/diffusive_conductance/_funcs.py (100%) rename {openpnm => src/openpnm}/models/physics/electrical_conductance/__init__.py (100%) rename {openpnm => src/openpnm}/models/physics/electrical_conductance/_funcs.py (100%) rename {openpnm => src/openpnm}/models/physics/hydraulic_conductance/__init__.py (100%) rename {openpnm => src/openpnm}/models/physics/hydraulic_conductance/_funcs.py (100%) rename {openpnm => src/openpnm}/models/physics/meniscus/__init__.py (100%) rename {openpnm => src/openpnm}/models/physics/meniscus/_funcs.py (100%) rename {openpnm => src/openpnm}/models/physics/multiphase/__init__.py (100%) rename {openpnm => src/openpnm}/models/physics/multiphase/_funcs.py (100%) rename {openpnm => src/openpnm}/models/physics/source_terms/__init__.py (100%) rename {openpnm => src/openpnm}/models/physics/source_terms/_funcs.py (100%) rename {openpnm => src/openpnm}/models/physics/thermal_conductance/__init__.py (100%) rename {openpnm => src/openpnm}/models/physics/thermal_conductance/_funcs.py (100%) rename {openpnm => src/openpnm}/network/__init__.py (100%) rename {openpnm => src/openpnm}/network/_bcc.py (100%) rename {openpnm => src/openpnm}/network/_cubic.py (100%) rename {openpnm => src/openpnm}/network/_cubic_template.py (100%) rename {openpnm => src/openpnm}/network/_delaunay.py (100%) rename {openpnm => src/openpnm}/network/_delaunay_voronoi_dual.py (100%) rename {openpnm => src/openpnm}/network/_demo.py (100%) rename {openpnm => src/openpnm}/network/_fcc.py (100%) rename {openpnm => src/openpnm}/network/_network.py (100%) rename {openpnm => src/openpnm}/network/_voronoi.py (100%) rename {openpnm => src/openpnm}/phase/__init__.py (100%) rename {openpnm => src/openpnm}/phase/_air.py (100%) rename {openpnm => src/openpnm}/phase/_mercury.py (100%) rename {openpnm => src/openpnm}/phase/_mixture.py (100%) rename {openpnm => src/openpnm}/phase/_phase.py (100%) rename {openpnm => src/openpnm}/phase/_species.py (100%) rename {openpnm => src/openpnm}/phase/_water.py (100%) rename {openpnm => src/openpnm}/solvers/__init__.py (100%) rename {openpnm => src/openpnm}/solvers/_base.py (100%) rename {openpnm => src/openpnm}/solvers/_pardiso.py (100%) rename {openpnm => src/openpnm}/solvers/_petsc.py (100%) rename {openpnm => src/openpnm}/solvers/_pyamg.py (100%) rename {openpnm => src/openpnm}/solvers/_scipy.py (100%) rename {openpnm => src/openpnm}/topotools/__init__.py (100%) rename {openpnm => src/openpnm}/topotools/_graphtools.py (100%) rename {openpnm => src/openpnm}/topotools/_perctools.py (100%) rename {openpnm => src/openpnm}/topotools/_topotools.py (100%) rename {openpnm => src/openpnm}/utils/__init__.py (100%) rename {openpnm => src/openpnm}/utils/_health.py (100%) rename {openpnm => src/openpnm}/utils/_misc.py (100%) rename {openpnm => src/openpnm}/utils/_project.py (100%) rename {openpnm => src/openpnm}/utils/_settings.py (100%) rename {openpnm => src/openpnm}/utils/_workspace.py (100%) rename {openpnm => src/openpnm}/utils/jgf_schema.pkl (100%) rename {openpnm => src/openpnm}/visualization/__init__.py (100%) rename {openpnm => src/openpnm}/visualization/_conduit_visualizer.py (100%) rename {openpnm => src/openpnm}/visualization/_plottools.py (100%) diff --git a/openpnm/__init__.py b/src/openpnm/__init__.py similarity index 100% rename from openpnm/__init__.py rename to src/openpnm/__init__.py diff --git a/openpnm/__version__.py b/src/openpnm/__version__.py similarity index 100% rename from openpnm/__version__.py rename to src/openpnm/__version__.py diff --git a/openpnm/_skgraph/__init__.py b/src/openpnm/_skgraph/__init__.py similarity index 100% rename from openpnm/_skgraph/__init__.py rename to src/openpnm/_skgraph/__init__.py diff --git a/openpnm/_skgraph/generators/__init__.py b/src/openpnm/_skgraph/generators/__init__.py similarity index 100% rename from openpnm/_skgraph/generators/__init__.py rename to src/openpnm/_skgraph/generators/__init__.py diff --git a/openpnm/_skgraph/generators/_bcc.py b/src/openpnm/_skgraph/generators/_bcc.py similarity index 100% rename from openpnm/_skgraph/generators/_bcc.py rename to src/openpnm/_skgraph/generators/_bcc.py diff --git a/openpnm/_skgraph/generators/_cubic.py b/src/openpnm/_skgraph/generators/_cubic.py similarity index 100% rename from openpnm/_skgraph/generators/_cubic.py rename to src/openpnm/_skgraph/generators/_cubic.py diff --git a/openpnm/_skgraph/generators/_delaunay.py b/src/openpnm/_skgraph/generators/_delaunay.py similarity index 100% rename from openpnm/_skgraph/generators/_delaunay.py rename to src/openpnm/_skgraph/generators/_delaunay.py diff --git a/openpnm/_skgraph/generators/_fcc.py b/src/openpnm/_skgraph/generators/_fcc.py similarity index 100% rename from openpnm/_skgraph/generators/_fcc.py rename to src/openpnm/_skgraph/generators/_fcc.py diff --git a/openpnm/_skgraph/generators/_gabriel.py b/src/openpnm/_skgraph/generators/_gabriel.py similarity index 100% rename from openpnm/_skgraph/generators/_gabriel.py rename to src/openpnm/_skgraph/generators/_gabriel.py diff --git a/openpnm/_skgraph/generators/_template.py b/src/openpnm/_skgraph/generators/_template.py similarity index 100% rename from openpnm/_skgraph/generators/_template.py rename to src/openpnm/_skgraph/generators/_template.py diff --git a/openpnm/_skgraph/generators/_voronoi.py b/src/openpnm/_skgraph/generators/_voronoi.py similarity index 100% rename from openpnm/_skgraph/generators/_voronoi.py rename to src/openpnm/_skgraph/generators/_voronoi.py diff --git a/openpnm/_skgraph/generators/_voronoi_delaunay_dual.py b/src/openpnm/_skgraph/generators/_voronoi_delaunay_dual.py similarity index 100% rename from openpnm/_skgraph/generators/_voronoi_delaunay_dual.py rename to src/openpnm/_skgraph/generators/_voronoi_delaunay_dual.py diff --git a/openpnm/_skgraph/generators/network b/src/openpnm/_skgraph/generators/network similarity index 100% rename from openpnm/_skgraph/generators/network rename to src/openpnm/_skgraph/generators/network diff --git a/openpnm/_skgraph/generators/tools/__init__.py b/src/openpnm/_skgraph/generators/tools/__init__.py similarity index 100% rename from openpnm/_skgraph/generators/tools/__init__.py rename to src/openpnm/_skgraph/generators/tools/__init__.py diff --git a/openpnm/_skgraph/generators/tools/_funcs.py b/src/openpnm/_skgraph/generators/tools/_funcs.py similarity index 100% rename from openpnm/_skgraph/generators/tools/_funcs.py rename to src/openpnm/_skgraph/generators/tools/_funcs.py diff --git a/openpnm/_skgraph/io/__init__.py b/src/openpnm/_skgraph/io/__init__.py similarity index 100% rename from openpnm/_skgraph/io/__init__.py rename to src/openpnm/_skgraph/io/__init__.py diff --git a/openpnm/_skgraph/io/_funcs.py b/src/openpnm/_skgraph/io/_funcs.py similarity index 100% rename from openpnm/_skgraph/io/_funcs.py rename to src/openpnm/_skgraph/io/_funcs.py diff --git a/openpnm/_skgraph/operations/__init__.py b/src/openpnm/_skgraph/operations/__init__.py similarity index 100% rename from openpnm/_skgraph/operations/__init__.py rename to src/openpnm/_skgraph/operations/__init__.py diff --git a/openpnm/_skgraph/operations/_binary.py b/src/openpnm/_skgraph/operations/_binary.py similarity index 100% rename from openpnm/_skgraph/operations/_binary.py rename to src/openpnm/_skgraph/operations/_binary.py diff --git a/openpnm/_skgraph/operations/_funcs.py b/src/openpnm/_skgraph/operations/_funcs.py similarity index 100% rename from openpnm/_skgraph/operations/_funcs.py rename to src/openpnm/_skgraph/operations/_funcs.py diff --git a/openpnm/_skgraph/operations/_unary.py b/src/openpnm/_skgraph/operations/_unary.py similarity index 100% rename from openpnm/_skgraph/operations/_unary.py rename to src/openpnm/_skgraph/operations/_unary.py diff --git a/openpnm/_skgraph/queries/QuickUnion.py b/src/openpnm/_skgraph/queries/QuickUnion.py similarity index 100% rename from openpnm/_skgraph/queries/QuickUnion.py rename to src/openpnm/_skgraph/queries/QuickUnion.py diff --git a/openpnm/_skgraph/queries/__init__.py b/src/openpnm/_skgraph/queries/__init__.py similarity index 100% rename from openpnm/_skgraph/queries/__init__.py rename to src/openpnm/_skgraph/queries/__init__.py diff --git a/openpnm/_skgraph/queries/_funcs.py b/src/openpnm/_skgraph/queries/_funcs.py similarity index 100% rename from openpnm/_skgraph/queries/_funcs.py rename to src/openpnm/_skgraph/queries/_funcs.py diff --git a/openpnm/_skgraph/queries/_qupc.py b/src/openpnm/_skgraph/queries/_qupc.py similarity index 100% rename from openpnm/_skgraph/queries/_qupc.py rename to src/openpnm/_skgraph/queries/_qupc.py diff --git a/openpnm/_skgraph/simulations/__init__.py b/src/openpnm/_skgraph/simulations/__init__.py similarity index 100% rename from openpnm/_skgraph/simulations/__init__.py rename to src/openpnm/_skgraph/simulations/__init__.py diff --git a/openpnm/_skgraph/simulations/_funcs.py b/src/openpnm/_skgraph/simulations/_funcs.py similarity index 100% rename from openpnm/_skgraph/simulations/_funcs.py rename to src/openpnm/_skgraph/simulations/_funcs.py diff --git a/openpnm/_skgraph/simulations/_percolation.py b/src/openpnm/_skgraph/simulations/_percolation.py similarity index 100% rename from openpnm/_skgraph/simulations/_percolation.py rename to src/openpnm/_skgraph/simulations/_percolation.py diff --git a/openpnm/_skgraph/tools/GraphBundle.py b/src/openpnm/_skgraph/tools/GraphBundle.py similarity index 100% rename from openpnm/_skgraph/tools/GraphBundle.py rename to src/openpnm/_skgraph/tools/GraphBundle.py diff --git a/openpnm/_skgraph/tools/__init__.py b/src/openpnm/_skgraph/tools/__init__.py similarity index 100% rename from openpnm/_skgraph/tools/__init__.py rename to src/openpnm/_skgraph/tools/__init__.py diff --git a/openpnm/_skgraph/tools/_coords_transforms.py b/src/openpnm/_skgraph/tools/_coords_transforms.py similarity index 100% rename from openpnm/_skgraph/tools/_coords_transforms.py rename to src/openpnm/_skgraph/tools/_coords_transforms.py diff --git a/openpnm/_skgraph/tools/_funcs.py b/src/openpnm/_skgraph/tools/_funcs.py similarity index 100% rename from openpnm/_skgraph/tools/_funcs.py rename to src/openpnm/_skgraph/tools/_funcs.py diff --git a/openpnm/_skgraph/visualization/__init__.py b/src/openpnm/_skgraph/visualization/__init__.py similarity index 100% rename from openpnm/_skgraph/visualization/__init__.py rename to src/openpnm/_skgraph/visualization/__init__.py diff --git a/openpnm/_skgraph/visualization/_funcs.py b/src/openpnm/_skgraph/visualization/_funcs.py similarity index 100% rename from openpnm/_skgraph/visualization/_funcs.py rename to src/openpnm/_skgraph/visualization/_funcs.py diff --git a/openpnm/algorithms/__init__.py b/src/openpnm/algorithms/__init__.py similarity index 100% rename from openpnm/algorithms/__init__.py rename to src/openpnm/algorithms/__init__.py diff --git a/openpnm/algorithms/_advection_diffusion.py b/src/openpnm/algorithms/_advection_diffusion.py similarity index 100% rename from openpnm/algorithms/_advection_diffusion.py rename to src/openpnm/algorithms/_advection_diffusion.py diff --git a/openpnm/algorithms/_algorithm.py b/src/openpnm/algorithms/_algorithm.py similarity index 100% rename from openpnm/algorithms/_algorithm.py rename to src/openpnm/algorithms/_algorithm.py diff --git a/openpnm/algorithms/_drainage.py b/src/openpnm/algorithms/_drainage.py similarity index 100% rename from openpnm/algorithms/_drainage.py rename to src/openpnm/algorithms/_drainage.py diff --git a/openpnm/algorithms/_fickian_diffusion.py b/src/openpnm/algorithms/_fickian_diffusion.py similarity index 100% rename from openpnm/algorithms/_fickian_diffusion.py rename to src/openpnm/algorithms/_fickian_diffusion.py diff --git a/openpnm/algorithms/_fourier_conduction.py b/src/openpnm/algorithms/_fourier_conduction.py similarity index 100% rename from openpnm/algorithms/_fourier_conduction.py rename to src/openpnm/algorithms/_fourier_conduction.py diff --git a/openpnm/algorithms/_invasion_percolation.py b/src/openpnm/algorithms/_invasion_percolation.py similarity index 100% rename from openpnm/algorithms/_invasion_percolation.py rename to src/openpnm/algorithms/_invasion_percolation.py diff --git a/openpnm/algorithms/_ohmic_conduction.py b/src/openpnm/algorithms/_ohmic_conduction.py similarity index 100% rename from openpnm/algorithms/_ohmic_conduction.py rename to src/openpnm/algorithms/_ohmic_conduction.py diff --git a/openpnm/algorithms/_reactive_transport.py b/src/openpnm/algorithms/_reactive_transport.py similarity index 100% rename from openpnm/algorithms/_reactive_transport.py rename to src/openpnm/algorithms/_reactive_transport.py diff --git a/openpnm/algorithms/_solution.py b/src/openpnm/algorithms/_solution.py similarity index 100% rename from openpnm/algorithms/_solution.py rename to src/openpnm/algorithms/_solution.py diff --git a/openpnm/algorithms/_stokes_flow.py b/src/openpnm/algorithms/_stokes_flow.py similarity index 100% rename from openpnm/algorithms/_stokes_flow.py rename to src/openpnm/algorithms/_stokes_flow.py diff --git a/openpnm/algorithms/_transient_advection_diffusion.py b/src/openpnm/algorithms/_transient_advection_diffusion.py similarity index 100% rename from openpnm/algorithms/_transient_advection_diffusion.py rename to src/openpnm/algorithms/_transient_advection_diffusion.py diff --git a/openpnm/algorithms/_transient_fickian_diffusion.py b/src/openpnm/algorithms/_transient_fickian_diffusion.py similarity index 100% rename from openpnm/algorithms/_transient_fickian_diffusion.py rename to src/openpnm/algorithms/_transient_fickian_diffusion.py diff --git a/openpnm/algorithms/_transient_fourier_conduction.py b/src/openpnm/algorithms/_transient_fourier_conduction.py similarity index 100% rename from openpnm/algorithms/_transient_fourier_conduction.py rename to src/openpnm/algorithms/_transient_fourier_conduction.py diff --git a/openpnm/algorithms/_transient_reactive_transport.py b/src/openpnm/algorithms/_transient_reactive_transport.py similarity index 100% rename from openpnm/algorithms/_transient_reactive_transport.py rename to src/openpnm/algorithms/_transient_reactive_transport.py diff --git a/openpnm/algorithms/_transport.py b/src/openpnm/algorithms/_transport.py similarity index 100% rename from openpnm/algorithms/_transport.py rename to src/openpnm/algorithms/_transport.py diff --git a/openpnm/beta/__init__.py b/src/openpnm/beta/__init__.py similarity index 100% rename from openpnm/beta/__init__.py rename to src/openpnm/beta/__init__.py diff --git a/openpnm/beta/_funcs.py b/src/openpnm/beta/_funcs.py similarity index 100% rename from openpnm/beta/_funcs.py rename to src/openpnm/beta/_funcs.py diff --git a/openpnm/contrib/__init__.py b/src/openpnm/contrib/__init__.py similarity index 100% rename from openpnm/contrib/__init__.py rename to src/openpnm/contrib/__init__.py diff --git a/openpnm/contrib/_multiphase.py b/src/openpnm/contrib/_multiphase.py similarity index 100% rename from openpnm/contrib/_multiphase.py rename to src/openpnm/contrib/_multiphase.py diff --git a/openpnm/contrib/_transient_multiphysics.py b/src/openpnm/contrib/_transient_multiphysics.py similarity index 100% rename from openpnm/contrib/_transient_multiphysics.py rename to src/openpnm/contrib/_transient_multiphysics.py diff --git a/openpnm/core/__init__.py b/src/openpnm/core/__init__.py similarity index 100% rename from openpnm/core/__init__.py rename to src/openpnm/core/__init__.py diff --git a/openpnm/core/_base2.py b/src/openpnm/core/_base2.py similarity index 100% rename from openpnm/core/_base2.py rename to src/openpnm/core/_base2.py diff --git a/openpnm/core/_mixins.py b/src/openpnm/core/_mixins.py similarity index 100% rename from openpnm/core/_mixins.py rename to src/openpnm/core/_mixins.py diff --git a/openpnm/core/_models.py b/src/openpnm/core/_models.py similarity index 100% rename from openpnm/core/_models.py rename to src/openpnm/core/_models.py diff --git a/openpnm/integrators/__init__.py b/src/openpnm/integrators/__init__.py similarity index 100% rename from openpnm/integrators/__init__.py rename to src/openpnm/integrators/__init__.py diff --git a/openpnm/integrators/_base.py b/src/openpnm/integrators/_base.py similarity index 100% rename from openpnm/integrators/_base.py rename to src/openpnm/integrators/_base.py diff --git a/openpnm/integrators/_scipy.py b/src/openpnm/integrators/_scipy.py similarity index 100% rename from openpnm/integrators/_scipy.py rename to src/openpnm/integrators/_scipy.py diff --git a/openpnm/io/__init__.py b/src/openpnm/io/__init__.py similarity index 100% rename from openpnm/io/__init__.py rename to src/openpnm/io/__init__.py diff --git a/openpnm/io/_comsol.py b/src/openpnm/io/_comsol.py similarity index 100% rename from openpnm/io/_comsol.py rename to src/openpnm/io/_comsol.py diff --git a/openpnm/io/_csv.py b/src/openpnm/io/_csv.py similarity index 100% rename from openpnm/io/_csv.py rename to src/openpnm/io/_csv.py diff --git a/openpnm/io/_dict.py b/src/openpnm/io/_dict.py similarity index 100% rename from openpnm/io/_dict.py rename to src/openpnm/io/_dict.py diff --git a/openpnm/io/_hdf5.py b/src/openpnm/io/_hdf5.py similarity index 100% rename from openpnm/io/_hdf5.py rename to src/openpnm/io/_hdf5.py diff --git a/openpnm/io/_jsongraph.py b/src/openpnm/io/_jsongraph.py similarity index 100% rename from openpnm/io/_jsongraph.py rename to src/openpnm/io/_jsongraph.py diff --git a/openpnm/io/_marock.py b/src/openpnm/io/_marock.py similarity index 100% rename from openpnm/io/_marock.py rename to src/openpnm/io/_marock.py diff --git a/openpnm/io/_networkx.py b/src/openpnm/io/_networkx.py similarity index 100% rename from openpnm/io/_networkx.py rename to src/openpnm/io/_networkx.py diff --git a/openpnm/io/_pandas.py b/src/openpnm/io/_pandas.py similarity index 100% rename from openpnm/io/_pandas.py rename to src/openpnm/io/_pandas.py diff --git a/openpnm/io/_paraview.py b/src/openpnm/io/_paraview.py similarity index 100% rename from openpnm/io/_paraview.py rename to src/openpnm/io/_paraview.py diff --git a/openpnm/io/_pergeos.py b/src/openpnm/io/_pergeos.py similarity index 100% rename from openpnm/io/_pergeos.py rename to src/openpnm/io/_pergeos.py diff --git a/openpnm/io/_porespy.py b/src/openpnm/io/_porespy.py similarity index 100% rename from openpnm/io/_porespy.py rename to src/openpnm/io/_porespy.py diff --git a/openpnm/io/_salome.py b/src/openpnm/io/_salome.py similarity index 100% rename from openpnm/io/_salome.py rename to src/openpnm/io/_salome.py diff --git a/openpnm/io/_statoil.py b/src/openpnm/io/_statoil.py similarity index 100% rename from openpnm/io/_statoil.py rename to src/openpnm/io/_statoil.py diff --git a/openpnm/io/_stl.py b/src/openpnm/io/_stl.py similarity index 100% rename from openpnm/io/_stl.py rename to src/openpnm/io/_stl.py diff --git a/openpnm/io/_utils.py b/src/openpnm/io/_utils.py similarity index 100% rename from openpnm/io/_utils.py rename to src/openpnm/io/_utils.py diff --git a/openpnm/io/_vtk.py b/src/openpnm/io/_vtk.py similarity index 100% rename from openpnm/io/_vtk.py rename to src/openpnm/io/_vtk.py diff --git a/openpnm/io/_xdmf.py b/src/openpnm/io/_xdmf.py similarity index 100% rename from openpnm/io/_xdmf.py rename to src/openpnm/io/_xdmf.py diff --git a/openpnm/models/__init__.py b/src/openpnm/models/__init__.py similarity index 100% rename from openpnm/models/__init__.py rename to src/openpnm/models/__init__.py diff --git a/openpnm/models/_doctxt.py b/src/openpnm/models/_doctxt.py similarity index 100% rename from openpnm/models/_doctxt.py rename to src/openpnm/models/_doctxt.py diff --git a/openpnm/models/collections/__init__.py b/src/openpnm/models/collections/__init__.py similarity index 100% rename from openpnm/models/collections/__init__.py rename to src/openpnm/models/collections/__init__.py diff --git a/openpnm/models/collections/geometry/__init__.py b/src/openpnm/models/collections/geometry/__init__.py similarity index 100% rename from openpnm/models/collections/geometry/__init__.py rename to src/openpnm/models/collections/geometry/__init__.py diff --git a/openpnm/models/collections/geometry/circles_and_rectangles.py b/src/openpnm/models/collections/geometry/circles_and_rectangles.py similarity index 100% rename from openpnm/models/collections/geometry/circles_and_rectangles.py rename to src/openpnm/models/collections/geometry/circles_and_rectangles.py diff --git a/openpnm/models/collections/geometry/cones_and_cylinders.py b/src/openpnm/models/collections/geometry/cones_and_cylinders.py similarity index 100% rename from openpnm/models/collections/geometry/cones_and_cylinders.py rename to src/openpnm/models/collections/geometry/cones_and_cylinders.py diff --git a/openpnm/models/collections/geometry/cubes_and_cuboids.py b/src/openpnm/models/collections/geometry/cubes_and_cuboids.py similarity index 100% rename from openpnm/models/collections/geometry/cubes_and_cuboids.py rename to src/openpnm/models/collections/geometry/cubes_and_cuboids.py diff --git a/openpnm/models/collections/geometry/pyramids_and_cuboids.py b/src/openpnm/models/collections/geometry/pyramids_and_cuboids.py similarity index 100% rename from openpnm/models/collections/geometry/pyramids_and_cuboids.py rename to src/openpnm/models/collections/geometry/pyramids_and_cuboids.py diff --git a/openpnm/models/collections/geometry/spheres_and_cylinders.py b/src/openpnm/models/collections/geometry/spheres_and_cylinders.py similarity index 100% rename from openpnm/models/collections/geometry/spheres_and_cylinders.py rename to src/openpnm/models/collections/geometry/spheres_and_cylinders.py diff --git a/openpnm/models/collections/geometry/squares_and_rectangles.py b/src/openpnm/models/collections/geometry/squares_and_rectangles.py similarity index 100% rename from openpnm/models/collections/geometry/squares_and_rectangles.py rename to src/openpnm/models/collections/geometry/squares_and_rectangles.py diff --git a/openpnm/models/collections/geometry/trapezoids_and_rectangles.py b/src/openpnm/models/collections/geometry/trapezoids_and_rectangles.py similarity index 100% rename from openpnm/models/collections/geometry/trapezoids_and_rectangles.py rename to src/openpnm/models/collections/geometry/trapezoids_and_rectangles.py diff --git a/openpnm/models/collections/network/__init__.py b/src/openpnm/models/collections/network/__init__.py similarity index 100% rename from openpnm/models/collections/network/__init__.py rename to src/openpnm/models/collections/network/__init__.py diff --git a/openpnm/models/collections/phase/__init__.py b/src/openpnm/models/collections/phase/__init__.py similarity index 100% rename from openpnm/models/collections/phase/__init__.py rename to src/openpnm/models/collections/phase/__init__.py diff --git a/openpnm/models/collections/phase/air.py b/src/openpnm/models/collections/phase/air.py similarity index 100% rename from openpnm/models/collections/phase/air.py rename to src/openpnm/models/collections/phase/air.py diff --git a/openpnm/models/collections/phase/gas.py b/src/openpnm/models/collections/phase/gas.py similarity index 100% rename from openpnm/models/collections/phase/gas.py rename to src/openpnm/models/collections/phase/gas.py diff --git a/openpnm/models/collections/phase/liquid.py b/src/openpnm/models/collections/phase/liquid.py similarity index 100% rename from openpnm/models/collections/phase/liquid.py rename to src/openpnm/models/collections/phase/liquid.py diff --git a/openpnm/models/collections/phase/mercury.py b/src/openpnm/models/collections/phase/mercury.py similarity index 100% rename from openpnm/models/collections/phase/mercury.py rename to src/openpnm/models/collections/phase/mercury.py diff --git a/openpnm/models/collections/phase/water.py b/src/openpnm/models/collections/phase/water.py similarity index 100% rename from openpnm/models/collections/phase/water.py rename to src/openpnm/models/collections/phase/water.py diff --git a/openpnm/models/collections/physics/__init__.py b/src/openpnm/models/collections/physics/__init__.py similarity index 100% rename from openpnm/models/collections/physics/__init__.py rename to src/openpnm/models/collections/physics/__init__.py diff --git a/openpnm/models/collections/physics/basic.py b/src/openpnm/models/collections/physics/basic.py similarity index 100% rename from openpnm/models/collections/physics/basic.py rename to src/openpnm/models/collections/physics/basic.py diff --git a/openpnm/models/collections/physics/standard.py b/src/openpnm/models/collections/physics/standard.py similarity index 100% rename from openpnm/models/collections/physics/standard.py rename to src/openpnm/models/collections/physics/standard.py diff --git a/openpnm/models/geometry/__init__.py b/src/openpnm/models/geometry/__init__.py similarity index 100% rename from openpnm/models/geometry/__init__.py rename to src/openpnm/models/geometry/__init__.py diff --git a/openpnm/models/geometry/_geodocs.py b/src/openpnm/models/geometry/_geodocs.py similarity index 100% rename from openpnm/models/geometry/_geodocs.py rename to src/openpnm/models/geometry/_geodocs.py diff --git a/openpnm/models/geometry/conduit_lengths/__init__.py b/src/openpnm/models/geometry/conduit_lengths/__init__.py similarity index 100% rename from openpnm/models/geometry/conduit_lengths/__init__.py rename to src/openpnm/models/geometry/conduit_lengths/__init__.py diff --git a/openpnm/models/geometry/conduit_lengths/_funcs.py b/src/openpnm/models/geometry/conduit_lengths/_funcs.py similarity index 100% rename from openpnm/models/geometry/conduit_lengths/_funcs.py rename to src/openpnm/models/geometry/conduit_lengths/_funcs.py diff --git a/openpnm/models/geometry/diffusive_size_factors/__init__.py b/src/openpnm/models/geometry/diffusive_size_factors/__init__.py similarity index 100% rename from openpnm/models/geometry/diffusive_size_factors/__init__.py rename to src/openpnm/models/geometry/diffusive_size_factors/__init__.py diff --git a/openpnm/models/geometry/diffusive_size_factors/_funcs.py b/src/openpnm/models/geometry/diffusive_size_factors/_funcs.py similarity index 100% rename from openpnm/models/geometry/diffusive_size_factors/_funcs.py rename to src/openpnm/models/geometry/diffusive_size_factors/_funcs.py diff --git a/openpnm/models/geometry/hydraulic_size_factors/__init__.py b/src/openpnm/models/geometry/hydraulic_size_factors/__init__.py similarity index 100% rename from openpnm/models/geometry/hydraulic_size_factors/__init__.py rename to src/openpnm/models/geometry/hydraulic_size_factors/__init__.py diff --git a/openpnm/models/geometry/hydraulic_size_factors/_funcs.py b/src/openpnm/models/geometry/hydraulic_size_factors/_funcs.py similarity index 100% rename from openpnm/models/geometry/hydraulic_size_factors/_funcs.py rename to src/openpnm/models/geometry/hydraulic_size_factors/_funcs.py diff --git a/openpnm/models/geometry/pore_cross_sectional_area/__init__.py b/src/openpnm/models/geometry/pore_cross_sectional_area/__init__.py similarity index 100% rename from openpnm/models/geometry/pore_cross_sectional_area/__init__.py rename to src/openpnm/models/geometry/pore_cross_sectional_area/__init__.py diff --git a/openpnm/models/geometry/pore_cross_sectional_area/_funcs.py b/src/openpnm/models/geometry/pore_cross_sectional_area/_funcs.py similarity index 100% rename from openpnm/models/geometry/pore_cross_sectional_area/_funcs.py rename to src/openpnm/models/geometry/pore_cross_sectional_area/_funcs.py diff --git a/openpnm/models/geometry/pore_seed/__init__.py b/src/openpnm/models/geometry/pore_seed/__init__.py similarity index 100% rename from openpnm/models/geometry/pore_seed/__init__.py rename to src/openpnm/models/geometry/pore_seed/__init__.py diff --git a/openpnm/models/geometry/pore_seed/_funcs.py b/src/openpnm/models/geometry/pore_seed/_funcs.py similarity index 100% rename from openpnm/models/geometry/pore_seed/_funcs.py rename to src/openpnm/models/geometry/pore_seed/_funcs.py diff --git a/openpnm/models/geometry/pore_size/__init__.py b/src/openpnm/models/geometry/pore_size/__init__.py similarity index 100% rename from openpnm/models/geometry/pore_size/__init__.py rename to src/openpnm/models/geometry/pore_size/__init__.py diff --git a/openpnm/models/geometry/pore_size/_funcs.py b/src/openpnm/models/geometry/pore_size/_funcs.py similarity index 100% rename from openpnm/models/geometry/pore_size/_funcs.py rename to src/openpnm/models/geometry/pore_size/_funcs.py diff --git a/openpnm/models/geometry/pore_surface_area/__init__.py b/src/openpnm/models/geometry/pore_surface_area/__init__.py similarity index 100% rename from openpnm/models/geometry/pore_surface_area/__init__.py rename to src/openpnm/models/geometry/pore_surface_area/__init__.py diff --git a/openpnm/models/geometry/pore_surface_area/_funcs.py b/src/openpnm/models/geometry/pore_surface_area/_funcs.py similarity index 100% rename from openpnm/models/geometry/pore_surface_area/_funcs.py rename to src/openpnm/models/geometry/pore_surface_area/_funcs.py diff --git a/openpnm/models/geometry/pore_volume/__init__.py b/src/openpnm/models/geometry/pore_volume/__init__.py similarity index 100% rename from openpnm/models/geometry/pore_volume/__init__.py rename to src/openpnm/models/geometry/pore_volume/__init__.py diff --git a/openpnm/models/geometry/pore_volume/_funcs.py b/src/openpnm/models/geometry/pore_volume/_funcs.py similarity index 100% rename from openpnm/models/geometry/pore_volume/_funcs.py rename to src/openpnm/models/geometry/pore_volume/_funcs.py diff --git a/openpnm/models/geometry/throat_capillary_shape_factor/__init__.py b/src/openpnm/models/geometry/throat_capillary_shape_factor/__init__.py similarity index 100% rename from openpnm/models/geometry/throat_capillary_shape_factor/__init__.py rename to src/openpnm/models/geometry/throat_capillary_shape_factor/__init__.py diff --git a/openpnm/models/geometry/throat_capillary_shape_factor/_funcs.py b/src/openpnm/models/geometry/throat_capillary_shape_factor/_funcs.py similarity index 100% rename from openpnm/models/geometry/throat_capillary_shape_factor/_funcs.py rename to src/openpnm/models/geometry/throat_capillary_shape_factor/_funcs.py diff --git a/openpnm/models/geometry/throat_centroid/__init__.py b/src/openpnm/models/geometry/throat_centroid/__init__.py similarity index 100% rename from openpnm/models/geometry/throat_centroid/__init__.py rename to src/openpnm/models/geometry/throat_centroid/__init__.py diff --git a/openpnm/models/geometry/throat_centroid/_funcs.py b/src/openpnm/models/geometry/throat_centroid/_funcs.py similarity index 100% rename from openpnm/models/geometry/throat_centroid/_funcs.py rename to src/openpnm/models/geometry/throat_centroid/_funcs.py diff --git a/openpnm/models/geometry/throat_cross_sectional_area/__init__.py b/src/openpnm/models/geometry/throat_cross_sectional_area/__init__.py similarity index 100% rename from openpnm/models/geometry/throat_cross_sectional_area/__init__.py rename to src/openpnm/models/geometry/throat_cross_sectional_area/__init__.py diff --git a/openpnm/models/geometry/throat_cross_sectional_area/_funcs.py b/src/openpnm/models/geometry/throat_cross_sectional_area/_funcs.py similarity index 100% rename from openpnm/models/geometry/throat_cross_sectional_area/_funcs.py rename to src/openpnm/models/geometry/throat_cross_sectional_area/_funcs.py diff --git a/openpnm/models/geometry/throat_endpoints/__init__.py b/src/openpnm/models/geometry/throat_endpoints/__init__.py similarity index 100% rename from openpnm/models/geometry/throat_endpoints/__init__.py rename to src/openpnm/models/geometry/throat_endpoints/__init__.py diff --git a/openpnm/models/geometry/throat_endpoints/_funcs.py b/src/openpnm/models/geometry/throat_endpoints/_funcs.py similarity index 100% rename from openpnm/models/geometry/throat_endpoints/_funcs.py rename to src/openpnm/models/geometry/throat_endpoints/_funcs.py diff --git a/openpnm/models/geometry/throat_length/__init__.py b/src/openpnm/models/geometry/throat_length/__init__.py similarity index 100% rename from openpnm/models/geometry/throat_length/__init__.py rename to src/openpnm/models/geometry/throat_length/__init__.py diff --git a/openpnm/models/geometry/throat_length/_funcs.py b/src/openpnm/models/geometry/throat_length/_funcs.py similarity index 100% rename from openpnm/models/geometry/throat_length/_funcs.py rename to src/openpnm/models/geometry/throat_length/_funcs.py diff --git a/openpnm/models/geometry/throat_perimeter/__init__.py b/src/openpnm/models/geometry/throat_perimeter/__init__.py similarity index 100% rename from openpnm/models/geometry/throat_perimeter/__init__.py rename to src/openpnm/models/geometry/throat_perimeter/__init__.py diff --git a/openpnm/models/geometry/throat_perimeter/_funcs.py b/src/openpnm/models/geometry/throat_perimeter/_funcs.py similarity index 100% rename from openpnm/models/geometry/throat_perimeter/_funcs.py rename to src/openpnm/models/geometry/throat_perimeter/_funcs.py diff --git a/openpnm/models/geometry/throat_seed/__init__.py b/src/openpnm/models/geometry/throat_seed/__init__.py similarity index 100% rename from openpnm/models/geometry/throat_seed/__init__.py rename to src/openpnm/models/geometry/throat_seed/__init__.py diff --git a/openpnm/models/geometry/throat_seed/_funcs.py b/src/openpnm/models/geometry/throat_seed/_funcs.py similarity index 100% rename from openpnm/models/geometry/throat_seed/_funcs.py rename to src/openpnm/models/geometry/throat_seed/_funcs.py diff --git a/openpnm/models/geometry/throat_size/__init__.py b/src/openpnm/models/geometry/throat_size/__init__.py similarity index 100% rename from openpnm/models/geometry/throat_size/__init__.py rename to src/openpnm/models/geometry/throat_size/__init__.py diff --git a/openpnm/models/geometry/throat_size/_funcs.py b/src/openpnm/models/geometry/throat_size/_funcs.py similarity index 100% rename from openpnm/models/geometry/throat_size/_funcs.py rename to src/openpnm/models/geometry/throat_size/_funcs.py diff --git a/openpnm/models/geometry/throat_surface_area/__init__.py b/src/openpnm/models/geometry/throat_surface_area/__init__.py similarity index 100% rename from openpnm/models/geometry/throat_surface_area/__init__.py rename to src/openpnm/models/geometry/throat_surface_area/__init__.py diff --git a/openpnm/models/geometry/throat_surface_area/_funcs.py b/src/openpnm/models/geometry/throat_surface_area/_funcs.py similarity index 100% rename from openpnm/models/geometry/throat_surface_area/_funcs.py rename to src/openpnm/models/geometry/throat_surface_area/_funcs.py diff --git a/openpnm/models/geometry/throat_vector/__init__.py b/src/openpnm/models/geometry/throat_vector/__init__.py similarity index 100% rename from openpnm/models/geometry/throat_vector/__init__.py rename to src/openpnm/models/geometry/throat_vector/__init__.py diff --git a/openpnm/models/geometry/throat_vector/_funcs.py b/src/openpnm/models/geometry/throat_vector/_funcs.py similarity index 100% rename from openpnm/models/geometry/throat_vector/_funcs.py rename to src/openpnm/models/geometry/throat_vector/_funcs.py diff --git a/openpnm/models/geometry/throat_volume/__init__.py b/src/openpnm/models/geometry/throat_volume/__init__.py similarity index 100% rename from openpnm/models/geometry/throat_volume/__init__.py rename to src/openpnm/models/geometry/throat_volume/__init__.py diff --git a/openpnm/models/geometry/throat_volume/_funcs.py b/src/openpnm/models/geometry/throat_volume/_funcs.py similarity index 100% rename from openpnm/models/geometry/throat_volume/_funcs.py rename to src/openpnm/models/geometry/throat_volume/_funcs.py diff --git a/openpnm/models/misc/__init__.py b/src/openpnm/models/misc/__init__.py similarity index 100% rename from openpnm/models/misc/__init__.py rename to src/openpnm/models/misc/__init__.py diff --git a/openpnm/models/misc/_basic_math.py b/src/openpnm/models/misc/_basic_math.py similarity index 100% rename from openpnm/models/misc/_basic_math.py rename to src/openpnm/models/misc/_basic_math.py diff --git a/openpnm/models/misc/_neighbor_lookups.py b/src/openpnm/models/misc/_neighbor_lookups.py similarity index 100% rename from openpnm/models/misc/_neighbor_lookups.py rename to src/openpnm/models/misc/_neighbor_lookups.py diff --git a/openpnm/models/misc/_simple_equations.py b/src/openpnm/models/misc/_simple_equations.py similarity index 100% rename from openpnm/models/misc/_simple_equations.py rename to src/openpnm/models/misc/_simple_equations.py diff --git a/openpnm/models/misc/_statistical_distributions.py b/src/openpnm/models/misc/_statistical_distributions.py similarity index 100% rename from openpnm/models/misc/_statistical_distributions.py rename to src/openpnm/models/misc/_statistical_distributions.py diff --git a/openpnm/models/network/__init__.py b/src/openpnm/models/network/__init__.py similarity index 100% rename from openpnm/models/network/__init__.py rename to src/openpnm/models/network/__init__.py diff --git a/openpnm/models/network/_health.py b/src/openpnm/models/network/_health.py similarity index 100% rename from openpnm/models/network/_health.py rename to src/openpnm/models/network/_health.py diff --git a/openpnm/models/network/_topology.py b/src/openpnm/models/network/_topology.py similarity index 100% rename from openpnm/models/network/_topology.py rename to src/openpnm/models/network/_topology.py diff --git a/openpnm/models/phase/__init__.py b/src/openpnm/models/phase/__init__.py similarity index 100% rename from openpnm/models/phase/__init__.py rename to src/openpnm/models/phase/__init__.py diff --git a/openpnm/models/phase/_phasedocs.py b/src/openpnm/models/phase/_phasedocs.py similarity index 100% rename from openpnm/models/phase/_phasedocs.py rename to src/openpnm/models/phase/_phasedocs.py diff --git a/openpnm/models/phase/critical_props/__init__.py b/src/openpnm/models/phase/critical_props/__init__.py similarity index 100% rename from openpnm/models/phase/critical_props/__init__.py rename to src/openpnm/models/phase/critical_props/__init__.py diff --git a/openpnm/models/phase/critical_props/_funcs.py b/src/openpnm/models/phase/critical_props/_funcs.py similarity index 100% rename from openpnm/models/phase/critical_props/_funcs.py rename to src/openpnm/models/phase/critical_props/_funcs.py diff --git a/openpnm/models/phase/density/__init__.py b/src/openpnm/models/phase/density/__init__.py similarity index 100% rename from openpnm/models/phase/density/__init__.py rename to src/openpnm/models/phase/density/__init__.py diff --git a/openpnm/models/phase/density/_funcs.py b/src/openpnm/models/phase/density/_funcs.py similarity index 100% rename from openpnm/models/phase/density/_funcs.py rename to src/openpnm/models/phase/density/_funcs.py diff --git a/openpnm/models/phase/diffusivity/__init__.py b/src/openpnm/models/phase/diffusivity/__init__.py similarity index 100% rename from openpnm/models/phase/diffusivity/__init__.py rename to src/openpnm/models/phase/diffusivity/__init__.py diff --git a/openpnm/models/phase/diffusivity/_funcs.py b/src/openpnm/models/phase/diffusivity/_funcs.py similarity index 100% rename from openpnm/models/phase/diffusivity/_funcs.py rename to src/openpnm/models/phase/diffusivity/_funcs.py diff --git a/openpnm/models/phase/heat_capacity/__init__.py b/src/openpnm/models/phase/heat_capacity/__init__.py similarity index 100% rename from openpnm/models/phase/heat_capacity/__init__.py rename to src/openpnm/models/phase/heat_capacity/__init__.py diff --git a/openpnm/models/phase/heat_capacity/_funcs.py b/src/openpnm/models/phase/heat_capacity/_funcs.py similarity index 100% rename from openpnm/models/phase/heat_capacity/_funcs.py rename to src/openpnm/models/phase/heat_capacity/_funcs.py diff --git a/openpnm/models/phase/misc/__init__.py b/src/openpnm/models/phase/misc/__init__.py similarity index 100% rename from openpnm/models/phase/misc/__init__.py rename to src/openpnm/models/phase/misc/__init__.py diff --git a/openpnm/models/phase/misc/_funcs.py b/src/openpnm/models/phase/misc/_funcs.py similarity index 100% rename from openpnm/models/phase/misc/_funcs.py rename to src/openpnm/models/phase/misc/_funcs.py diff --git a/openpnm/models/phase/mixtures/__init__.py b/src/openpnm/models/phase/mixtures/__init__.py similarity index 100% rename from openpnm/models/phase/mixtures/__init__.py rename to src/openpnm/models/phase/mixtures/__init__.py diff --git a/openpnm/models/phase/mixtures/_funcs.py b/src/openpnm/models/phase/mixtures/_funcs.py similarity index 100% rename from openpnm/models/phase/mixtures/_funcs.py rename to src/openpnm/models/phase/mixtures/_funcs.py diff --git a/openpnm/models/phase/partition_coefficient/__init__.py b/src/openpnm/models/phase/partition_coefficient/__init__.py similarity index 100% rename from openpnm/models/phase/partition_coefficient/__init__.py rename to src/openpnm/models/phase/partition_coefficient/__init__.py diff --git a/openpnm/models/phase/partition_coefficient/_funcs.py b/src/openpnm/models/phase/partition_coefficient/_funcs.py old mode 100755 new mode 100644 similarity index 100% rename from openpnm/models/phase/partition_coefficient/_funcs.py rename to src/openpnm/models/phase/partition_coefficient/_funcs.py diff --git a/openpnm/models/phase/partition_coefficient/gas_water_henry.csv b/src/openpnm/models/phase/partition_coefficient/gas_water_henry.csv similarity index 100% rename from openpnm/models/phase/partition_coefficient/gas_water_henry.csv rename to src/openpnm/models/phase/partition_coefficient/gas_water_henry.csv diff --git a/openpnm/models/phase/surface_tension/__init__.py b/src/openpnm/models/phase/surface_tension/__init__.py similarity index 100% rename from openpnm/models/phase/surface_tension/__init__.py rename to src/openpnm/models/phase/surface_tension/__init__.py diff --git a/openpnm/models/phase/surface_tension/_funcs.py b/src/openpnm/models/phase/surface_tension/_funcs.py similarity index 100% rename from openpnm/models/phase/surface_tension/_funcs.py rename to src/openpnm/models/phase/surface_tension/_funcs.py diff --git a/openpnm/models/phase/thermal_conductivity/__init__.py b/src/openpnm/models/phase/thermal_conductivity/__init__.py similarity index 100% rename from openpnm/models/phase/thermal_conductivity/__init__.py rename to src/openpnm/models/phase/thermal_conductivity/__init__.py diff --git a/openpnm/models/phase/thermal_conductivity/_funcs.py b/src/openpnm/models/phase/thermal_conductivity/_funcs.py similarity index 100% rename from openpnm/models/phase/thermal_conductivity/_funcs.py rename to src/openpnm/models/phase/thermal_conductivity/_funcs.py diff --git a/openpnm/models/phase/vapor_pressure/__init__.py b/src/openpnm/models/phase/vapor_pressure/__init__.py similarity index 100% rename from openpnm/models/phase/vapor_pressure/__init__.py rename to src/openpnm/models/phase/vapor_pressure/__init__.py diff --git a/openpnm/models/phase/vapor_pressure/_funcs.py b/src/openpnm/models/phase/vapor_pressure/_funcs.py similarity index 100% rename from openpnm/models/phase/vapor_pressure/_funcs.py rename to src/openpnm/models/phase/vapor_pressure/_funcs.py diff --git a/openpnm/models/phase/viscosity/__init__.py b/src/openpnm/models/phase/viscosity/__init__.py similarity index 100% rename from openpnm/models/phase/viscosity/__init__.py rename to src/openpnm/models/phase/viscosity/__init__.py diff --git a/openpnm/models/phase/viscosity/_funcs.py b/src/openpnm/models/phase/viscosity/_funcs.py similarity index 100% rename from openpnm/models/phase/viscosity/_funcs.py rename to src/openpnm/models/phase/viscosity/_funcs.py diff --git a/openpnm/models/physics/__init__.py b/src/openpnm/models/physics/__init__.py similarity index 100% rename from openpnm/models/physics/__init__.py rename to src/openpnm/models/physics/__init__.py diff --git a/openpnm/models/physics/_utils.py b/src/openpnm/models/physics/_utils.py similarity index 100% rename from openpnm/models/physics/_utils.py rename to src/openpnm/models/physics/_utils.py diff --git a/openpnm/models/physics/ad_dif_conductance/__init__.py b/src/openpnm/models/physics/ad_dif_conductance/__init__.py similarity index 100% rename from openpnm/models/physics/ad_dif_conductance/__init__.py rename to src/openpnm/models/physics/ad_dif_conductance/__init__.py diff --git a/openpnm/models/physics/ad_dif_conductance/_funcs.py b/src/openpnm/models/physics/ad_dif_conductance/_funcs.py similarity index 100% rename from openpnm/models/physics/ad_dif_conductance/_funcs.py rename to src/openpnm/models/physics/ad_dif_conductance/_funcs.py diff --git a/openpnm/models/physics/capillary_pressure/__init__.py b/src/openpnm/models/physics/capillary_pressure/__init__.py similarity index 100% rename from openpnm/models/physics/capillary_pressure/__init__.py rename to src/openpnm/models/physics/capillary_pressure/__init__.py diff --git a/openpnm/models/physics/capillary_pressure/_funcs.py b/src/openpnm/models/physics/capillary_pressure/_funcs.py similarity index 100% rename from openpnm/models/physics/capillary_pressure/_funcs.py rename to src/openpnm/models/physics/capillary_pressure/_funcs.py diff --git a/openpnm/models/physics/diffusive_conductance/__init__.py b/src/openpnm/models/physics/diffusive_conductance/__init__.py similarity index 100% rename from openpnm/models/physics/diffusive_conductance/__init__.py rename to src/openpnm/models/physics/diffusive_conductance/__init__.py diff --git a/openpnm/models/physics/diffusive_conductance/_funcs.py b/src/openpnm/models/physics/diffusive_conductance/_funcs.py similarity index 100% rename from openpnm/models/physics/diffusive_conductance/_funcs.py rename to src/openpnm/models/physics/diffusive_conductance/_funcs.py diff --git a/openpnm/models/physics/electrical_conductance/__init__.py b/src/openpnm/models/physics/electrical_conductance/__init__.py similarity index 100% rename from openpnm/models/physics/electrical_conductance/__init__.py rename to src/openpnm/models/physics/electrical_conductance/__init__.py diff --git a/openpnm/models/physics/electrical_conductance/_funcs.py b/src/openpnm/models/physics/electrical_conductance/_funcs.py similarity index 100% rename from openpnm/models/physics/electrical_conductance/_funcs.py rename to src/openpnm/models/physics/electrical_conductance/_funcs.py diff --git a/openpnm/models/physics/hydraulic_conductance/__init__.py b/src/openpnm/models/physics/hydraulic_conductance/__init__.py similarity index 100% rename from openpnm/models/physics/hydraulic_conductance/__init__.py rename to src/openpnm/models/physics/hydraulic_conductance/__init__.py diff --git a/openpnm/models/physics/hydraulic_conductance/_funcs.py b/src/openpnm/models/physics/hydraulic_conductance/_funcs.py similarity index 100% rename from openpnm/models/physics/hydraulic_conductance/_funcs.py rename to src/openpnm/models/physics/hydraulic_conductance/_funcs.py diff --git a/openpnm/models/physics/meniscus/__init__.py b/src/openpnm/models/physics/meniscus/__init__.py similarity index 100% rename from openpnm/models/physics/meniscus/__init__.py rename to src/openpnm/models/physics/meniscus/__init__.py diff --git a/openpnm/models/physics/meniscus/_funcs.py b/src/openpnm/models/physics/meniscus/_funcs.py similarity index 100% rename from openpnm/models/physics/meniscus/_funcs.py rename to src/openpnm/models/physics/meniscus/_funcs.py diff --git a/openpnm/models/physics/multiphase/__init__.py b/src/openpnm/models/physics/multiphase/__init__.py similarity index 100% rename from openpnm/models/physics/multiphase/__init__.py rename to src/openpnm/models/physics/multiphase/__init__.py diff --git a/openpnm/models/physics/multiphase/_funcs.py b/src/openpnm/models/physics/multiphase/_funcs.py similarity index 100% rename from openpnm/models/physics/multiphase/_funcs.py rename to src/openpnm/models/physics/multiphase/_funcs.py diff --git a/openpnm/models/physics/source_terms/__init__.py b/src/openpnm/models/physics/source_terms/__init__.py similarity index 100% rename from openpnm/models/physics/source_terms/__init__.py rename to src/openpnm/models/physics/source_terms/__init__.py diff --git a/openpnm/models/physics/source_terms/_funcs.py b/src/openpnm/models/physics/source_terms/_funcs.py similarity index 100% rename from openpnm/models/physics/source_terms/_funcs.py rename to src/openpnm/models/physics/source_terms/_funcs.py diff --git a/openpnm/models/physics/thermal_conductance/__init__.py b/src/openpnm/models/physics/thermal_conductance/__init__.py similarity index 100% rename from openpnm/models/physics/thermal_conductance/__init__.py rename to src/openpnm/models/physics/thermal_conductance/__init__.py diff --git a/openpnm/models/physics/thermal_conductance/_funcs.py b/src/openpnm/models/physics/thermal_conductance/_funcs.py similarity index 100% rename from openpnm/models/physics/thermal_conductance/_funcs.py rename to src/openpnm/models/physics/thermal_conductance/_funcs.py diff --git a/openpnm/network/__init__.py b/src/openpnm/network/__init__.py similarity index 100% rename from openpnm/network/__init__.py rename to src/openpnm/network/__init__.py diff --git a/openpnm/network/_bcc.py b/src/openpnm/network/_bcc.py similarity index 100% rename from openpnm/network/_bcc.py rename to src/openpnm/network/_bcc.py diff --git a/openpnm/network/_cubic.py b/src/openpnm/network/_cubic.py similarity index 100% rename from openpnm/network/_cubic.py rename to src/openpnm/network/_cubic.py diff --git a/openpnm/network/_cubic_template.py b/src/openpnm/network/_cubic_template.py similarity index 100% rename from openpnm/network/_cubic_template.py rename to src/openpnm/network/_cubic_template.py diff --git a/openpnm/network/_delaunay.py b/src/openpnm/network/_delaunay.py similarity index 100% rename from openpnm/network/_delaunay.py rename to src/openpnm/network/_delaunay.py diff --git a/openpnm/network/_delaunay_voronoi_dual.py b/src/openpnm/network/_delaunay_voronoi_dual.py similarity index 100% rename from openpnm/network/_delaunay_voronoi_dual.py rename to src/openpnm/network/_delaunay_voronoi_dual.py diff --git a/openpnm/network/_demo.py b/src/openpnm/network/_demo.py similarity index 100% rename from openpnm/network/_demo.py rename to src/openpnm/network/_demo.py diff --git a/openpnm/network/_fcc.py b/src/openpnm/network/_fcc.py similarity index 100% rename from openpnm/network/_fcc.py rename to src/openpnm/network/_fcc.py diff --git a/openpnm/network/_network.py b/src/openpnm/network/_network.py similarity index 100% rename from openpnm/network/_network.py rename to src/openpnm/network/_network.py diff --git a/openpnm/network/_voronoi.py b/src/openpnm/network/_voronoi.py similarity index 100% rename from openpnm/network/_voronoi.py rename to src/openpnm/network/_voronoi.py diff --git a/openpnm/phase/__init__.py b/src/openpnm/phase/__init__.py similarity index 100% rename from openpnm/phase/__init__.py rename to src/openpnm/phase/__init__.py diff --git a/openpnm/phase/_air.py b/src/openpnm/phase/_air.py similarity index 100% rename from openpnm/phase/_air.py rename to src/openpnm/phase/_air.py diff --git a/openpnm/phase/_mercury.py b/src/openpnm/phase/_mercury.py similarity index 100% rename from openpnm/phase/_mercury.py rename to src/openpnm/phase/_mercury.py diff --git a/openpnm/phase/_mixture.py b/src/openpnm/phase/_mixture.py similarity index 100% rename from openpnm/phase/_mixture.py rename to src/openpnm/phase/_mixture.py diff --git a/openpnm/phase/_phase.py b/src/openpnm/phase/_phase.py similarity index 100% rename from openpnm/phase/_phase.py rename to src/openpnm/phase/_phase.py diff --git a/openpnm/phase/_species.py b/src/openpnm/phase/_species.py similarity index 100% rename from openpnm/phase/_species.py rename to src/openpnm/phase/_species.py diff --git a/openpnm/phase/_water.py b/src/openpnm/phase/_water.py similarity index 100% rename from openpnm/phase/_water.py rename to src/openpnm/phase/_water.py diff --git a/openpnm/solvers/__init__.py b/src/openpnm/solvers/__init__.py similarity index 100% rename from openpnm/solvers/__init__.py rename to src/openpnm/solvers/__init__.py diff --git a/openpnm/solvers/_base.py b/src/openpnm/solvers/_base.py similarity index 100% rename from openpnm/solvers/_base.py rename to src/openpnm/solvers/_base.py diff --git a/openpnm/solvers/_pardiso.py b/src/openpnm/solvers/_pardiso.py similarity index 100% rename from openpnm/solvers/_pardiso.py rename to src/openpnm/solvers/_pardiso.py diff --git a/openpnm/solvers/_petsc.py b/src/openpnm/solvers/_petsc.py similarity index 100% rename from openpnm/solvers/_petsc.py rename to src/openpnm/solvers/_petsc.py diff --git a/openpnm/solvers/_pyamg.py b/src/openpnm/solvers/_pyamg.py similarity index 100% rename from openpnm/solvers/_pyamg.py rename to src/openpnm/solvers/_pyamg.py diff --git a/openpnm/solvers/_scipy.py b/src/openpnm/solvers/_scipy.py similarity index 100% rename from openpnm/solvers/_scipy.py rename to src/openpnm/solvers/_scipy.py diff --git a/openpnm/topotools/__init__.py b/src/openpnm/topotools/__init__.py similarity index 100% rename from openpnm/topotools/__init__.py rename to src/openpnm/topotools/__init__.py diff --git a/openpnm/topotools/_graphtools.py b/src/openpnm/topotools/_graphtools.py similarity index 100% rename from openpnm/topotools/_graphtools.py rename to src/openpnm/topotools/_graphtools.py diff --git a/openpnm/topotools/_perctools.py b/src/openpnm/topotools/_perctools.py similarity index 100% rename from openpnm/topotools/_perctools.py rename to src/openpnm/topotools/_perctools.py diff --git a/openpnm/topotools/_topotools.py b/src/openpnm/topotools/_topotools.py similarity index 100% rename from openpnm/topotools/_topotools.py rename to src/openpnm/topotools/_topotools.py diff --git a/openpnm/utils/__init__.py b/src/openpnm/utils/__init__.py similarity index 100% rename from openpnm/utils/__init__.py rename to src/openpnm/utils/__init__.py diff --git a/openpnm/utils/_health.py b/src/openpnm/utils/_health.py similarity index 100% rename from openpnm/utils/_health.py rename to src/openpnm/utils/_health.py diff --git a/openpnm/utils/_misc.py b/src/openpnm/utils/_misc.py similarity index 100% rename from openpnm/utils/_misc.py rename to src/openpnm/utils/_misc.py diff --git a/openpnm/utils/_project.py b/src/openpnm/utils/_project.py similarity index 100% rename from openpnm/utils/_project.py rename to src/openpnm/utils/_project.py diff --git a/openpnm/utils/_settings.py b/src/openpnm/utils/_settings.py similarity index 100% rename from openpnm/utils/_settings.py rename to src/openpnm/utils/_settings.py diff --git a/openpnm/utils/_workspace.py b/src/openpnm/utils/_workspace.py similarity index 100% rename from openpnm/utils/_workspace.py rename to src/openpnm/utils/_workspace.py diff --git a/openpnm/utils/jgf_schema.pkl b/src/openpnm/utils/jgf_schema.pkl similarity index 100% rename from openpnm/utils/jgf_schema.pkl rename to src/openpnm/utils/jgf_schema.pkl diff --git a/openpnm/visualization/__init__.py b/src/openpnm/visualization/__init__.py similarity index 100% rename from openpnm/visualization/__init__.py rename to src/openpnm/visualization/__init__.py diff --git a/openpnm/visualization/_conduit_visualizer.py b/src/openpnm/visualization/_conduit_visualizer.py similarity index 100% rename from openpnm/visualization/_conduit_visualizer.py rename to src/openpnm/visualization/_conduit_visualizer.py diff --git a/openpnm/visualization/_plottools.py b/src/openpnm/visualization/_plottools.py similarity index 100% rename from openpnm/visualization/_plottools.py rename to src/openpnm/visualization/_plottools.py From 00b65e06b0116c8140b8799fdd4874ef2e697314 Mon Sep 17 00:00:00 2001 From: jgostick Date: Fri, 21 Nov 2025 14:53:31 -0500 Subject: [PATCH 05/11] This "should" be using bump-my-version now but I did change quite a few things # Conflicts: # .github/workflows/bump-version-dev.yml --- .github/workflows/bump-version-dev.yml | 43 ++----- .github/workflows/bump-version-release.yml | 60 +++++++++ .github/workflows/bump-version.yml | 113 ----------------- .github/workflows/cleanup-tags.yml | 22 ---- pyproject.toml | 37 +++++- setup.cfg | 16 --- src/openpnm/__init__.py | 15 ++- src/openpnm/__version__.py | 1 - uv.lock | 135 ++++++++++++++++----- 9 files changed, 216 insertions(+), 226 deletions(-) create mode 100644 .github/workflows/bump-version-release.yml delete mode 100644 .github/workflows/bump-version.yml delete mode 100644 .github/workflows/cleanup-tags.yml delete mode 100644 setup.cfg delete mode 100644 src/openpnm/__version__.py diff --git a/.github/workflows/bump-version-dev.yml b/.github/workflows/bump-version-dev.yml index 43fcf860c9..ec895f1d84 100644 --- a/.github/workflows/bump-version-dev.yml +++ b/.github/workflows/bump-version-dev.yml @@ -7,7 +7,6 @@ on: jobs: build: - if: (! contains(github.event.head_commit.message, '[no bump]')) name: Bump version runs-on: ubuntu-latest @@ -18,42 +17,18 @@ jobs: - name: Set up Python uses: actions/setup-python@v4 with: - python-version: '3.9' - - - name: Set env variables - run: | - # The next line is very important, otherwise the line after triggers - # git to track the permission change, which breaks bump2version API (needs clean git folder) - git config core.filemode false - chmod +x .github/workflows/utils.sh - echo "VERSION_FILE=openpnm/__version__.py" >> $GITHUB_ENV - echo "SETUP_CFG_FILE=setup.cfg" >> $GITHUB_ENV - echo "${{ github.event.head_commit.message }}" + python-version: '3.12' - name: Install dependencies run: | - pip install bump2version + pip install bump-my-version + git config --local user.email "action@github.com" + git config --local user.name "GitHub Action" - name: Bump version (build) + shell: bash run: | - source .github/workflows/utils.sh - bump_version build $VERSION_FILE - # Note that we don't want to create a new tag for "builds" - - # - name: Commit files - # run: | - # REPOSITORY=${INPUT_REPOSITORY:-$GITHUB_REPOSITORY} - # remote_repo="https://${GITHUB_ACTOR}:${{ secrets.PUSH_ACTION_TOKEN }}@github.com/${REPOSITORY}.git" - - # git config --local user.email "action@github.com" - # git config --local user.name "GitHub Action" - - # # Commit version bump to dev ([no ci] to avoid infinite loop) - # git commit -m "Bump version number (build) [no ci]" -a - # git push "${remote_repo}" dev - - - name: Commit files - uses: stefanzweifel/git-auto-commit-action@v4 - with: - commit_message: Bump version number (build part) - commit_author: Author + bump-my-version bump pre_n --commit --message "Bump version number on dev" + git push origin HEAD:dev + git push --tags + diff --git a/.github/workflows/bump-version-release.yml b/.github/workflows/bump-version-release.yml new file mode 100644 index 0000000000..968dc8ecf2 --- /dev/null +++ b/.github/workflows/bump-version-release.yml @@ -0,0 +1,60 @@ +name: Bump Version (release) + +on: + push: + branches: + - release + +jobs: + build: + + name: Bump version + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.12' + + - name: Install dependencies + run: | + pip install bump-my-version + git config --local user.email "action@github.com" + git config --local user.name "GitHub Action" + + - name: Bump version (patch) + if: contains(github.event.head_commit.message, '#patch') + run: | + bump-my-version bump patch --commit --message "Bump version number on release" + git push origin HEAD:release + git push --tags + + - name: Bump version (minor) + if: contains(github.event.head_commit.message, '#minor') + run: | + bump-my-version bump minor --commit --message "Bump version number on release" + git push origin HEAD:release + git push --tags + + - name: Bump version (major) + if: contains(github.event.head_commit.message, '#major') + run: | + bump-my-version bump major --commit --message "Bump version number on release" + git push origin HEAD:release + git push --tags + + - name: Create Pull Request to merge back release into dev + uses: repo-sync/pull-request@v2 + with: + source_branch: "release" # If blank, default: triggered branch + destination_branch: "dev" # If blank, default: master + pr_title: "Merge release branch back into dev" + pr_body: "Changes made to the release branch (if any), plus the version bump." + pr_assignee: "jgostick" # Comma-separated list (no spaces) + pr_label: "high priority" # Comma-separated list (no spaces) + pr_draft: false # Creates pull request as draft + pr_allow_empty: true # Creates pull request even if there are no changes + github_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/bump-version.yml b/.github/workflows/bump-version.yml deleted file mode 100644 index 699b532fd9..0000000000 --- a/.github/workflows/bump-version.yml +++ /dev/null @@ -1,113 +0,0 @@ -name: Bump Version (release) - -on: - push: - branches: - - release - -jobs: - build: - name: Bump version - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - with: - persist-credentials: false # otherwise, the token used is the GITHUB_TOKEN, instead of your personal token - fetch-depth: 0 # otherwise, you will failed to push refs to dest repo - - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: '3.9' - - - name: Set env variables - run: | - # The next line is very important, otherwise the line after triggers - # git to track the permission change, which breaks bump2version API (needs clean git folder) - git config core.filemode false - chmod +x .github/workflows/utils.sh - echo "VERSION_FILE=openpnm/__version__.py" >> $GITHUB_ENV - echo "SETUP_CFG_FILE=setup.cfg" >> $GITHUB_ENV - echo "${{ github.event.head_commit.message }}" - - - name: Install dependencies - run: | - pip install bump2version - - - name: Bump version (patch) - if: contains(github.event.head_commit.message, '#patch') - run: | - source .github/workflows/utils.sh - bump_version patch $VERSION_FILE - echo "TAG_NEW=v$(get_version $VERSION_FILE)" >> $GITHUB_ENV - - - name: Bump version (minor) - if: contains(github.event.head_commit.message, '#minor') - run: | - source .github/workflows/utils.sh - bump_version minor $VERSION_FILE - echo "TAG_NEW=v$(get_version $VERSION_FILE)" >> $GITHUB_ENV - - - name: Bump version (major) - if: contains(github.event.head_commit.message, '#major') - run: | - source .github/workflows/utils.sh - bump_version major $VERSION_FILE - echo "TAG_NEW=v$(get_version $VERSION_FILE)" >> $GITHUB_ENV - - - name: Strip .dev0 suffix from version file - if: - contains(github.event.head_commit.message, '#patch') || - contains(github.event.head_commit.message, '#minor') || - contains(github.event.head_commit.message, '#major') - run: | - # Remove .dev0 suffix from the version file for releases - sed -i "s/\.dev0'/'/g" $VERSION_FILE - echo "Release version: $(cat $VERSION_FILE)" - - - name: Commit files - if: - contains(github.event.head_commit.message, '#patch') || - contains(github.event.head_commit.message, '#minor') || - contains(github.event.head_commit.message, '#major') - run: | - REPOSITORY=${INPUT_REPOSITORY:-$GITHUB_REPOSITORY} - remote_repo="https://${GITHUB_ACTOR}:${{ secrets.PUSH_ACTION_TOKEN }}@github.com/${REPOSITORY}.git" - - git config --local user.email "action@github.com" - git config --local user.name "GitHub Action" - - # Commit version bump to release - git commit -m "Bump version number" -a - git push "${remote_repo}" release - - - name: Create Pull Request to merge back release into dev - uses: repo-sync/pull-request@v2 - with: - source_branch: "release" # If blank, default: triggered branch - destination_branch: "dev" # If blank, default: master - pr_title: "Merge release branch back into dev" - pr_body: "Changes made to the release branch (e.g. hotfixes), plus the version bump." - pr_assignee: "jgostick,ma-sadeghi" # Comma-separated list (no spaces) - pr_label: "high priority" # Comma-separated list (no spaces) - pr_draft: false # Creates pull request as draft - pr_allow_empty: true # Creates pull request even if there are no changes - github_token: ${{ secrets.GITHUB_TOKEN }} - - - name: Trim the 4th digit from the tag - run: - echo "TAG_NEW=${TAG_NEW%.dev?}" >> $GITHUB_ENV - - - name: Create new tag - run: | - REPOSITORY=${INPUT_REPOSITORY:-$GITHUB_REPOSITORY} - remote_repo="https://${GITHUB_ACTOR}:${{ secrets.PUSH_ACTION_TOKEN }}@github.com/${REPOSITORY}.git" - if [ -z "$TAG_NEW" ] - then - echo "New tag not created." - else - git tag $TAG_NEW - git push "${remote_repo}" $TAG_NEW - echo "Pushed a new tag: $TAG_NEW" - fi diff --git a/.github/workflows/cleanup-tags.yml b/.github/workflows/cleanup-tags.yml deleted file mode 100644 index baa7a58ad9..0000000000 --- a/.github/workflows/cleanup-tags.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: Clean Up Tags - -on: [workflow_dispatch] - -jobs: - deploy: - name: Clean up tags - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - - name: Clean up tags - run: | - git config --local user.email "action@github.com" - git config --local user.name "GitHub Action" - REPOSITORY=${INPUT_REPOSITORY:-$GITHUB_REPOSITORY} - remote_repo="https://${GITHUB_ACTOR}:${{ secrets.GITHUB_TOKEN }}@github.com/${REPOSITORY}.git" - git fetch --all --tags --force - prefix="v" - pattern="^($prefix)(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)(?:-((?:0|[1-9][0-9]*|[0-9]*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9][0-9]*|[0-9]*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$" - git tag | grep --invert-match -P $pattern | xargs -n 1 -I % git push "${remote_repo}" :refs/tags/% diff --git a/pyproject.toml b/pyproject.toml index 462ea90670..76d3c410b9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "openpnm" -dynamic = ["version"] +version = "3.5.5" description = "A framework for conducting pore network modeling simulations of multiphase transport in porous materials" authors = [{ name = "OpenPNM Team", email = "jgostick@gmail.com" }] maintainers = [ @@ -95,8 +95,35 @@ dev = [ requires = ["setuptools>=80"] build-backend = "setuptools.build_meta" -# [tool.setuptools] -# packages = ["openpnm"] +[tool.bumpversion] +current_version = "3.5.5" +parse = """(?x) + (?P0|[1-9]\\d*)\\. + (?P0|[1-9]\\d*)\\. + (?P0|[1-9]\\d*) + (?: + - # dash separator for pre-release section + (?P[a-zA-Z-]+) # pre-release label + (?P0|[1-9]\\d*) # pre-release version number + )? # pre-release section is optional +""" +serialize = [ + "{major}.{minor}.{patch}-{pre_l}{distance_to_latest_tag}", + "{major}.{minor}.{patch}", +] +search = "{current_version}" +replace = "{new_version}" +regex = false +ignore_missing_version = false +tag = false +sign_tags = false +tag_name = "v{new_version}" +tag_message = "Bump version: {current_version} → {new_version}" +allow_dirty = false +commit = false +message = "Bump version: {current_version} → {new_version}" +commit_args = "" -[tool.setuptools.dynamic] -version = {attr = "openpnm.__version__.__version__"} +[tool.bumpversion.parts.pre_l] +values = ["dev", "rc", "final"] +optional_value = "final" diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index 887cb84dee..0000000000 --- a/setup.cfg +++ /dev/null @@ -1,16 +0,0 @@ -[bumpversion] -current_version = 3.5.5.dev0 -parse = (?P\d+)\.(?P\d+)\.(?P\d+)\.(?P\D+)(?P\d+)? -serialize = {major}.{minor}.{patch}.{release}{build} - -[bumpversion:part:release] -values = dev - -[bumpversion:part:build] -first_value = 0 - -[options] -python_requires = >= 3.8 - -[metadata] -license_file = LICENSE diff --git a/src/openpnm/__init__.py b/src/openpnm/__init__.py index a27477e9c5..641a45b38e 100644 --- a/src/openpnm/__init__.py +++ b/src/openpnm/__init__.py @@ -9,15 +9,24 @@ """ import logging - +import importlib.metadata as _metadata +import tomllib as _toml +import numpy as _np from rich.logging import RichHandler + +try: + __version__ = _metadata.version(__package__ or __name__) +except _metadata.PackageNotFoundError: + with open("./pyproject.toml", "rb") as f: + data = _toml.load(f) + __version__ = data["project"]["version"] + FORMAT = "%(message)s" logging.basicConfig( format=FORMAT, datefmt="[%X]", handlers=[RichHandler(rich_tracebacks=True)] ) -import numpy as _np from . import ( _skgraph, @@ -37,5 +46,3 @@ from .utils import Project, Workspace _np.seterr(divide='ignore', invalid='ignore') - -__version__ = utils._get_version() diff --git a/src/openpnm/__version__.py b/src/openpnm/__version__.py deleted file mode 100644 index b363ca0181..0000000000 --- a/src/openpnm/__version__.py +++ /dev/null @@ -1 +0,0 @@ -__version__ = '3.5.5' diff --git a/uv.lock b/uv.lock index f8e54f048d..d9f194d7d2 100644 --- a/uv.lock +++ b/uv.lock @@ -742,6 +742,8 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/1f/8e/abdd3f14d735b2929290a018ecf133c901be4874b858dd1c604b9319f064/greenlet-3.2.4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2523e5246274f54fdadbce8494458a2ebdcdbc7b802318466ac5606d3cded1f8", size = 587684, upload-time = "2025-08-07T13:18:25.164Z" }, { url = "https://files.pythonhosted.org/packages/5d/65/deb2a69c3e5996439b0176f6651e0052542bb6c8f8ec2e3fba97c9768805/greenlet-3.2.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1987de92fec508535687fb807a5cea1560f6196285a4cde35c100b8cd632cc52", size = 1116647, upload-time = "2025-08-07T13:42:38.655Z" }, { url = "https://files.pythonhosted.org/packages/3f/cc/b07000438a29ac5cfb2194bfc128151d52f333cee74dd7dfe3fb733fc16c/greenlet-3.2.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:55e9c5affaa6775e2c6b67659f3a71684de4c549b3dd9afca3bc773533d284fa", size = 1142073, upload-time = "2025-08-07T13:18:21.737Z" }, + { url = "https://files.pythonhosted.org/packages/67/24/28a5b2fa42d12b3d7e5614145f0bd89714c34c08be6aabe39c14dd52db34/greenlet-3.2.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c9c6de1940a7d828635fbd254d69db79e54619f165ee7ce32fda763a9cb6a58c", size = 1548385, upload-time = "2025-11-04T12:42:11.067Z" }, + { url = "https://files.pythonhosted.org/packages/6a/05/03f2f0bdd0b0ff9a4f7b99333d57b53a7709c27723ec8123056b084e69cd/greenlet-3.2.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03c5136e7be905045160b1b9fdca93dd6727b180feeafda6818e6496434ed8c5", size = 1613329, upload-time = "2025-11-04T12:42:12.928Z" }, { url = "https://files.pythonhosted.org/packages/d8/0f/30aef242fcab550b0b3520b8e3561156857c94288f0332a79928c31a52cf/greenlet-3.2.4-cp311-cp311-win_amd64.whl", hash = "sha256:9c40adce87eaa9ddb593ccb0fa6a07caf34015a29bf8d344811665b573138db9", size = 299100, upload-time = "2025-08-07T13:44:12.287Z" }, { url = "https://files.pythonhosted.org/packages/44/69/9b804adb5fd0671f367781560eb5eb586c4d495277c93bde4307b9e28068/greenlet-3.2.4-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3b67ca49f54cede0186854a008109d6ee71f66bd57bb36abd6d0a0267b540cdd", size = 274079, upload-time = "2025-08-07T13:15:45.033Z" }, { url = "https://files.pythonhosted.org/packages/46/e9/d2a80c99f19a153eff70bc451ab78615583b8dac0754cfb942223d2c1a0d/greenlet-3.2.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ddf9164e7a5b08e9d22511526865780a576f19ddd00d62f8a665949327fde8bb", size = 640997, upload-time = "2025-08-07T13:42:56.234Z" }, @@ -751,6 +753,8 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/19/0d/6660d55f7373b2ff8152401a83e02084956da23ae58cddbfb0b330978fe9/greenlet-3.2.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b3812d8d0c9579967815af437d96623f45c0f2ae5f04e366de62a12d83a8fb0", size = 607586, upload-time = "2025-08-07T13:18:28.544Z" }, { url = "https://files.pythonhosted.org/packages/8e/1a/c953fdedd22d81ee4629afbb38d2f9d71e37d23caace44775a3a969147d4/greenlet-3.2.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:abbf57b5a870d30c4675928c37278493044d7c14378350b3aa5d484fa65575f0", size = 1123281, upload-time = "2025-08-07T13:42:39.858Z" }, { url = "https://files.pythonhosted.org/packages/3f/c7/12381b18e21aef2c6bd3a636da1088b888b97b7a0362fac2e4de92405f97/greenlet-3.2.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:20fb936b4652b6e307b8f347665e2c615540d4b42b3b4c8a321d8286da7e520f", size = 1151142, upload-time = "2025-08-07T13:18:22.981Z" }, + { url = "https://files.pythonhosted.org/packages/27/45/80935968b53cfd3f33cf99ea5f08227f2646e044568c9b1555b58ffd61c2/greenlet-3.2.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ee7a6ec486883397d70eec05059353b8e83eca9168b9f3f9a361971e77e0bcd0", size = 1564846, upload-time = "2025-11-04T12:42:15.191Z" }, + { url = "https://files.pythonhosted.org/packages/69/02/b7c30e5e04752cb4db6202a3858b149c0710e5453b71a3b2aec5d78a1aab/greenlet-3.2.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:326d234cbf337c9c3def0676412eb7040a35a768efc92504b947b3e9cfc7543d", size = 1633814, upload-time = "2025-11-04T12:42:17.175Z" }, { url = "https://files.pythonhosted.org/packages/e9/08/b0814846b79399e585f974bbeebf5580fbe59e258ea7be64d9dfb253c84f/greenlet-3.2.4-cp312-cp312-win_amd64.whl", hash = "sha256:a7d4e128405eea3814a12cc2605e0e6aedb4035bf32697f72deca74de4105e02", size = 299899, upload-time = "2025-08-07T13:38:53.448Z" }, { url = "https://files.pythonhosted.org/packages/49/e8/58c7f85958bda41dafea50497cbd59738c5c43dbbea5ee83d651234398f4/greenlet-3.2.4-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:1a921e542453fe531144e91e1feedf12e07351b1cf6c9e8a3325ea600a715a31", size = 272814, upload-time = "2025-08-07T13:15:50.011Z" }, { url = "https://files.pythonhosted.org/packages/62/dd/b9f59862e9e257a16e4e610480cfffd29e3fae018a68c2332090b53aac3d/greenlet-3.2.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cd3c8e693bff0fff6ba55f140bf390fa92c994083f838fece0f63be121334945", size = 641073, upload-time = "2025-08-07T13:42:57.23Z" }, @@ -760,6 +764,8 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ee/43/3cecdc0349359e1a527cbf2e3e28e5f8f06d3343aaf82ca13437a9aa290f/greenlet-3.2.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:23768528f2911bcd7e475210822ffb5254ed10d71f4028387e5a99b4c6699671", size = 610497, upload-time = "2025-08-07T13:18:31.636Z" }, { url = "https://files.pythonhosted.org/packages/b8/19/06b6cf5d604e2c382a6f31cafafd6f33d5dea706f4db7bdab184bad2b21d/greenlet-3.2.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:00fadb3fedccc447f517ee0d3fd8fe49eae949e1cd0f6a611818f4f6fb7dc83b", size = 1121662, upload-time = "2025-08-07T13:42:41.117Z" }, { url = "https://files.pythonhosted.org/packages/a2/15/0d5e4e1a66fab130d98168fe984c509249c833c1a3c16806b90f253ce7b9/greenlet-3.2.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:d25c5091190f2dc0eaa3f950252122edbbadbb682aa7b1ef2f8af0f8c0afefae", size = 1149210, upload-time = "2025-08-07T13:18:24.072Z" }, + { url = "https://files.pythonhosted.org/packages/1c/53/f9c440463b3057485b8594d7a638bed53ba531165ef0ca0e6c364b5cc807/greenlet-3.2.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6e343822feb58ac4d0a1211bd9399de2b3a04963ddeec21530fc426cc121f19b", size = 1564759, upload-time = "2025-11-04T12:42:19.395Z" }, + { url = "https://files.pythonhosted.org/packages/47/e4/3bb4240abdd0a8d23f4f88adec746a3099f0d86bfedb623f063b2e3b4df0/greenlet-3.2.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ca7f6f1f2649b89ce02f6f229d7c19f680a6238af656f61e0115b24857917929", size = 1634288, upload-time = "2025-11-04T12:42:21.174Z" }, { url = "https://files.pythonhosted.org/packages/0b/55/2321e43595e6801e105fcfdee02b34c0f996eb71e6ddffca6b10b7e1d771/greenlet-3.2.4-cp313-cp313-win_amd64.whl", hash = "sha256:554b03b6e73aaabec3745364d6239e9e012d64c68ccd0b8430c64ccc14939a8b", size = 299685, upload-time = "2025-08-07T13:24:38.824Z" }, ] @@ -940,15 +946,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/89/ed/13fed53fcc7ea17ff84095e89e63418df91d4eeefdc74454243d529bf5a3/intel_openmp-2025.2.1-py2.py3-none-win_amd64.whl", hash = "sha256:ac69973d6c489ec3697bb320ccce0b274de4462f463e5ea0f078abbcbb933e09", size = 34021986, upload-time = "2025-08-13T18:31:09.507Z" }, ] -[[package]] -name = "ipaddress" -version = "1.0.23" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b9/9a/3e9da40ea28b8210dd6504d3fe9fe7e013b62bf45902b458d1cdc3c34ed9/ipaddress-1.0.23.tar.gz", hash = "sha256:b7f8e0369580bb4a24d5ba1d7cc29660a4a6987763faf1d8a8046830e020e7e2", size = 32958, upload-time = "2019-10-18T01:30:24.58Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c2/f8/49697181b1651d8347d24c095ce46c7346c37335ddc7d255833e7cde674d/ipaddress-1.0.23-py2.py3-none-any.whl", hash = "sha256:6e0f4a39e66cb5bb9a137b00276a2eff74f93b71dcbdad6f10ff7df9d3557fcc", size = 18159, upload-time = "2019-10-18T01:30:27.002Z" }, -] - [[package]] name = "ipykernel" version = "6.30.1" @@ -1744,6 +1741,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b2/bc/465daf1de06409cdd4532082806770ee0d8d7df434da79c76564d0f69741/namex-0.1.0-py3-none-any.whl", hash = "sha256:e2012a474502f1e2251267062aae3114611f07df4224b6e06334c57b0f2ce87c", size = 5905, upload-time = "2025-05-26T23:17:37.695Z" }, ] +[[package]] +name = "narwhals" +version = "2.12.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/93/f8/e1c28f24b641871c14ccae7ba6381f3c7827789a06e947ce975ae8a9075a/narwhals-2.12.0.tar.gz", hash = "sha256:075b6d56f3a222613793e025744b129439ecdff9292ea6615dd983af7ba6ea44", size = 590404, upload-time = "2025-11-17T10:53:28.381Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/9a/c6f79de7ba3a0a8473129936b7b90aa461d3d46fec6f1627672b1dccf4e9/narwhals-2.12.0-py3-none-any.whl", hash = "sha256:baeba5d448a30b04c299a696bd9ee5ff73e4742143e06c49ca316b46539a7cbb", size = 425014, upload-time = "2025-11-17T10:53:26.65Z" }, +] + [[package]] name = "nbclient" version = "0.10.2" @@ -1837,17 +1843,34 @@ wheels = [ ] [[package]] -name = "netgen" -version = "0.3.0" +name = "netgen-mesher" +version = "6.2.2506" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "ipaddress" }, - { name = "jinja2" }, - { name = "pyyaml" }, - { name = "six" }, - { name = "voluptuous" }, + { name = "netgen-occt" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/37/dc/a35f2305ba2911e1656d839eaf1ec26843c2f00bb817a922757b7288d294/netgen_mesher-6.2.2506-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:e740ebfc678a108b79318c74ea82dfed4885b06107f9d086af59094620077aa4", size = 10440710, upload-time = "2025-09-08T11:10:58.159Z" }, + { url = "https://files.pythonhosted.org/packages/cd/e3/2e7a90ca96fc066a589926b127f3e9f3313d3992c56d71865a45c58777b6/netgen_mesher-6.2.2506-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b309656a9d019544cbcad91a2fca7e6daae1918376745830a4d24521ef9b6759", size = 7216429, upload-time = "2025-09-08T10:59:26.184Z" }, + { url = "https://files.pythonhosted.org/packages/d3/f6/a2a3867d85ce9e2096e7d8066a54120abe2699e24d0664c399e528cdc732/netgen_mesher-6.2.2506-cp311-cp311-win_amd64.whl", hash = "sha256:8f52571814fce5a2ac19a481d5ee186462c5e0e259c8eefa997e4e6dcf2d8927", size = 4767932, upload-time = "2025-09-08T11:05:16.053Z" }, + { url = "https://files.pythonhosted.org/packages/44/1e/8584de74189955e3afc19215547096b846299bb8c883c78d76d02677bc4e/netgen_mesher-6.2.2506-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:e93b7d055b52ace600b80999152b6afe12d84048109ca3d88402f82addc736d0", size = 10544043, upload-time = "2025-09-08T11:08:00.516Z" }, + { url = "https://files.pythonhosted.org/packages/6e/3b/39c88f955eb7fd0e7419c28f60ceac5d4f42e7a1cfabf9160b9c35a81065/netgen_mesher-6.2.2506-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff6f151fb87c8a11392f1614bb64fbfb2bdcc3073a74c8f14c67a7c5f1e848f8", size = 7236644, upload-time = "2025-09-08T10:58:23.357Z" }, + { url = "https://files.pythonhosted.org/packages/33/73/6bc498cf47b0402a15a1207b50d0305ef3977c2034883f3fe60f9c4ebb50/netgen_mesher-6.2.2506-cp312-cp312-win_amd64.whl", hash = "sha256:fab4274474b23fc8b557b81207dbccd50828d8553cdb34f8e73ec456def2c4ef", size = 4678790, upload-time = "2025-09-08T11:01:33.44Z" }, + { url = "https://files.pythonhosted.org/packages/4b/09/50e5d9b57594845d20b78485442fbe9d0009186ff362520c8ca2c61234d8/netgen_mesher-6.2.2506-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:bf01c9138071377cb955cb26b8a95295d40b49ba506c601f969453555a5fd9b9", size = 10544973, upload-time = "2025-09-08T10:57:48.05Z" }, + { url = "https://files.pythonhosted.org/packages/35/71/884d43bdf4c2920207e65ac5def2005f39e41e3b645095e7041331245af5/netgen_mesher-6.2.2506-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:039620c434374b5163e9f246ed8d4536213974d8a7daaa2b2bdb25e94300b225", size = 7236514, upload-time = "2025-09-08T10:57:18.362Z" }, + { url = "https://files.pythonhosted.org/packages/ff/c5/377abd9ed5481d4440259649b010f01d350d0aa490aab4e01c80d848e96b/netgen_mesher-6.2.2506-cp313-cp313-win_amd64.whl", hash = "sha256:359a984f28e9e5e1aaeab05a00fb1306f7742a96310f7f32a9962c9541e68eaa", size = 4678925, upload-time = "2025-09-08T10:58:19.412Z" }, +] + +[[package]] +name = "netgen-occt" +version = "7.8.1" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/14/bf/82b076795dc8d26bcd37a89308cde295a5c3296d948a7cf11a8b483476da/netgen_occt-7.8.1-py3-none-macosx_10_15_x86_64.whl", hash = "sha256:fd2883ae5ce119cb0ff3467f6fc6d2e1540d6622662bdb2327c341ea302ada07", size = 21554286, upload-time = "2024-06-21T13:25:12.364Z" }, + { url = "https://files.pythonhosted.org/packages/31/14/04f6ccea776378394861c56e7c12da5b1a1df934b1ae14b40654bff63874/netgen_occt-7.8.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:c93a22f7459866f3eba3e93d24bd184dcc93c4352817dac0520ca30f2edf50a9", size = 19837849, upload-time = "2024-06-21T13:25:15.9Z" }, + { url = "https://files.pythonhosted.org/packages/2a/9e/dbe6b538248f6e2d7c2972cdf9aa59e2904505c4a345fcd6cfcfe1841f9f/netgen_occt-7.8.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db71d77f56f79c0768489e76dde8febdeb25b95777986587a5d09575fa112f94", size = 25610800, upload-time = "2024-06-21T13:25:19.373Z" }, + { url = "https://files.pythonhosted.org/packages/00/6f/9e838c4e4445aa0dddff2501e7744787c941635b99589d968db14b1b20a2/netgen_occt-7.8.1-py3-none-win_amd64.whl", hash = "sha256:f701705183832cf2497c6c9339886d95dede7be63187f06be89fa146f6463d09", size = 18924411, upload-time = "2024-06-21T13:25:22.86Z" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/16/48/e0d8023c3d853f1d3ef721e68520e7145b1aa915a27b83d1b71316a7288a/netgen-0.3.0.tar.gz", hash = "sha256:aed464b1b639945aae8b6d95289918a827c73338d59217f05ecd5d6a2260c109", size = 4649, upload-time = "2015-07-31T09:56:16.76Z" } [[package]] name = "networkx" @@ -1858,6 +1881,25 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl", hash = "sha256:0030d386a9a06dee3565298b4a734b68589749a544acbb6c412dc9e2489ec6ec", size = 2034406, upload-time = "2025-05-29T11:35:04.961Z" }, ] +[[package]] +name = "ngsolve" +version = "6.2.2506" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "netgen-mesher" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/aa/03/cd4d1df67301e6ed5d7d9d3875fe3ded9289a868e824903a4b6889f8a5c8/ngsolve-6.2.2506-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:fe3bbf76c01682388c37d55889df62f0c4d67fec7749473b6bde73158c18408a", size = 38449087, upload-time = "2025-09-08T13:51:16.247Z" }, + { url = "https://files.pythonhosted.org/packages/16/84/dc7b3902d1a91d09a59b2e1e40547650769180a29b37698dabe770fc5dd0/ngsolve-6.2.2506-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:7e33aba0e99f1215d726c8578e6b5b0a040dd250af71e812f2c0991343f83393", size = 26484101, upload-time = "2025-09-08T13:40:39.661Z" }, + { url = "https://files.pythonhosted.org/packages/90/28/5627bdbd56cd2208039358929e0671f86752e2a13b1ef3ed838c757aaff3/ngsolve-6.2.2506-cp311-cp311-win_amd64.whl", hash = "sha256:3c9f3de67d52ec8c3c6b1169d259ac23c329e0807b0635ec3cfbb2dbee6fcd11", size = 13381797, upload-time = "2025-09-08T14:36:24.046Z" }, + { url = "https://files.pythonhosted.org/packages/a4/13/2007c303a26807008df9e92357c58898e5bef479314dad3d7b06f9402607/ngsolve-6.2.2506-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:8a4570ca0cfa7cd68cbd6c31ac58db22ad816ae29e2d5afa0b351268de8239e0", size = 38603628, upload-time = "2025-09-08T13:42:49.888Z" }, + { url = "https://files.pythonhosted.org/packages/0d/07/cd4b2f60e2267c5433338e0473afd72f7d956cd024a99c97b18de4b57671/ngsolve-6.2.2506-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:5f33cef78ab6e4c659c45df65888fb8234c53cb0bbc100ee01f9028b1bd423fe", size = 26511681, upload-time = "2025-09-08T13:37:45.564Z" }, + { url = "https://files.pythonhosted.org/packages/f6/6a/4ef97555831719af60d54d29f89dd6f76d2e4d743f50ad0f09ec08487419/ngsolve-6.2.2506-cp312-cp312-win_amd64.whl", hash = "sha256:3b29b674adffef8723233cc6a7eb651af710ff3a704b58f7ced11094a3204820", size = 13225431, upload-time = "2025-09-08T14:13:37.875Z" }, + { url = "https://files.pythonhosted.org/packages/f2/eb/b76d9cee819aac4b2e3a877b98ee6182d65834fe0d3eeb462e0b94b6561a/ngsolve-6.2.2506-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:30395aeba6359e7eec378d5619baed9e4f5e28620be3aa2b86b294eda485a57b", size = 38605253, upload-time = "2025-09-08T13:34:18.935Z" }, + { url = "https://files.pythonhosted.org/packages/58/e7/f74e78284a6e45dc665b752581a5df8d84ae7a8626f6a3ca2ee6dc864c4b/ngsolve-6.2.2506-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:18dd1084d7975172993ed08c22c4046dd2d98da15827cb2b223d7e2cb0309fe1", size = 26513499, upload-time = "2025-09-08T13:34:51.505Z" }, + { url = "https://files.pythonhosted.org/packages/5e/c7/67f308cd82d932510f6b862527818a3da3ef4e5241b062dda306b38b560d/ngsolve-6.2.2506-cp313-cp313-win_amd64.whl", hash = "sha256:ad9ce28edd57ecc15b25116b4cdd4ba6928e63707f45b9b52e0b358001043fe8", size = 13225979, upload-time = "2025-09-08T13:50:45.472Z" }, +] + [[package]] name = "notebook" version = "7.4.5" @@ -1963,7 +2005,7 @@ wheels = [ [[package]] name = "openpnm" -source = { virtual = "." } +source = { editable = "." } dependencies = [ { name = "docrep" }, { name = "h5py" }, @@ -1976,6 +2018,7 @@ dependencies = [ { name = "numpy" }, { name = "pandas" }, { name = "pyamg" }, + { name = "pypardiso", marker = "platform_machine == 'AMD64' or platform_machine == 'x86_64'" }, { name = "rich" }, { name = "scikit-image" }, { name = "scipy" }, @@ -1991,6 +2034,7 @@ docs = [ { name = "myst-nb" }, { name = "nbstripout" }, { name = "pandoc" }, + { name = "plotly" }, { name = "pydata-sphinx-theme" }, { name = "sphinx" }, { name = "sphinx-autoapi" }, @@ -1999,9 +2043,8 @@ docs = [ { name = "tensorflow" }, ] extras = [ - { name = "netgen" }, + { name = "ngsolve" }, { name = "porespy" }, - { name = "pypardiso" }, ] interactive = [ { name = "ipykernel" }, @@ -2009,12 +2052,14 @@ interactive = [ { name = "ipywidgets" }, { name = "jupyter" }, { name = "jupyterlab-widgets" }, + { name = "plotly" }, { name = "spyder-kernels" }, ] test = [ { name = "codecov" }, { name = "coverage" }, { name = "nbval" }, + { name = "py" }, { name = "pytest" }, { name = "pytest-cache" }, { name = "pytest-cov" }, @@ -2022,6 +2067,11 @@ test = [ { name = "pytest-split" }, ] +[package.dev-dependencies] +dev = [ + { name = "openpnm", extra = ["docs", "interactive", "test"] }, +] + [package.metadata] requires-dist = [ { name = "codecov", marker = "extra == 'test'" }, @@ -2041,16 +2091,19 @@ requires-dist = [ { name = "myst-nb", marker = "extra == 'docs'" }, { name = "nbstripout", marker = "extra == 'docs'", specifier = ">=0.8.1" }, { name = "nbval", marker = "extra == 'test'" }, - { name = "netgen", marker = "extra == 'extras'" }, { name = "networkx", specifier = ">=3.5" }, + { name = "ngsolve", marker = "extra == 'extras'" }, { name = "numba", specifier = ">=0.61" }, { name = "numpy", specifier = "<2.2" }, { name = "pandas", specifier = ">=2.3.2" }, { name = "pandoc", marker = "extra == 'docs'" }, + { name = "plotly", marker = "extra == 'docs'" }, + { name = "plotly", marker = "extra == 'interactive'" }, { name = "porespy", marker = "extra == 'extras'" }, + { name = "py", marker = "extra == 'test'" }, { name = "pyamg", specifier = ">=5.3.0" }, { name = "pydata-sphinx-theme", marker = "extra == 'docs'" }, - { name = "pypardiso", marker = "extra == 'extras'" }, + { name = "pypardiso", marker = "platform_machine == 'AMD64' or platform_machine == 'x86_64'" }, { name = "pytest", marker = "extra == 'test'" }, { name = "pytest-cache", marker = "extra == 'test'" }, { name = "pytest-cov", marker = "extra == 'test'" }, @@ -2072,6 +2125,13 @@ requires-dist = [ ] provides-extras = ["extras", "test", "docs", "interactive"] +[package.metadata.requires-dev] +dev = [ + { name = "openpnm", extras = ["docs"] }, + { name = "openpnm", extras = ["interactive"] }, + { name = "openpnm", extras = ["test"] }, +] + [[package]] name = "opt-einsum" version = "3.4.0" @@ -2321,6 +2381,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/40/4b/2028861e724d3bd36227adfa20d3fd24c3fc6d52032f4a93c133be5d17ce/platformdirs-4.4.0-py3-none-any.whl", hash = "sha256:abd01743f24e5287cd7a5db3752faf1a2d65353f38ec26d98e25a6db65958c85", size = 18654, upload-time = "2025-08-26T14:32:02.735Z" }, ] +[[package]] +name = "plotly" +version = "6.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "narwhals" }, + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/94/05/1199e2a03ce6637960bc1e951ca0f928209a48cfceb57355806a88f214cf/plotly-6.5.0.tar.gz", hash = "sha256:d5d38224883fd38c1409bef7d6a8dc32b74348d39313f3c52ca998b8e447f5c8", size = 7013624, upload-time = "2025-11-17T18:39:24.523Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/c3/3031c931098de393393e1f93a38dc9ed6805d86bb801acc3cf2d5bd1e6b7/plotly-6.5.0-py3-none-any.whl", hash = "sha256:5ac851e100367735250206788a2b1325412aa4a4917a4fe3e6f0bc5aa6f3d90a", size = 9893174, upload-time = "2025-11-17T18:39:20.351Z" }, +] + [[package]] name = "pluggy" version = "1.6.0" @@ -2446,6 +2519,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842, upload-time = "2024-07-21T12:58:20.04Z" }, ] +[[package]] +name = "py" +version = "1.11.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/98/ff/fec109ceb715d2a6b4c4a85a61af3b40c723a961e8828319fbcb15b868dc/py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719", size = 207796, upload-time = "2021-11-04T17:17:01.377Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f6/f0/10642828a8dfb741e5f3fbaac830550a518a775c7fff6f04a007259b0548/py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378", size = 98708, upload-time = "2021-11-04T17:17:00.152Z" }, +] + [[package]] name = "pyamg" version = "5.3.0" @@ -3612,15 +3694,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload-time = "2025-06-18T14:07:40.39Z" }, ] -[[package]] -name = "voluptuous" -version = "0.15.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/91/af/a54ce0fb6f1d867e0b9f0efe5f082a691f51ccf705188fca67a3ecefd7f4/voluptuous-0.15.2.tar.gz", hash = "sha256:6ffcab32c4d3230b4d2af3a577c87e1908a714a11f6f95570456b1849b0279aa", size = 51651, upload-time = "2024-07-02T19:10:00.528Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/db/a8/8f9cc6749331186e6a513bfe3745454f81d25f6e34c6024f88f80c71ed28/voluptuous-0.15.2-py3-none-any.whl", hash = "sha256:016348bc7788a9af9520b1764ebd4de0df41fe2138ebe9e06fa036bf86a65566", size = 31349, upload-time = "2024-07-02T19:09:58.125Z" }, -] - [[package]] name = "wcwidth" version = "0.2.13" From e4b1360c92ad9c91cb3cedd3cbac1732d461d167 Mon Sep 17 00:00:00 2001 From: jgostick Date: Fri, 21 Nov 2025 19:21:55 -0500 Subject: [PATCH 06/11] strangely had distance to nearest tag in the parse config --- pyproject.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 76d3c410b9..9020401018 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -108,14 +108,14 @@ parse = """(?x) )? # pre-release section is optional """ serialize = [ - "{major}.{minor}.{patch}-{pre_l}{distance_to_latest_tag}", + "{major}.{minor}.{patch}-{pre_l}{pre_n}", "{major}.{minor}.{patch}", ] search = "{current_version}" replace = "{new_version}" regex = false ignore_missing_version = false -tag = false +tag = true sign_tags = false tag_name = "v{new_version}" tag_message = "Bump version: {current_version} → {new_version}" @@ -126,4 +126,4 @@ commit_args = "" [tool.bumpversion.parts.pre_l] values = ["dev", "rc", "final"] -optional_value = "final" +optional_value = "dev" From 94055b0e38a3517c56efdc7a8aad93d09ce7a5c1 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Sat, 22 Nov 2025 00:22:14 +0000 Subject: [PATCH 07/11] Bump version number on dev --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 9020401018..8205e822a7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "openpnm" -version = "3.5.5" +version = "3.5.5-dev1" description = "A framework for conducting pore network modeling simulations of multiphase transport in porous materials" authors = [{ name = "OpenPNM Team", email = "jgostick@gmail.com" }] maintainers = [ @@ -96,7 +96,7 @@ requires = ["setuptools>=80"] build-backend = "setuptools.build_meta" [tool.bumpversion] -current_version = "3.5.5" +current_version = "3.5.5-dev1" parse = """(?x) (?P0|[1-9]\\d*)\\. (?P0|[1-9]\\d*)\\. From ec4eb0d91d56a5f31af60cbf6ee62ea092404d4e Mon Sep 17 00:00:00 2001 From: jgostick Date: Fri, 21 Nov 2025 19:33:29 -0500 Subject: [PATCH 08/11] hacking the version logic since it was not showing the dev1 part --- src/openpnm/__init__.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/openpnm/__init__.py b/src/openpnm/__init__.py index 641a45b38e..28794749c6 100644 --- a/src/openpnm/__init__.py +++ b/src/openpnm/__init__.py @@ -15,12 +15,12 @@ from rich.logging import RichHandler -try: - __version__ = _metadata.version(__package__ or __name__) -except _metadata.PackageNotFoundError: - with open("./pyproject.toml", "rb") as f: - data = _toml.load(f) - __version__ = data["project"]["version"] +# try: +# __version__ = _metadata.version(__package__ or __name__) +# except _metadata.PackageNotFoundError: +with open("./pyproject.toml", "rb") as f: + data = _toml.load(f) + __version__ = data["project"]["version"] FORMAT = "%(message)s" logging.basicConfig( From 807859a45dab4ae6b1aac9f21d81bac823b3e268 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Sat, 22 Nov 2025 00:33:57 +0000 Subject: [PATCH 09/11] Bump version number on dev --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 8205e822a7..8a2695c878 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "openpnm" -version = "3.5.5-dev1" +version = "3.5.5-dev2" description = "A framework for conducting pore network modeling simulations of multiphase transport in porous materials" authors = [{ name = "OpenPNM Team", email = "jgostick@gmail.com" }] maintainers = [ @@ -96,7 +96,7 @@ requires = ["setuptools>=80"] build-backend = "setuptools.build_meta" [tool.bumpversion] -current_version = "3.5.5-dev1" +current_version = "3.5.5-dev2" parse = """(?x) (?P0|[1-9]\\d*)\\. (?P0|[1-9]\\d*)\\. From eb7d301533aed3c5b0f5cf10b21a75d2bd22f524 Mon Sep 17 00:00:00 2001 From: jgostick Date: Sat, 22 Nov 2025 09:14:20 -0500 Subject: [PATCH 10/11] updating actions versions and hard coding bump-my-version to 1.2.4 --- .github/workflows/bump-version-dev.yml | 6 +++--- .github/workflows/bump-version-release.yml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/bump-version-dev.yml b/.github/workflows/bump-version-dev.yml index ec895f1d84..b80d1ec3c0 100644 --- a/.github/workflows/bump-version-dev.yml +++ b/.github/workflows/bump-version-dev.yml @@ -12,16 +12,16 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v5 - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v6 with: python-version: '3.12' - name: Install dependencies run: | - pip install bump-my-version + pip install bump-my-version==1.2.4 git config --local user.email "action@github.com" git config --local user.name "GitHub Action" diff --git a/.github/workflows/bump-version-release.yml b/.github/workflows/bump-version-release.yml index 968dc8ecf2..0d3b08656e 100644 --- a/.github/workflows/bump-version-release.yml +++ b/.github/workflows/bump-version-release.yml @@ -12,16 +12,16 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v5 - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v6 with: python-version: '3.12' - name: Install dependencies run: | - pip install bump-my-version + pip install bump-my-version==1.2.4 git config --local user.email "action@github.com" git config --local user.name "GitHub Action" From e531466004f407e81b1741c590beca5d54d5cbc7 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Sat, 22 Nov 2025 14:14:40 +0000 Subject: [PATCH 11/11] Bump version number on dev --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 8a2695c878..b3bbe6e959 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "openpnm" -version = "3.5.5-dev2" +version = "3.5.5-dev3" description = "A framework for conducting pore network modeling simulations of multiphase transport in porous materials" authors = [{ name = "OpenPNM Team", email = "jgostick@gmail.com" }] maintainers = [ @@ -96,7 +96,7 @@ requires = ["setuptools>=80"] build-backend = "setuptools.build_meta" [tool.bumpversion] -current_version = "3.5.5-dev2" +current_version = "3.5.5-dev3" parse = """(?x) (?P0|[1-9]\\d*)\\. (?P0|[1-9]\\d*)\\.