tablegis
tablegis is a Python package for geospatial data processing and analysis, built on geopandas, pandas, shapely, and pyproj. It provides a series of utility functions to simplify common GIS operations.
Features
- Distance Calculation: Efficiently compute the nearest distance between DataFrames.
- Spatial Analysis: Create buffers (input in meters), Voronoi polygons, Delaunay triangulations, etc.
- Format Conversion: Easily convert between
GeoDataFrameand formats likeShapefile,KML, etc. - Coordinate Aggregation: Provides tools for aggregating coordinate points into grids.
- Geometric Operations: Includes merging polygons, calculating centroids, adding sectors, etc.
- Fast Table Reading: Read large Excel/CSV files 10-50x faster with Polars + Parquet caching.
Installation
1、You can install tablegis from PyPI:
pip install tablegis
2、Or, install the latest version directly from the GitHub repository:
pip install git+https://github.com/Non-existent987/tablegis.git
3、After downloading the project, it is convenient to import from local files for modification.
import sys
import pandas as pd
# Find the file path of the tablegis you downloaded.
sys.path.insert(0, r'C:\Users\Administrator\Desktop\tablegis')
# Now it can be imported.
import tablegis as tg
Quick Start
Here is a simple example of how to use tablegis:
1. Find the nearest point (in df2) for each point in df1 and add its ID, longitude, latitude, and distance.
import pandas as pd
import tablegis as tg
# Create two example DataFrames
df1 = pd.DataFrame({
'id': [1, 2, 3],
'lon1': [116.404, 116.405, 116.406],
'lat1': [39.915, 39.916, 39.917]
})
df2 = pd.DataFrame({
'id': ['A', 'B', 'C', 'D'],
'lon2': [116.403, 116.407, 116.404, 116.408],
'lat2': [39.914, 39.918, 39.916, 39.919]
})
# Calculate the nearest 1 point
result = tg.min_distance_twotable(df1, df2, lon1='lon1', lat1='lat1', lon2='lon2', lat2='lat2', df2_id='id', n=1)
# Calculate the nearest 2 points
result2 = tg.min_distance_twotable(df1, df2, lon1='lon1', lat1='lat1', lon2='lon2', lat2='lat2', df2_id='id', n=2)
print("\nExample result (distance in meters):")
print(result)
print(result2)
Result Display:
|
Table df1:
|
Table df2:
|
Nearest 1 point:
| id | lon1 | lat1 | nearest1_id | nearest1_lon2 | nearest1_lat2 | nearest1_distance |
|---|---|---|---|---|---|---|
| A | 114.0 | 30.0 | p1 | 114.01 | 30.01 | 1470.515926 |
| B | 114.1 | 30.1 | p3 | 114.12 | 30.12 | 2939.507557 |
Nearest 2 points:
| id | lon1 | lat1 | nearest1_id | nearest1_lon2 | nearest1_lat2 | nearest1_distance | nearest2_id | nearest2_lon2 | nearest2_lat2 | nearest2_distance | mean_distance |
|---|---|---|---|---|---|---|---|---|---|---|---|
| A | 114.0 | 30.0 | p1 | 114.01 | 30.01 | 1470.515926 | p2 | 114.05 | 30.05 | 7351.852775 | 4411.184351 |
| B | 114.1 | 30.1 | p3 | 114.12 | 30.12 | 2939.507557 | p2 | 114.05 | 30.05 | 7350.037700 | 5144.772629 |
2. Find the nearest point for each point within the same table and add its ID, longitude, latitude, and distance.
import pandas as pd
import tablegis as tg
# Create an example DataFrame
df2 = pd.DataFrame({
'id': ['A', 'B', 'C', 'D'],
'lon2': [116.403, 116.407, 116.404, 116.408],
'lat2': [39.914, 39.918, 39.916, 39.919]
})
# Calculate the nearest 1 point
result = tg.min_distance_onetable(df2, 'lon2', 'lat2', idname='id', n=1)
# Calculate the nearest 2 points
result2 = tg.min_distance_onetable(df2, 'lon2', 'lat2', idname='id', n=2)
print("\nExample result (distance in meters):")
print(result)
print(result2)
Result Display:
Table df2:
| id | lon2 | lat2 |
|---|---|---|
| p1 | 114.01 | 30.01 |
| p2 | 114.05 | 30.05 |
| p3 | 114.12 | 30.12 |
Nearest 1 point:
| id | lon2 | lat2 | nearest1_id | nearest1_lon2 | nearest1_lat2 | nearest1_distance | |
|---|---|---|---|---|---|---|---|
| 0 | p1 | 114.01 | 30.01 | p2 | 114.05 | 30.05 | 5881.336911 |
| 1 | p2 | 114.05 | 30.05 | p1 | 114.01 | 30.01 | 5881.336911 |
| 2 | p3 | 114.12 | 30.12 | p2 | 114.05 | 30.05 | 10289.545038 |
Nearest 2 points:
| id | lon2 | lat2 | nearest1_id | nearest1_lon2 | nearest1_lat2 | nearest1_distance | nearest2_id | nearest2_lon2 | nearest2_lat2 | nearest2_distance | mean_distance | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | p1 | 114.01 | 30.01 | p2 | 114.05 | 30.05 | 5881.336911 | p3 | 114.12 | 30.12 | 16170.880987 | 11026.108949 |
| 1 | p2 | 114.05 | 30.05 | p1 | 114.01 | 30.01 | 5881.336911 | p3 | 114.12 | 30.12 | 10289.545038 | 8085.440974 |
| 2 | p3 | 114.12 | 30.12 | p2 | 114.05 | 30.05 | 10289.545038 | p1 | 114.01 | 30.01 | 16170.880987 | 13230.213012 |
3、Replace the longitude and latitude columns in the table with the corresponding values in another coordinate system, and add a new column for longitude and latitude.
import pandas as pd
import tablegis as tg
# Create two sample DataFrames
df = pd.DataFrame({
'id': ['A', 'B', 'C', 'D'],
'lon': [116.403, 116.407, 116.404, 116.408],
'lat': [39.914, 39.918, 39.916, 39.919]
})
# Convert the latitude and longitude in the 84 coordinate system to the latitude and longitude in the web_mercator system.
result = tg.to_lonlat(df,'lon','lat', from_crs="wgs84", to_crs="web_mercator")
print(result)
Result Display:
Added two columns of "web_mercator":
| id | lon | lat | web_mercator_lon | web_mercator_lat |
|---|---|---|---|---|
| A | 116.403 | 39.914 | 12957922.69 | 4853452.853 |
| B | 116.407 | 39.918 | 12958367.96 | 4854033.408 |
| C | 116.404 | 39.916 | 12958034.01 | 4853743.126 |
| D | 116.408 | 39.919 | 12958479.28 | 4854178.552 |
4、Generate buffers of the specified range based on the longitude and latitude columns in the table and add the geometry.
import pandas as pd
import tablegis as tg
df = pd.DataFrame({
'lon': [116.4074, 121.4737],
'lat': [39.9042, 31.2304],
'buffer_size': [500, 1000]
})
# Set a 100-meter buffer zone
res_100 = tg.add_buffer(df,'lon','lat',100)
# Set the buffer range according to the numbers in the "buffer_size" column.
res_buffer_size = tg.add_buffer(df,'lon','lat','buffer_size')
print(res_100)
print(res_buffer_size)
Result Display:
df table
| lon | lat | buffer_size | |
|---|---|---|---|
| 0 | 116.4074 | 39.9042 | 500 |
| 1 | 121.4737 | 31.2304 | 1000 |
Set a 100-meter buffer zone
| lon | lat | buffer_size | geometry | |
|---|---|---|---|---|
| 0 | 116.4074 | 39.9042 | 500 | POLYGON ((116.40857 39.90421, 116.40856 39.904... |
| 1 | 121.4737 | 31.2304 | 1000 | POLYGON ((121.47475 31.23036, 121.47474 31.230... |
Set the buffer range according to the numbers in the "buffer_size" column.
| lon | lat | buffer_size | geometry | |
|---|---|---|---|---|
| 0 | 116.4074 | 39.9042 | 500 | POLYGON ((116.41325 39.90423, 116.41322 39.903... |
| 1 | 121.4737 | 31.2304 | 1000 | POLYGON ((121.48417 31.23003, 121.48408 31.229... |
Addition:
add_buffernow supports amin_distanceparameter. Pass a scalar or a column name to create a ring (inner radius =min_distance, outer radius =dis). Ifmin_distanceisNone(default) the function creates a filled buffer as before.
4a. Expand or shrink existing GeoDataFrame geometries by a buffer distance
import geopandas as gpd
from shapely.geometry import Point, Polygon
import tablegis as tg
# Create a GeoDataFrame with point geometries
gdf_point = gpd.GeoDataFrame(
{'id': [1, 2]},
geometry=[Point(116.4074, 39.9042), Point(121.4737, 31.2304)],
crs='EPSG:4326'
)
# Expand buffer by 100 meters
gdf_expanded = tg.buffer(gdf_point, 100)
print(gdf_expanded)
# Shrink buffer by 50 meters (negative value)
gdf_shrunk = tg.buffer(gdf_point, -50)
print(gdf_shrunk)
# Use with polygon geometries
polygon = Polygon([(116.3, 39.8), (116.5, 39.8), (116.5, 40.0), (116.3, 40.0)])
gdf_poly = gpd.GeoDataFrame(
{'id': [1]},
geometry=[polygon],
crs='EPSG:4326'
)
gdf_poly_expanded = tg.buffer(gdf_poly, 200)
print(gdf_poly_expanded)
Key Features:
- Automatically projects to UTM for accurate meter-based calculations
- Supports both positive (expand) and negative (shrink) distances
- Preserves original CRS in output
- Handles multi-part geometries
- Warns if input GeoDataFrame has no CRS (assumes EPSG:4326)
Polygons
-
add_polygon(df, lon, lat, num_sides, radius=..., side_length=..., interior_angle=None, rotation=0.0, geometry='geometry')Create regular polygons around points. Parameters:
radius/side_length: one required; can be scalar or column name (meters in projected coordinates).interior_angle: optional interior angle in degrees. If provided, function enters interior-mode; ifNone(default), operates in exterior/regular mode.rotation: overall rotation in degrees (clockwise positive) applied after interior/exterior handling. Can be scalar or column name for per-row rotation.geometry: output geometry column name.
Note: vertex computation is vectorized for performance on large datasets; both
interior_angleandrotationaccept scalars or per-row column names.Example (rotated hexagon by 10°):
res = tg.add_polygon(df, lon='lon', lat='lat', num_sides=6, radius=500, rotation=10.0)
Example (per-row interior angle and rotation):
res = tg.add_polygon(df, lon='lon', lat='lat', num_sides=5, radius='r_col', interior_angle='inner_deg', rotation='rot_deg')
5、Convert the latitude and longitude columns in the table into point-shaped geometries and then transform them into a gdf.
import pandas as pd
import tablegis as tg
df = pd.DataFrame({
'lon': [116.4074, 121.4737, 113.2644],
'lat': [39.9042, 31.2304, 23.1291],
'city': ['Beijing', 'Shanghai', 'Guangzhou']
})
# Generate points based on latitude and longitude
result1 = tg.add_points(df)
print(result1)
Result Display:
| lon | lat | city | geometry |
|---|---|---|---|
| 116.4074 | 39.9042 | Beijing | POINT (116.4074 39.9042) |
| 121.4737 | 31.2304 | Shanghai | POINT (121.4737 31.2304) |
| 113.2644 | 23.1291 | Guangzhou | POINT (113.2644 23.1291) |
6、Concentrate the latitude and longitude data in the table using the method of expansion and recombination, and add the fused id as well as the range geom.
import pandas as pd
import tablegis as tg
# Prepare test data
test_data = pd.DataFrame({
'lon': [116.40, 116.41, 116.50, 116.51],
'lat': [39.90, 39.91, 39.95, 39.96],
'name': ['A', 'B', 'C', 'D'],
'value': [1, 2, 3, 4]
})
# Test 1: Return geometry
result_no_geom = tg.add_buffer_groupbyid(
test_data,
lon='lon',
lat='lat',
distance=1000,
columns_name='group_id',
id_label_prefix='id_',
geom=True
)
# Test 2: Do not return geometry
result_geom = tg.add_buffer_groupbyid(
test_data,
lon='lon',
lat='lat',
distance=1000,
columns_name='group_id',
id_label_prefix='id_',
geom=False
)
Result Display:
no geom
| lon | lat | name | value | group_id |
|---|---|---|---|---|
| 116.40 | 39.90 | A | 1 | id_0 |
| 116.41 | 39.91 | B | 2 | id_0 |
| 116.50 | 39.95 | C | 3 | id_1 |
| 116.51 | 39.96 | D | 4 | id_1 |
geom
| lon | lat | name | value | group_id | geometry |
|---|---|---|---|---|---|
| 116.40 | 39.90 | A | 1 | id_0 | POLYGON ((116.41149 39.8983, 116.41122 39.8974...) |
| 116.41 | 39.91 | B | 2 | id_0 | POLYGON ((116.41149 39.8983, 116.41122 39.8974...) |
| 116.50 | 39.95 | C | 3 | id_1 | POLYGON ((116.51149 39.94829, 116.51122 39.947...) |
| 116.51 | 39.96 | D | 4 | id_1 | POLYGON ((116.51149 39.94829, 116.51122 39.947...) |
7. Add a column for area to geopandas. The area is calculated based on the shape's area. The unit of the geographic coordinate system is meters, which is consistent with the units of both the horizontal and vertical planes.
import tablegis as tg
import geopandas as gpd
polygon = Polygon([(113.343, 29.3434), (113.353, 29.3434), (113.353, 29.3534), (113.343, 29.3534)])
gdf = gpd.GeoDataFrame({'id': [1], 'geometry': [polygon]}, crs="epsg:4326")
# Test 1: Add Area Column (Automatically Select Coordinate System)
result_gdf = tg.add_area(gdf, 'area')
print('area:',result_gdf['area'].astype(int)[0])
# Test 2: Add column name for area and coordinate system
result_gdf = tg.add_area(gdf, 'area', crs_epsg=32650)
print('area:',result_gdf['area'].astype(int)[0])
结果展示:
Add Area Column (Automatically Select Coordinate System)
Center: (113.3480, 29.3484) → UTM Zone 49 N → EPSG:32649
area: 1076905
Add column names for area and coordinate system
area: 1078867
8. Create sector (wedge) polygons around points with specified azimuth, distance, and angle.
import pandas as pd
import tablegis as tg
df = pd.DataFrame({
'lon': [116.4074, 121.4737],
'lat': [39.9042, 31.2304],
'azimuth': [45, 90],
'distance': [1000, 1500],
'angle': [60, 45]
})
# Create sectors with default parameters
result = tg.add_sectors(df, lon='lon', lat='lat', azimuth='azimuth', distance='distance', angle='angle')
print(result)
9. Play a built-in notification sound.
import tablegis as tg
# Play the notification sound (Windows only)
tg.dog()
10. Match spatial layer attributes to DataFrame
Match attributes from a spatial layer (GeoDataFrame or file) to a DataFrame based on spatial relationship.
import pandas as pd
import geopandas as gpd
from shapely.geometry import Polygon
import tablegis as tg
# Data to be matched
df = pd.DataFrame({'lon': [116.4], 'lat': [39.9]})
# Spatial layer (e.g., administrative districts)
poly = Polygon([(116.0, 39.0), (117.0, 39.0), (117.0, 40.0), (116.0, 40.0)])
gdf_layer = gpd.GeoDataFrame({'name': ['Beijing'], 'code': [100]}, geometry=[poly], crs="EPSG:4326")
# Match 'name' from layer to df
res = tg.match_layer(df, gdf_layer, columns=['name'])
print(res)
11. Convert DataFrame with WKT to GeoDataFrame
Convert a DataFrame containing WKT (Well-Known Text) geometry strings into a GeoDataFrame.
import pandas as pd
import tablegis as tg
df = pd.DataFrame({
'id': [1, 2],
'wkt': ['POINT (116.4 39.9)', 'POINT (121.5 31.2)']
})
gdf = tg.df_to_gdf(df, geometry='wkt')
print(gdf)
12. Fast Read — Read large Excel/CSV files with Parquet caching
Read large Excel files (hundreds of MB, millions of rows) 10-50x faster than pandas.read_excel. Uses Polars + Calamine (Rust engine) for parsing, and automatically caches to Parquet for near-instant subsequent reads. Only converts the sheet you need — other sheets are not touched.
Basic Usage
import tablegis as tg
# Read a single sheet (only this sheet is converted, ~5s for first time)
df = tg.fast_read("data.xlsx", sheet="站点信息")
# Read again — cached, near-instant (~0.02s)
df = tg.fast_read("data.xlsx", sheet="站点信息")
# Read only specific columns (faster, less memory)
df = tg.fast_read("data.xlsx", sheet="站点信息", columns=["城市", "经度", "纬度"])
# Return pandas DataFrame (compatible with other tablegis functions)
pd_df = tg.fast_read("data.xlsx", sheet="站点信息", to_pandas=True)
# Read all sheets (returns a dict: {sheet_name: DataFrame})
data = tg.fast_read("data.xlsx")
# Read CSV (no caching needed — Polars reads CSV natively and fast)
df = tg.fast_read("data.csv")
# Force refresh cache (after source file is updated)
df = tg.fast_read("data.xlsx", sheet="站点信息", refresh=True)
Real-World Scenarios
Scenario 1: Telecom planning — read a specific sheet from a multi-sheet workbook
import tablegis as tg
# A 321MB planning workbook with 10 sheets — only read the one you need
stations = tg.fast_read("5g_planning_2024.xlsx", sheet="站点规划")
print(f"Loaded {len(stations):,} stations in milliseconds")
# Chain with other tablegis functions
pd_stations = tg.fast_read("5g_planning_2024.xlsx", sheet="站点规划", to_pandas=True)
buffers = tg.add_buffer(pd_stations, lon="经度", lat="纬度", dis=500)
Scenario 2: Selective column loading for large datasets
# Only load the columns you need — saves memory and time
df = tg.fast_read("huge_data.xlsx", sheet="orders", columns=["order_id", "city", "amount"])
print(df.head())
# Works with CSV too
df = tg.fast_read("transactions.csv", columns=["date", "revenue"])
Scenario 3: Read all sheets and iterate
# Read all sheets at once (first time converts all, cached after)
all_data = tg.fast_read("report.xlsx")
for sheet_name, df in all_data.items():
print(f"Sheet '{sheet_name}': {len(df):,} rows × {len(df.columns)} columns")
# Convert a specific sheet to pandas for tablegis compatibility
pd_df = all_data["边界信息"].to_pandas()
Scenario 4: Data pipeline — refresh after source update
# Initial read (creates cache)
df = tg.fast_read("live_data.xlsx", sheet="metrics")
# ... source file gets updated externally ...
# Force refresh to pick up changes
df = tg.fast_read("live_data.xlsx", sheet="metrics", refresh=True)
Key Features
| Feature | Description |
|---|---|
| Rust-powered parsing | Calamine engine reads Excel 10-50x faster than openpyxl |
| Automatic Parquet cache | First read converts to .parquet_cache/; subsequent reads load in milliseconds |
| Sheet-isolated conversion | Specifying sheet="X" only converts sheet X — other sheets are never touched |
| Smart type casting | Numeric strings auto-detected and cast to Float64/Int64 (with 5% tolerance for mixed columns) |
| MD5-based invalidation | Source file changes are detected via MD5; cache is automatically rebuilt |
| Column pruning | columns parameter enables lazy column loading from Parquet |
| Polars or pandas | Return Polars (default, faster) or pandas (to_pandas=True) DataFrame |
| CSV support | CSV files read natively by Polars — fast enough that no caching is needed |
Cache Management
Cache files are stored in .parquet_cache/<filename>/ relative to your working directory. Each sheet becomes a <sheet_name>.parquet file, plus a _meta.json for tracking MD5 and row counts.
# Cache directory structure after reading "data.xlsx" sheet "站点信息":
# .parquet_cache/
# data/
# 站点信息.parquet # columnar cache for this sheet
# _meta.json # {md5: "...", sheets: {"站点信息": 147000}}
To clear the cache, simply delete the .parquet_cache directory:
rm -rf .parquet_cache
Performance Comparison
Test file: 290M rows, 10 sheets, 321MB Excel file.
| Method | Single sheet (147K rows) | All sheets (2.9M rows) | Memory |
|---|---|---|---|
pandas.read_excel |
244s | ~40min | 238MB (single sheet) |
tg.fast_read (first time) |
~5s | ~2.5min | — |
tg.fast_read (cached) |
0.02s | 0.12s | 82MB (all sheets) |
Contributing
Contributions in all forms are welcome, including feature requests, bug reports, and code contributions.
License
This project is licensed under the MIT License.
Metadata
Release files for tablegis 0.0.16
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tablegis-0.0.16.tar.gz | 1.5 MB | Details |
Built distributions (wheels)
Total release size: 35.4 MB
Release files / tablegis-0.0.16.tar.gz
| Download URL | tablegis-0.0.16.tar.gz |
|---|---|
| Size | 1.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8f97ea78edcae5e3c2281be836cdf593754b291c9a2f9a8f1502e1ed0d00e4f8
|
|
BLAKE2b-256 checksum How to use checksums |
88d2e1dc2d41c641ff3cfe8452f72455ead1aa93a96b356a9260557d31053efa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / tablegis-0.0.16-cp313-cp313-win_amd64.whl
| Download URL | tablegis-0.0.16-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
a7675be3bdc84fd8edea79b0a90afd6955cdaf1f94f3d0a783b90b32b792cb81
|
|
BLAKE2b-256 checksum How to use checksums |
563ec4f6e1e589c0a6c1fbaf0ba325df6d98fe1bf3f949906bf1e06cbf9e311c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.12
|
Release files / tablegis-0.0.16-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | tablegis-0.0.16-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.13 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
8d49fd6cd6b27984bc624054763a82eb3ebc111c14b1087df3428408b28c6aa9
|
|
BLAKE2b-256 checksum How to use checksums |
a49f62624204a7bccf3940795d7c52577cd3d1853c189ea05ffb9b05838c9057
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.12
|
Release files / tablegis-0.0.16-cp313-cp313-macosx_11_0_x86_64.whl
| Download URL | tablegis-0.0.16-cp313-cp313-macosx_11_0_x86_64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.13 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
ef0aabec7f1d3adb88c2c2798378ceecdba74050b67ed6caedc724882976cf18
|
|
BLAKE2b-256 checksum How to use checksums |
9c3b626716b5b85cec1d7a8b5b47eb722efa6a405ae3aeded21b21ceaf39d7b0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.12
|
Release files / tablegis-0.0.16-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | tablegis-0.0.16-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
285b40d8091bd0269cd7e2fb3fcf83ef1e00ac0254c32edc524c09316fc982cc
|
|
BLAKE2b-256 checksum How to use checksums |
60daa6a1aa8553934b44f4f8b2b51bc7b89573238efdb43150301b9812f1ebeb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.12
|
Release files / tablegis-0.0.16-cp312-cp312-win_amd64.whl
| Download URL | tablegis-0.0.16-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
afcefe514105b96808010e68173d4fd9f41183d7549867a275250aea92a183e4
|
|
BLAKE2b-256 checksum How to use checksums |
1f554020c22b8ffe2583defbcd22950a96c523e96693db884e4a37844337e579
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.12
|
Release files / tablegis-0.0.16-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | tablegis-0.0.16-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.12 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
5c84f46053072400bbc41137c7055c7f5404ad9c98957d678d7bcbb4e81da3be
|
|
BLAKE2b-256 checksum How to use checksums |
c2816eea0331447956bbc6f703d60d77bde7b0728cfce874ee533ed6a909d039
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.12
|
Release files / tablegis-0.0.16-cp312-cp312-macosx_11_0_x86_64.whl
| Download URL | tablegis-0.0.16-cp312-cp312-macosx_11_0_x86_64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.12 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
7bafe7c066bde8a71ecc454c6f720558c71ababb8a15c90323d4f1069b5e76d3
|
|
BLAKE2b-256 checksum How to use checksums |
4b4989592c5cf8fbceeb7a8261ea254ab8c92e45954b1e2431e375351d2b35d2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.12
|
Release files / tablegis-0.0.16-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | tablegis-0.0.16-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
35c901ed0587fc09f8708697e8f0a18ebc6f594ed564cf0ceb1da9942162df2f
|
|
BLAKE2b-256 checksum How to use checksums |
c3c8475e333bc5c5a2f5049c1a57413cd206f97e6087f5646d5f1d1f76dc78fd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.12
|
Release files / tablegis-0.0.16-cp311-cp311-win_amd64.whl
| Download URL | tablegis-0.0.16-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
4bc283032a939333cb8ea93c6534cb7a4a25f5edbbd4216f744060489a33660c
|
|
BLAKE2b-256 checksum How to use checksums |
c6b9785547a350a98533df54c0c8a00a702ca8df5460ffcf0a4cdbf28cba6cc2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.12
|
Release files / tablegis-0.0.16-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | tablegis-0.0.16-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.11 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
5dba0a9534c31634d99a906cc971476d45b6e6ff5daf64977990732487284926
|
|
BLAKE2b-256 checksum How to use checksums |
866a23bbe4472c848256ba7e48152ae87b405f1e6e257c077faf61f60f0a58cf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.12
|
Release files / tablegis-0.0.16-cp311-cp311-macosx_11_0_x86_64.whl
| Download URL | tablegis-0.0.16-cp311-cp311-macosx_11_0_x86_64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.11 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
4576d5c7079c13c31d1459715001d09f257d94b53732297b2ca62ceadec3206c
|
|
BLAKE2b-256 checksum How to use checksums |
3bfd890e9ffcd66fc37a53779c0627e0f691a6047836288b2197b7582891f1a8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.12
|
Release files / tablegis-0.0.16-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | tablegis-0.0.16-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
3272560c3daeffc923266a39e388f35b11ac6ad3a4f4ec010fe9544e8b36d0c6
|
|
BLAKE2b-256 checksum How to use checksums |
035cb95d7e0c1e5961a7c1c3757b7088d728531459c3c92084da89101141ec01
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.12
|
Release files / tablegis-0.0.16-cp310-cp310-win_amd64.whl
| Download URL | tablegis-0.0.16-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
54319b617a02c9c5257343e12b6bf9765325fcb2bd608d0ab81010d968b268e9
|
|
BLAKE2b-256 checksum How to use checksums |
e2c97947dcf14c1377f97f157cc29b831b48d86ee98cda20483dab87263f8576
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.12
|
Release files / tablegis-0.0.16-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | tablegis-0.0.16-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.10 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
050b40389b68ba8171be9f7fd4492e96022fcea05756da1acc0d5ff7f9cb6207
|
|
BLAKE2b-256 checksum How to use checksums |
54111af50cfa06fecd2fd28b99eac388df11fadf2db604ca40a5dd06dc58796e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.12
|
Release files / tablegis-0.0.16-cp310-cp310-macosx_11_0_x86_64.whl
| Download URL | tablegis-0.0.16-cp310-cp310-macosx_11_0_x86_64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.10 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
e28ed50f283f7eb2dbe72b6dda9884b7ba14dadfce92b35943ae59a19d3b8ba2
|
|
BLAKE2b-256 checksum How to use checksums |
145dca3943649c18451fc46983fbd49c2154ef9fc75f048aee878a68b923b319
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.12
|
Release files / tablegis-0.0.16-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | tablegis-0.0.16-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
e8dfbbd31ee1f409da94fc9e8b9298c1ef5ae8c3ed8b4f8270366df0518f5521
|
|
BLAKE2b-256 checksum How to use checksums |
0b42a2fa3936917be8005469da183716f8876d6ff90eeacf13886dc57c29f74a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.12
|
Release files / tablegis-0.0.16-cp39-cp39-win_amd64.whl
| Download URL | tablegis-0.0.16-cp39-cp39-win_amd64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.9 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
211d5303951644b044acf2304f17236ec6d8eb6032fac9bd58899867b8f04bb1
|
|
BLAKE2b-256 checksum How to use checksums |
673d565c0274cfdd266130d80e2074d9b7b30eb8568086ec7dbe8242feb9e2c5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.12
|
Release files / tablegis-0.0.16-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | tablegis-0.0.16-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.9 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
a70e4069fdd2c12d5f53742ca2c82445ae76f7ef037bc15095a7824cf7fa959c
|
|
BLAKE2b-256 checksum How to use checksums |
2cb42210f88295dd6b48f6f5ba77e6edf4c80ac3b960bcd21f9d4a8c5a6f9712
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.12
|
Release files / tablegis-0.0.16-cp39-cp39-macosx_11_0_x86_64.whl
| Download URL | tablegis-0.0.16-cp39-cp39-macosx_11_0_x86_64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.9 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
63ee566f6e58b1a96cd81442001d2bb4af3936c67ffd90844b87017b7119223c
|
|
BLAKE2b-256 checksum How to use checksums |
fb028541eac47fcd3f47c5aca2da8839dadbc6a029fe989f538f46a715ca6cc5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.12
|
Release files / tablegis-0.0.16-cp39-cp39-macosx_11_0_arm64.whl
| Download URL | tablegis-0.0.16-cp39-cp39-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.9 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
b0e8651c5b1ef0b1f2dbaae48a80208e9dbb97080329a5905cfc82a4f25af281
|
|
BLAKE2b-256 checksum How to use checksums |
0302be301874c1b25feb7705c4415f0ac195bcceda768cf672f29b5a82318f72
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.12
|