Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
b194664
Migrated profiles/settings
roll Feb 10, 2026
93890cc
Migrated models
roll Feb 10, 2026
ec5cabc
Migrated actions/path
roll Feb 10, 2026
035f0d2
Migrated json/profile
roll Feb 10, 2026
cca8531
Migrated the rest of metadata
roll Feb 10, 2026
eab6874
Fixed imports consistency
roll Feb 10, 2026
4204ec5
Bootstrapped dataset
roll Feb 10, 2026
fa6451e
Improve validate result
roll Feb 10, 2026
5259213
Updated metadata
roll Feb 10, 2026
79e532a
Ported dataset actions
roll Feb 10, 2026
6f844c1
Added metadata plugin
roll Feb 10, 2026
8257eed
Migrated descriptor plugin
roll Feb 10, 2026
d0952e0
Migrated folder/zip plugins
roll Feb 10, 2026
070ce64
Initial ckan/github/zenodo plugins
roll Feb 10, 2026
fa58616
Added dataset plugin tests
roll Feb 10, 2026
32a95f7
Added teble package
roll Feb 10, 2026
39c6b0d
Added more tests
roll Feb 10, 2026
160d243
Ported sniffer
roll Feb 10, 2026
a3dc388
Renamed spec files
roll Feb 10, 2026
cde500d
Ported models/helpers from table
roll Feb 10, 2026
1a55b38
Initial table actions
roll Feb 11, 2026
baa54cd
Fixed type errors
roll Feb 11, 2026
985329e
Fixed more type errors
roll Feb 11, 2026
d40f710
Fixed validate functions
roll Feb 11, 2026
c928970
Reverted validate functions
roll Feb 11, 2026
d0ea5af
Pin dev deps
roll Feb 11, 2026
7134988
Ignore table schema creation type errors
roll Feb 11, 2026
c809725
Fixed e.type
roll Feb 11, 2026
6faea1a
Fixed dtype
roll Feb 11, 2026
88f97d0
Fixed inspect
roll Feb 11, 2026
b042880
Fixed type errors
roll Feb 11, 2026
dde3415
Ported table plugin
roll Feb 11, 2026
3abd567
Merge settings and constants
roll Feb 11, 2026
e762262
Resolved todos
roll Feb 11, 2026
79d6f37
Fixed resolve functions
roll Feb 11, 2026
84c4cff
Bootstrapped inline plugin
roll Feb 11, 2026
551772c
Normalize imports
roll Feb 11, 2026
cd6e0ce
Fixed table plugin
roll Feb 11, 2026
92cf5cc
Fixed metadata/dataset functions
roll Feb 11, 2026
6828b35
Fixed resource types
roll Feb 11, 2026
c774cf9
Fixed dataset types
roll Feb 11, 2026
361a401
Fixed other types
roll Feb 11, 2026
7a5acfc
Fixed model usage
roll Feb 11, 2026
f351f35
Fixed TableSchema construction
roll Feb 11, 2026
5799ccf
Fixed validate
roll Feb 11, 2026
47638eb
Fixed ckan plugin
roll Feb 11, 2026
1224af5
Fixed github plugin
roll Feb 11, 2026
a013456
Fixed zenodo plugin
roll Feb 11, 2026
e6306a4
Fixed dataset models
roll Feb 11, 2026
9fe5c9a
Fixed imports
roll Feb 11, 2026
0b989ea
Fixed switches
roll Feb 11, 2026
398344a
Fixed casts
roll Feb 11, 2026
ac2cabd
Cleaned column models
roll Feb 11, 2026
a038234
Improved dialect models
roll Feb 11, 2026
4c4d1e2
Ported arrow/parquet plugins to fairspec-python
roll Feb 11, 2026
e8e3ffd
Initial json plugin port
roll Feb 11, 2026
80e84c5
Initial xlsx plugin port
roll Feb 11, 2026
3a8527d
Initial csv plugin
roll Feb 12, 2026
72bf8c4
Initial sqlite plugin
roll Feb 12, 2026
b960230
Format the code
roll Feb 12, 2026
b39ae32
Extract native types to settings
roll Feb 12, 2026
06cd41d
Simplified option chaining
roll Feb 12, 2026
e99b5e0
Rebased on **options
roll Feb 12, 2026
f200bbe
Rebased on FairspecModel
roll Feb 12, 2026
d10fcea
Fixed dialect support helper
roll Feb 12, 2026
0b7cd48
Added library package
roll Feb 12, 2026
e3c5766
Ported library
roll Feb 12, 2026
8871313
Bootstrapped fairspec-terminal
roll Feb 12, 2026
e6bfeb2
Added website
roll Feb 12, 2026
5370b5b
Ported terminal
roll Feb 12, 2026
6245ac4
Added home to navigation
roll Feb 12, 2026
0c2193c
Updated website
roll Feb 12, 2026
796908f
Add python link
roll Feb 12, 2026
b069bbb
Updated docs
roll Feb 12, 2026
82768d8
Added new line at exit
roll Feb 12, 2026
6dac641
Minor fix
roll Feb 12, 2026
9ced12b
Added json highlithing
roll Feb 12, 2026
f098465
Revert "Added json highlithing"
roll Feb 12, 2026
e4707f5
Reapply "Added json highlithing"
roll Feb 12, 2026
04c2799
Fixed table commands
roll Feb 12, 2026
e8eb44e
Added .github
roll Feb 12, 2026
bddf2bb
Bootstrapped fairspec package
roll Feb 12, 2026
6ed6528
Fixed ci
roll Feb 12, 2026
a12ed49
Fixed ci
roll Feb 12, 2026
7651b08
Fixed win new line issue
roll Feb 12, 2026
d181e6f
Fixed tzdata problem
roll Feb 12, 2026
633851e
Added git hooks
roll Feb 12, 2026
ad62f51
Fixed deps
roll Feb 12, 2026
607f279
Fixed relpath
roll Feb 12, 2026
0ff15c2
Reduced changelog items
roll Feb 12, 2026
84a682e
Make hooks verbose
roll Feb 12, 2026
bd2d0d4
Make hooks not verbose
roll Feb 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 2 additions & 1 deletion .claude/CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,12 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co

