samplesheet-parser 0.3.2__tar.gz → 0.3.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/.github/workflows/ci.yml +15 -0
  2. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/CHANGELOG.md +7 -0
  3. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/CITATION.cff +14 -4
  4. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/PKG-INFO +4 -3
  5. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/README.md +3 -2
  6. samplesheet_parser-0.3.3/images/samplesheet_parser_arch_v03.png +0 -0
  7. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/pyproject.toml +1 -1
  8. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/.github/workflows/copilot-instructions.md +0 -0
  9. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/.gitignore +0 -0
  10. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/.zenodo.json +0 -0
  11. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/CONTRIBUTING.md +0 -0
  12. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/LICENSE +0 -0
  13. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/examples/demo_merger.py +0 -0
  14. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/examples/parse_examples.py +0 -0
  15. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/examples/sample_sheets/ProjectAlpha_SampleSheet.csv +0 -0
  16. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/examples/sample_sheets/ProjectBeta_SampleSheet.csv +0 -0
  17. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/examples/sample_sheets/ProjectDelta_SampleSheet_collision.csv +0 -0
  18. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/examples/sample_sheets/ProjectGamma_SampleSheet.csv +0 -0
  19. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/examples/sample_sheets/README.md +0 -0
  20. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/examples/sample_sheets/combined_clean.csv +0 -0
  21. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/examples/sample_sheets/combined_collision_forced.csv +0 -0
  22. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/examples/sample_sheets/combined_mixed_formats.csv +0 -0
  23. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/examples/sample_sheets/v1_dual_index.csv +0 -0
  24. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/examples/sample_sheets/v1_multi_lane.csv +0 -0
  25. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/examples/sample_sheets/v1_single_index.csv +0 -0
  26. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/examples/sample_sheets/v1_with_lab_qc_settings.csv +0 -0
  27. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/examples/sample_sheets/v1_with_manifests.csv +0 -0
  28. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/examples/sample_sheets/v2_nextseq_single_index.csv +0 -0
  29. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/examples/sample_sheets/v2_novaseq_x_dual_index.csv +0 -0
  30. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/examples/sample_sheets/v2_with_cloud_settings.csv +0 -0
  31. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/examples/sample_sheets/v2_with_index_umi.csv +0 -0
  32. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/examples/sample_sheets/v2_with_pipeline_settings.csv +0 -0
  33. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/examples/sample_sheets/v2_with_read_umi.csv +0 -0
  34. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/images/samplesheet_parser_overview.png +0 -0
  35. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/samplesheet_parser/__init__.py +0 -0
  36. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/samplesheet_parser/cli.py +0 -0
  37. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/samplesheet_parser/converter.py +0 -0
  38. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/samplesheet_parser/diff.py +0 -0
  39. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/samplesheet_parser/enums.py +0 -0
  40. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/samplesheet_parser/factory.py +0 -0
  41. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/samplesheet_parser/merger.py +0 -0
  42. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/samplesheet_parser/parsers/__init__.py +0 -0
  43. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/samplesheet_parser/parsers/v1.py +0 -0
  44. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/samplesheet_parser/parsers/v2.py +0 -0
  45. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/samplesheet_parser/validators.py +0 -0
  46. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/samplesheet_parser/writer.py +0 -0
  47. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/scripts/demo_converter.py +0 -0
  48. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/scripts/demo_diff.py +0 -0
  49. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/scripts/demo_writer.py +0 -0
  50. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/tests/__init__.py +0 -0
  51. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/tests/conftest.py +0 -0
  52. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/tests/fixtures/SampleSheet_v1_dual_index.csv +0 -0
  53. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/tests/fixtures/SampleSheet_v2_dual_index.csv +0 -0
  54. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/tests/fixtures/SampleSheet_v2_modified.csv +0 -0
  55. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/tests/test_cli.py +0 -0
  56. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/tests/test_converter.py +0 -0
  57. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/tests/test_diff.py +0 -0
  58. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/tests/test_factory.py +0 -0
  59. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/tests/test_merger.py +0 -0
  60. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/tests/test_parsers/__init__.py +0 -0
  61. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/tests/test_parsers/test_v1.py +0 -0
  62. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/tests/test_parsers/test_v2.py +0 -0
  63. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/tests/test_validators/__init__.py +0 -0
  64. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/tests/test_validators/test_hamming.py +0 -0
  65. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/tests/test_validators/test_validators.py +0 -0
  66. {samplesheet_parser-0.3.2 → samplesheet_parser-0.3.3}/tests/test_writer.py +0 -0
@@ -67,3 +67,18 @@ jobs:
67
67
  uses: pypa/gh-action-pypi-publish@release/v1
68
68
  with:
69
69
  password: ${{ secrets.PYPI_API_TOKEN }}
70
+
71
+ release:
72
+ needs: publish
73
+ runs-on: ubuntu-latest
74
+ if: startsWith(github.ref, 'refs/tags/v')
75
+ permissions:
76
+ contents: write
77
+
78
+ steps:
79
+ - uses: actions/checkout@v4
80
+
81
+ - name: Create GitHub Release
82
+ uses: softprops/action-gh-release@v2
83
+ with:
84
+ generate_release_notes: true
@@ -6,6 +6,13 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
6
6
 
7
7
  ---
8
8
 
9
+ ## [0.3.3] - 2026-03-13
10
+
11
+ ### Documentation
12
+ - Add architecture diagram showing full library structure including CLI and SampleSheetMerger
13
+ - Update README with architecture overview, solid vs dashed line legend
14
+ - Add `[Custom_Sections*]` to V1 and V2 format descriptions
15
+
9
16
  ## [0.3.2] - 2026-03-12
10
17
 
11
18
  ### Added
@@ -1,23 +1,33 @@
1
1
  cff-version: 1.2.0
2
- message: "If you use this software, please cite it as below."
2
+ message: "If you use this software, please cite it using the metadata below."
3
3
  type: software
4
4
  title: "samplesheet-parser"
5
+ abstract: >
6
+ A Python library for parsing, validating, converting, and merging
7
+ Illumina SampleSheet V1 and V2 files for BCLConvert and bcl2fastq.
8
+ Provides format auto-detection, bidirectional V1/V2 conversion,
9
+ structural and index validation, sheet diffing, and cross-project
10
+ merging with Hamming-distance collision detection.
5
11
  version: 0.3.2
6
12
  date-released: 2026-03-12
7
13
  license: Apache-2.0
8
14
  url: "https://github.com/chaitanyakasaraneni/samplesheet-parser"
9
15
  repository-code: "https://github.com/chaitanyakasaraneni/samplesheet-parser"
10
- abstract: >
11
- A Python library for parsing, validating, converting, and merging
12
- Illumina SampleSheet V1 and V2 files for BCLConvert and bcl2fastq.
16
+ repository-artifact: "https://pypi.org/project/samplesheet-parser/"
13
17
  keywords:
14
18
  - bioinformatics
15
19
  - Illumina
16
20
  - SampleSheet
17
21
  - BCLConvert
22
+ - bcl2fastq
18
23
  - demultiplexing
19
24
  - genomics
25
+ - sequencing
20
26
  - Python
27
+ identifiers:
28
+ - type: doi
29
+ value: 10.5281/zenodo.18989694
30
+ description: Concept DOI (all versions)
21
31
  authors:
22
32
  - family-names: Kasaraneni
23
33
  given-names: Chaitanya Krishna
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: samplesheet-parser
3
- Version: 0.3.2
3
+ Version: 0.3.3
4
4
  Summary: Format-agnostic parser for Illumina SampleSheet.csv files — supports IEM V1 and BCLConvert V2
5
5
  Project-URL: Homepage, https://github.com/chaitanyakasaraneni/samplesheet-parser
6
6
  Project-URL: Documentation, https://illumina-samplesheet.readthedocs.io