## Commands

- Run `uv run task install` to install all dependencies
- Run `uv run task lint` to lint the code using Ruff
- Run `uv run task format` to auto-fix formatting issues with Ruff
- Run `uv run task type` to run type checking
- Run `uv run task test` to run the full test suite including linting, type checking, and tests
- Run `uv run task spec` to run only the pytest tests
- Run `uv run task test` to run the full test suite (lint/type/spec)
- Run `uv run pytest path/to/test.py` to run a single test file
- Run `uv run pytest -k "test name"` to run a single test by name

Expand Down
8 changes: 0 additions & 8 deletions .claude/settings.local.json

This file was deleted.

30 changes: 30 additions & 0 deletions .github/ISSUE_TEMPLATE/01-bug-report.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: "🐞 Bug Report"
description: Report an issue or possible bug
labels: []
assignees: []
body:
- type: markdown
attributes:
value: |
Thank you for taking the time to file a bug report! Please fill out this form as completely as possible.
- type: input
id: version
attributes:
label: What version are you using?
placeholder: 1.0.0
validations:
required: true
- type: textarea
id: description
attributes:
label: Describe the Bug
description: A clear and concise description of what the bug is.
validations:
required: true
- type: checkboxes
id: contribution
attributes:
label: Participation
options:
- label: I am willing to submit a pull request for this issue.
required: false
30 changes: 30 additions & 0 deletions .github/ISSUE_TEMPLATE/02-general-issue.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: "🌳 General Issue"
description: Project, website, or documentation related issue or improvement
labels: []
assignees: []
body:
- type: markdown
attributes:
value: |
Thank you for taking the time to improve the project! Please fill out this form as completely as possible.
- type: input
id: version
attributes:
label: What version are you using?
placeholder: 1.0.0
validations:
required: true
- type: textarea
id: description
attributes:
label: Describe the Issue
description: A clear and concise description of what the issue or possible improvement is.
validations:
required: true
- type: checkboxes
id: contribution
attributes:
label: Participation
options:
- label: I am willing to submit a pull request for this issue.
required: false
14 changes: 14 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
blank_issues_enabled: false
contact_links:
- name: 👀 Explore Discussions
url: https://github.com/orgs/fairspec/discussions
about: Before opening a discussion, please check if the topic has already been discussed. Please vote on existing discussions to show your support.
- name: 💡 Feature Request
url: https://github.com/orgs/fairspec/discussions/new?category=ideas
about: Suggest an improvement you'd like to see added to Fairspec Python
- name: 🚀 Implementation
url: https://github.com/orgs/fairspec/discussions/new?category=show-and-tell
about: Share your Fairspec Python related project with the community
- name: 💁 Question
url: https://github.com/orgs/fairspec/discussions/new?category=q-a
about: Ask a question about Fairspec Python
11 changes: 11 additions & 0 deletions .github/codecov.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
comment: no

coverage:
range: 80..90
status:
project:
default:
informational: true
patch:
default:
informational: true
103 changes: 103 additions & 0 deletions .github/workflows/general.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
name: general

on:
push:
branches:
- main
pull_request:
branches:
- main

jobs:
test-linux:
runs-on: ubuntu-latest

permissions:
id-token: write

steps:
- name: Checkout Repo
uses: actions/checkout@v5
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Setup uv
uses: astral-sh/setup-uv@v5
- name: Install Dependencies
run: uv run task install
- name: Test Packages
run: uv run task test
- name: Upload Coverage
uses: codecov/codecov-action@v5
with:
use_oidc: true

test-macos:
runs-on: macos-latest

steps:
- name: Checkout Repo
uses: actions/checkout@v5
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Setup uv
uses: astral-sh/setup-uv@v5
- name: Install Dependencies
run: uv run task install
- name: Test Packages
run: uv run task test