@@ -60,8 +60,9 @@ Supports both the classic IEM V1 format (bcl2fastq era) and the modern BCLConver
60
60
  [![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-yellow.svg)](https://opensource.org/licenses/Apache-2.0)
61
61
  [![Tests](https://github.com/chaitanyakasaraneni/samplesheet-parser/actions/workflows/ci.yml/badge.svg)](https://github.com/chaitanyakasaraneni/samplesheet-parser/actions)
62
62
  [![codecov](https://codecov.io/gh/chaitanyakasaraneni/samplesheet-parser/branch/main/graph/badge.svg?token=CODECOV_TOKEN)](https://codecov.io/gh/chaitanyakasaraneni/samplesheet-parser)
63
+ [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.18989694.svg)](https://doi.org/10.5281/zenodo.18989694)
63
64
 
64
- ![samplesheet-parser overview](https://raw.githubusercontent.com/chaitanyakasaraneni/samplesheet-parser/main/images/samplesheet_parser_overview.png)
65
+ ![samplesheet-parser overview](https://raw.githubusercontent.com/chaitanyakasaraneni/samplesheet-parser/main/images/samplesheet_parser_arch_v03.png)
65
66
 
66
67
  *`SampleSheetFactory` auto-detects the format and routes to the correct parser. Both formats share a common interface — `SampleSheetConverter` handles bidirectional conversion, `SampleSheetValidator` catches index and adapter issues, `SampleSheetDiff` compares two sheets across any combination of V1/V2 formats, `SampleSheetMerger` combines multiple per-project sheets into one, and `SampleSheetWriter` builds or edits sheets programmatically. The `samplesheet` CLI exposes all of this from the shell.*
67
68
 
@@ -584,7 +585,7 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for the full local testing guide and PR c
584
585
  title = {samplesheet-parser: Format-agnostic parser for Illumina SampleSheet.csv},
585
586
  year = {2026},
586
587
  url = {https://github.com/chaitanyakasaraneni/samplesheet-parser},
587
- version = {0.3.2}
588
+ version = {0.3.3}
588
589
  }
589
590
  ```
590
591
 
@@ -9,8 +9,9 @@ Supports both the classic IEM V1 format (bcl2fastq era) and the modern BCLConver
9
9
  [![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-yellow.svg)](https://opensource.org/licenses/Apache-2.0)
10
10
  [![Tests](https://github.com/chaitanyakasaraneni/samplesheet-parser/actions/workflows/ci.yml/badge.svg)](https://github.com/chaitanyakasaraneni/samplesheet-parser/actions)
11
11
  [![codecov](https://codecov.io/gh/chaitanyakasaraneni/samplesheet-parser/branch/main/graph/badge.svg?token=CODECOV_TOKEN)](https://codecov.io/gh/chaitanyakasaraneni/samplesheet-parser)
12
+ [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.18989694.svg)](https://doi.org/10.5281/zenodo.18989694)
12
13
 
13
- ![samplesheet-parser overview](https://raw.githubusercontent.com/chaitanyakasaraneni/samplesheet-parser/main/images/samplesheet_parser_overview.png)
14
+ ![samplesheet-parser overview](https://raw.githubusercontent.com/chaitanyakasaraneni/samplesheet-parser/main/images/samplesheet_parser_arch_v03.png)
14
15
 
15
16
  *`SampleSheetFactory` auto-detects the format and routes to the correct parser. Both formats share a common interface — `SampleSheetConverter` handles bidirectional conversion, `SampleSheetValidator` catches index and adapter issues, `SampleSheetDiff` compares two sheets across any combination of V1/V2 formats, `SampleSheetMerger` combines multiple per-project sheets into one, and `SampleSheetWriter` builds or edits sheets programmatically. The `samplesheet` CLI exposes all of this from the shell.*
16
17
 
@@ -533,7 +534,7 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for the full local testing guide and PR c
533
534
  title = {samplesheet-parser: Format-agnostic parser for Illumina SampleSheet.csv},
534
535
  year = {2026},
535
536
  url = {https://github.com/chaitanyakasaraneni/samplesheet-parser},
536
- version = {0.3.2}
537
+ version = {0.3.3}
537
538
  }
538
539
  ```
539
540
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "samplesheet-parser"
7
- version = "0.3.2"
7
+ version = "0.3.3"
8
8
  description = "Format-agnostic parser for Illumina SampleSheet.csv files — supports IEM V1 and BCLConvert V2"
9
9
  readme = "README.md"
10
10
  license = { file = "LICENSE" }