test-windows:
runs-on: windows-latest

steps:
- name: Checkout Repo
uses: actions/checkout@v5
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Setup uv
uses: astral-sh/setup-uv@v5
- name: Install Dependencies
run: uv run task install
- name: Test Packages
run: uv run task test

release:
needs: [test-linux, test-macos, test-windows]
environment: release
runs-on: ubuntu-latest
if: github.event_name == 'push' && !contains(github.ref, 'refs/tags/')

outputs:
created: ${{ steps.release.outputs.new_release_published }}
version: ${{ steps.release.outputs.new_release_version }}

permissions:
id-token: write
contents: write
issues: write
pull-requests: write

steps:
- name: Checkout Repo
uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Setup uv
uses: astral-sh/setup-uv@v5
- name: Install Dependencies
run: uv run task install
- name: Release Packages
uses: python-semantic-release/python-semantic-release@v9
id: release
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
13 changes: 13 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -214,3 +214,16 @@ __marimo__/

# Streamlit
.streamlit/secrets.toml

# Node
node_modules/
jspm_packages/
.lock-wscript
build/Release
.node_repl_history
*.tgz
.npm
*.so

# User
/.claude/settings.local.json
10 changes: 10 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
repos:
- repo: local
hooks:
- id: test
name: test
entry: uv run task test
language: system
always_run: true
pass_filenames: false
stages: [pre-push]
3 changes: 3 additions & 0 deletions dataset/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# fairspec-dataset

Fairspec Python is a fast data management framework built on top of the Fairspec standard and Polars DataFrames. It supports various formats like CSV, JSON, and Parquet and integrates with data platforms such as CKAN, Zenodo, and GitHub. For more information, please read the [project's documentation](https://python.fairspec.org).
92 changes: 92 additions & 0 deletions dataset/fairspec_dataset/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
from .actions.dataset.basepath import get_common_local_basepath, get_dataset_basepath
from .actions.dataset.merge import merge_datasets
from .actions.file.copy import copy_file
from .actions.file.describe import describe_file
from .models.file import FileDescription
from .actions.file.infer import infer_bytes, infer_hash, infer_integrity, infer_textual
from .actions.file.load import load_file
from .actions.file.path import assert_local_path_vacant, get_is_local_path_exist
from .actions.file.prefetch import prefetch_file, prefetch_files
from .actions.file.save import save_file
from .actions.file.temp import get_temp_file_path, write_temp_file
from .actions.file.validate import validate_file
from .actions.folder.create import create_folder
from .actions.folder.temp import get_temp_folder_path
from .actions.resource.save import SaveFileCallback, SaveFileProps, save_resource_files
from .actions.stream.concat import concat_file_streams
from .actions.stream.load import load_file_stream
from .actions.stream.save import save_file_stream
from .models.dataset import SaveDatasetOptions
from .models.file_dialect import InferFileDialectOptions
from .models.dataset import SaveDatasetResult
from .plugin import DatasetPlugin
from .plugins.descriptor import DescriptorPlugin
from .plugins.ckan import CkanPlugin, load_dataset_from_ckan, save_dataset_to_ckan
from .plugins.folder import (
FolderPlugin,
load_dataset_from_folder,
save_dataset_to_folder,
)
from .plugins.github import (
GithubPlugin,
load_dataset_from_github,
save_dataset_to_github,
)
from .plugins.zenodo import (
ZenodoPlugin,
load_dataset_from_zenodo,
save_dataset_to_zenodo,
)
from .plugins.zip import ZipPlugin, load_dataset_from_zip, save_dataset_to_zip
from fairspec_metadata.plugin import MetadataPlugin

__all__ = [
"CkanPlugin",
"DatasetPlugin",
"DescriptorPlugin",
"FileDescription",
"FolderPlugin",
"GithubPlugin",
"InferFileDialectOptions",
"MetadataPlugin",
"SaveDatasetOptions",
"SaveDatasetResult",
"SaveFileCallback",
"SaveFileProps",
"ZenodoPlugin",
"ZipPlugin",
"assert_local_path_vacant",
"concat_file_streams",
"copy_file",
"create_folder",
"describe_file",
"get_common_local_basepath",
"get_dataset_basepath",
"get_is_local_path_exist",
"get_temp_file_path",
"get_temp_folder_path",
"infer_bytes",
"infer_hash",
"infer_integrity",
"infer_textual",
"load_dataset_from_ckan",
"load_dataset_from_folder",
"load_dataset_from_github",
"load_dataset_from_zenodo",
"load_dataset_from_zip",
"load_file",
"load_file_stream",
"merge_datasets",
"prefetch_file",
"prefetch_files",
"save_dataset_to_ckan",
"save_dataset_to_folder",
"save_dataset_to_github",
"save_dataset_to_zenodo",
"save_dataset_to_zip",
"save_file",
"save_file_stream",
"save_resource_files",
"validate_file",
"write_temp_file",
]
Loading