SAMPIClyser 0.0.1__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.
@@ -0,0 +1,28 @@
1
+ [bumpversion]
2
+ current_version = 0.0.1
3
+ commit = True
4
+ tag = True
5
+
6
+ [bumpversion:file:src/sampiclyser/__init__.py]
7
+ search = __version__ = '{current_version}'
8
+ replace = __version__ = '{new_version}'
9
+
10
+ [bumpversion:file:pyproject.toml]
11
+ search = version = "{current_version}"
12
+ replace = version = "{new_version}"
13
+
14
+ [bumpversion:file:docs/conf.py]
15
+ search = version = release = '{current_version}'
16
+ replace = version = release = '{new_version}'
17
+
18
+ [bumpversion:file:tests/test_global.py]
19
+ search = version = '{current_version}'
20
+ replace = version = '{new_version}'
21
+
22
+ [bumpversion:file (badge):README.rst]
23
+ search = /v{current_version}.svg
24
+ replace = /v{new_version}.svg
25
+
26
+ [bumpversion:file (link):README.rst]
27
+ search = /v{current_version}...main
28
+ replace = /v{new_version}...main
@@ -0,0 +1,96 @@
1
+ name: Publish Python 🐍 distribution 📦 to PyPI and TestPyPI
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - '**'
7
+
8
+ jobs:
9
+ build:
10
+ name: Build distribution 📦
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+ - name: Set up Python
16
+ uses: actions/setup-python@v5
17
+ with:
18
+ python-version: "3.x"
19
+ - name: Install pypa/build
20
+ run: >-
21
+ python3 -m
22
+ pip install
23
+ build
24
+ --user
25
+ - name: Build a binary wheel and a source tarball
26
+ run: python3 -m build
27
+ - name: Store the distribution packages
28
+ uses: actions/upload-artifact@v4
29
+ with:
30
+ name: python-package-distributions
31
+ path: dist/
32
+
33
+ publish-to-pypi:
34
+ name: >-
35
+ Publish Python 🐍 distribution 📦 to PyPI
36
+ if: startsWith(github.ref, 'refs/tags/v') # only publish to PyPI on tag pushes
37
+ needs:
38
+ - build
39
+ runs-on: ubuntu-latest
40
+ environment:
41
+ name: pypi
42
+ url: https://pypi.org/p/<package-name> # Replace <package-name> with your PyPI project name
43
+ permissions:
44
+ id-token: write # IMPORTANT: mandatory for trusted publishing
45
+
46
+ steps:
47
+ - name: Download all the dists
48
+ uses: actions/download-artifact@v4
49
+ with:
50
+ name: python-package-distributions
51
+ path: dist/
52
+ - name: Publish distribution 📦 to PyPI
53
+ uses: pypa/gh-action-pypi-publish@release/v1
54
+
55
+ github-release:
56
+ name: >-
57
+ Sign the Python 🐍 distribution 📦 with Sigstore
58
+ and upload them to GitHub Release
59
+ needs:
60
+ - publish-to-pypi
61
+ runs-on: ubuntu-latest
62
+
63
+ permissions:
64
+ contents: write # IMPORTANT: mandatory for making GitHub Releases
65
+ id-token: write # IMPORTANT: mandatory for sigstore
66
+
67
+ steps:
68
+ - name: Download all the dists
69
+ uses: actions/download-artifact@v4
70
+ with:
71
+ name: python-package-distributions
72
+ path: dist/
73
+ - name: Sign the dists with Sigstore
74
+ uses: sigstore/gh-action-sigstore-python@v3.0.0
75
+ with:
76
+ inputs: >-
77
+ ./dist/*.tar.gz
78
+ ./dist/*.whl
79
+ - name: Create GitHub Release
80
+ env:
81
+ GITHUB_TOKEN: ${{ github.token }}
82
+ run: >-
83
+ gh release create
84
+ '${{ github.ref_name }}'
85
+ --repo '${{ github.repository }}'
86
+ --notes ""
87
+ - name: Upload artifact signatures to GitHub Release
88
+ env:
89
+ GITHUB_TOKEN: ${{ github.token }}
90
+ # Upload to GitHub Release using the `gh` CLI.
91
+ # `dist/` contains the built packages, and the
92
+ # sigstore-produced signatures and certificates.
93
+ run: >-
94
+ gh release upload
95
+ '${{ github.ref_name }}' dist/**
96
+ --repo '${{ github.repository }}'
@@ -0,0 +1,27 @@
1
+ venv/*
2
+
3
+ *.py[cod]
4
+ __pycache__
5
+ *.feather
6
+ *.parquet
7
+ *.root
8
+
9
+ # Packages
10
+ *.egg
11
+ *.egg-info
12
+ dist
13
+ build
14
+ eggs
15
+ .eggs
16
+ parts
17
+ bin
18
+ var
19
+ sdist
20
+ wheelhouse
21
+ develop-eggs
22
+ .installed.cfg
23
+ lib
24
+ lib64
25
+ venv*/
26
+ pyvenv*/
27
+ pip-wheel-metadata/
@@ -0,0 +1,40 @@
1
+ # See https://pre-commit.com for more information
2
+ # See https://pre-commit.com/hooks.html for more hooks
3
+ # To install the git pre-commit hook run:
4
+ # pre-commit install
5
+ # To update the pre-commit hooks run:
6
+ # pre-commit install-hooks
7
+ exclude: '^(\.tox|ci/templates|\.bumpversion\.cfg)(/|$)'
8
+ repos:
9
+ - repo: https://github.com/pre-commit/pre-commit-hooks
10
+ rev: v4.5.0
11
+ hooks:
12
+ - id: trailing-whitespace
13
+ - id: end-of-file-fixer
14
+ - id: debug-statements
15
+ - id: check-yaml
16
+ - id: check-added-large-files
17
+
18
+ - repo: https://github.com/pycqa/isort
19
+ rev: 5.13.2
20
+ hooks:
21
+ - id: isort
22
+ name: isort (python)
23
+
24
+ # Using this mirror lets us use mypyc-compiled black, which is about 2x faster
25
+ # Alternative: https://github.com/psf/black
26
+ - repo: https://github.com/psf/black-pre-commit-mirror
27
+ rev: 24.1.1
28
+ hooks:
29
+ - id: black
30
+ # It is recommended to specify the latest version of Python
31
+ # supported by your project here, or alternatively use
32
+ # pre-commit's default_language_version, see
33
+ # https://pre-commit.com/#top_level-default_language_version
34
+ language_version: python3.11
35
+
36
+ - repo: https://github.com/pycqa/flake8
37
+ rev: 7.0.0
38
+ hooks:
39
+ - id: flake8
40
+ additional_dependencies: [Flake8-pyproject]
@@ -0,0 +1,35 @@
1
+ # .readthedocs.yaml
2
+ # Read the Docs configuration file
3
+ # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
4
+
5
+ # Required
6
+ version: 2
7
+
8
+ # Set the OS, Python version and other tools you might need
9
+ build:
10
+ os: ubuntu-24.04
11
+ tools:
12
+ python: "3.13"
13
+ # You can also specify other tool versions:
14
+ # nodejs: "19"
15
+ # rust: "1.64"
16
+ # golang: "1.19"
17
+
18
+ # Build documentation in the "docs/" directory with Sphinx
19
+ sphinx:
20
+ configuration: docs/conf.py
21
+
22
+ # Optionally build your docs in additional formats such as PDF and ePub
23
+ # formats:
24
+ # - pdf
25
+ # - epub
26
+ formats: all
27
+
28
+ # Optional but recommended, declare the Python requirements required
29
+ # to build your documentation
30
+ # See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
31
+ python:
32
+ install:
33
+ - requirements: docs/requirements.txt
34
+ - method: pip
35
+ path: .
@@ -0,0 +1,4 @@
1
+ Authors
2
+ =======
3
+
4
+ * Cristóvão Beirão da Cruz e Silva
@@ -0,0 +1,11 @@
1
+ Changelog
2
+ =========
3
+
4
+ Current (2025-06-19)
5
+ --------------------
6
+
7
+
8
+ 0.0.1 (2024-06-19)
9
+ ------------------
10
+
11
+ * Test empty release
@@ -0,0 +1,83 @@
1
+ ============
2
+ Contributing
3
+ ============
4
+
5
+ Contributions are welcome, and they are greatly appreciated! Every
6
+ little bit helps, and credit will always be given.
7
+
8
+ Bug reports
9
+ ===========
10
+
11
+ When `reporting a bug <https://github.com/cbeiraod/SAMPIClyser/issues>`_ please include:
12
+
13
+ * Your operating system name and version.
14
+ * Any details about your local setup that might be helpful in troubleshooting.
15
+ * Detailed steps to reproduce the bug.
16
+
17
+ Documentation improvements
18
+ ==========================
19
+
20
+ SAMPIClyser could always use more documentation, whether as part of the
21
+ official SAMPIClyser docs, in docstrings, or even on the web in blog posts,
22
+ articles, and such.
23
+
24
+ Feature requests and feedback
25
+ =============================
26
+
27
+ The best way to send feedback is to file an issue at https://github.com/cbeiraod/SAMPIClyser/issues.
28
+
29
+ If you are proposing a feature:
30
+
31
+ * Explain in detail how it would work.
32
+ * Keep the scope as narrow as possible, to make it easier to implement.
33
+ * Remember that this is a volunteer-driven project, and that code contributions are welcome :)
34
+
35
+ Development
36
+ ===========
37
+
38
+ To set up `SAMPIClyser` for local development:
39
+
40
+ 1. Fork `SAMPIClyser" <https://github.com/cbeiraod/SAMPIClyser>`_
41
+ (look for the "Fork" button).
42
+ 2. Clone your fork locally::
43
+
44
+ git clone git@github.com:YOURGITHUBNAME/SAMPIClyser.git
45
+
46
+ 3. Create a branch for local development::
47
+
48
+ git checkout -b name-of-your-bugfix-or-feature
49
+
50
+ Now you can make your changes locally.
51
+
52
+ 4. When you're done making changes run all the checks
53
+
54
+ 5. Commit your changes and push your branch to GitHub::
55
+
56
+ git add .
57
+ git commit -m "Your detailed description of your changes."
58
+ git push origin name-of-your-bugfix-or-feature
59
+
60
+ 6. Submit a pull request through the GitHub website.
61
+
62
+ Pull Request Guidelines
63
+ -----------------------
64
+
65
+ If you need some code review or feedback while you're developing the code just make the pull request.
66
+
67
+ For merging, you should:
68
+
69
+ 1. Include passing tests [1]_.
70
+ 2. Update documentation when there's new API, functionality etc.
71
+ 3. Add a note to ``CHANGELOG.rst`` about the changes.
72
+ 4. Add yourself to ``AUTHORS.rst``.
73
+
74
+ .. [1] If you don't have all the necessary python versions available locally you can rely on Travis (WIP) - it will
75
+ `run the tests <https://travis-ci.com/github/cbeiraod/SAMPIClyser/pull_requests>`_
76
+ for each change you add in the pull request.
77
+
78
+ It will be slower though ... and has not yet been set up
79
+
80
+ Tips
81
+ ----
82
+
83
+ None at the moment
@@ -0,0 +1,19 @@
1
+ zlib License
2
+
3
+ (C) 2025 Cristóvão Beirão da Cruz e Silva <cbeiraod@cern.ch>
4
+
5
+ This software is provided 'as-is', without any express or implied
6
+ warranty. In no event will the authors be held liable for any damages
7
+ arising from the use of this software.
8
+
9
+ Permission is granted to anyone to use this software for any purpose,
10
+ including commercial applications, and to alter it and redistribute it
11
+ freely, subject to the following restrictions:
12
+
13
+ 1. The origin of this software must not be misrepresented; you must not
14
+ claim that you wrote the original software. If you use this software
15
+ in a product, an acknowledgment in the product documentation would be
16
+ appreciated but is not required.
17
+ 2. Altered source versions must be plainly marked as such, and must not be
18
+ misrepresented as being the original software.
19
+ 3. This notice may not be removed or altered from any source distribution.
@@ -0,0 +1,36 @@
1
+ Metadata-Version: 2.4
2
+ Name: SAMPIClyser
3
+ Version: 0.0.1
4
+ Summary: Python library to help decoding and analysing data from a SAMPIC system
5
+ Project-URL: Homepage, https://github.com/cbeiraod/SAMPIClyser
6
+ Project-URL: Documentation, https://sampiclyser.readthedocs.io/
7
+ Project-URL: Bug Tracker, https://github.com/cbeiraod/SAMPIClyser/issues
8
+ Author-email: Cristóvão Beirão da Cruz e Silva <cbeiraod@cern.ch>
9
+ License-File: AUTHORS.rst
10
+ License-File: LICENSE
11
+ Keywords: Awesome,ROOT,SAMPIC
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Environment :: Console
14
+ Classifier: License :: OSI Approved :: zlib/libpng License
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Topic :: Scientific/Engineering
18
+ Requires-Python: >=3.10
19
+ Requires-Dist: matplotlib
20
+ Requires-Dist: mplhep
21
+ Requires-Dist: natsort
22
+ Requires-Dist: numpy
23
+ Requires-Dist: pandas
24
+ Requires-Dist: pyarrow
25
+ Requires-Dist: termcolor
26
+ Requires-Dist: uproot
27
+ Description-Content-Type: text/markdown
28
+
29
+ # SAMPIClyser
30
+ Python library to help decoding and analysing data from a SAMPIC system
31
+
32
+ You can install the SAMPIClyser libraries with: `python -m pip install SAMPIClyser`
33
+
34
+ After installation, you can run the individual tools with their dedicated commands:
35
+ * ``sampiclyser-version`` - To print the version of the SAMPIClyser library in use
36
+ * ``sampic-convert`` - To read the binary files and save them in a standard format
@@ -0,0 +1,8 @@
1
+ # SAMPIClyser
2
+ Python library to help decoding and analysing data from a SAMPIC system
3
+
4
+ You can install the SAMPIClyser libraries with: `python -m pip install SAMPIClyser`
5
+
6
+ After installation, you can run the individual tools with their dedicated commands:
7
+ * ``sampiclyser-version`` - To print the version of the SAMPIClyser library in use
8
+ * ``sampic-convert`` - To read the binary files and save them in a standard format
@@ -0,0 +1,224 @@
1
+ """""""""""""
2
+ SAMPIClyser
3
+ """""""""""""
4
+
5
+ .. start-badges
6
+
7
+ |pre-commit|
8
+
9
+ |black| |flake8| |isort|
10
+
11
+ |docs|
12
+
13
+ |version| |wheel| |supported-versions| |supported-implementations|
14
+
15
+ |commits-since|
16
+
17
+ .. |black| image:: https://img.shields.io/badge/code%20style-black-000000
18
+ :target: https://github.com/psf/black
19
+ :alt: black
20
+
21
+ .. |flake8| image:: https://img.shields.io/badge/flake8-checked-blueviolet
22
+ :target: https://github.com/PyCQA/flake8
23
+ :alt: flake8
24
+
25
+ .. |isort| image:: https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336
26
+ :target: https://pycqa.github.io/isort/
27
+ :alt: isort
28
+
29
+ .. |pre-commit| image:: https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit
30
+ :target: https://github.com/pre-commit/pre-commit
31
+ :alt: pre-commit
32
+
33
+ .. |docs| image:: https://readthedocs.org/projects/sampiclyser/badge/?version=latest
34
+ :target: https://sampiclyser.readthedocs.io/
35
+ :alt: Documentation Status
36
+
37
+ .. |version| image:: https://img.shields.io/pypi/v/SAMPIClyser.svg
38
+ :alt: PyPI Package latest release
39
+ :target: https://pypi.org/project/SAMPIClyser
40
+
41
+ .. |wheel| image:: https://img.shields.io/pypi/wheel/SAMPIClyser.svg
42
+ :alt: PyPI Wheel
43
+ :target: https://pypi.org/project/SAMPIClyser
44
+
45
+ .. |supported-versions| image:: https://img.shields.io/pypi/pyversions/SAMPIClyser.svg
46
+ :alt: Supported versions
47
+ :target: https://pypi.org/project/SAMPIClyser
48
+
49
+ .. |supported-implementations| image:: https://img.shields.io/pypi/implementation/SAMPIClyser.svg
50
+ :alt: Supported implementations
51
+ :target: https://pypi.org/project/SAMPIClyser
52
+
53
+ .. |commits-since| image:: https://img.shields.io/github/commits-since/cbeiraod/SAMPIClyser/v0.0.1.svg
54
+ :alt: Commits since latest release
55
+ :target: https://github.com/cbeiraod/SAMPIClyser/compare/v0.0.1...main
56
+
57
+ .. end-badges
58
+
59
+ Python library to help decoding and analysing data from a SAMPIC system
60
+
61
+ * Free software: Zlib license
62
+
63
+
64
+ ----------
65
+
66
+
67
+ .. contents:: Table of Contents
68
+ :depth: 3
69
+
70
+
71
+ ----------
72
+
73
+
74
+ ====================
75
+ Running the software
76
+ ====================
77
+ We will use a venv to isolate the SAMPIClyser python installation and dependencies from that of the system and other venvs.
78
+ Create the venv with: ``python -m venv venv``.
79
+ Venv creation only needs to be done once and occasionally when you upgrade the python version installed on the system.
80
+
81
+ Before running any commands related to the SAMPIClyser, activate the venv with: ``source venv/bin/activate``
82
+
83
+ Once you are finished, you may deactivate the venv with: ``deactivate``
84
+
85
+ ---------------------------
86
+ Dependencies & Installation
87
+ ---------------------------
88
+ There are two options, you can run the SAMPIClyser from source or from `PyPI <https://pypi.org/>`_ (Recommended).
89
+
90
+ From PyPI
91
+ ---------
92
+ Make sure you activate the venv first, then simply run the command: ``python -m pip install SAMPIClyser``
93
+
94
+ From Source
95
+ -----------
96
+ Fetch the source from github, you may for instance clone the git repository to a local directory.
97
+ Make sure the venv is activated, then install this application with all its dependencies by running this command from the source directory: ``python -m pip install .``
98
+
99
+ ----------------------
100
+ Developer Dependencies
101
+ ----------------------
102
+ If you are working on developing the code for SAMPIClyser you will need to follow the "Running the Software" instructions for setup and then for installing use the "From Source" instructions but instead of the install command in the "Dependencies" instructions, use the following command: ``python -m pip install -e .``.
103
+ Then install a few other dependencies which are only used in development:
104
+
105
+ .. code:: bash
106
+
107
+ python -m pip install --upgrade pytest
108
+ python -m pip install --upgrade pytest-cov
109
+ python -m pip install --upgrade pytest-mock
110
+ python -m pip install --upgrade pre-commit
111
+ python -m pip install --upgrade bump2version
112
+ python -m pip install --upgrade black
113
+ python -m pip install --upgrade flake8-pyproject
114
+ python -m pip install --upgrade isort
115
+ python -m pip install --upgrade build
116
+ python -m pip install --upgrade twine
117
+
118
+
119
+ Then install the pre-commit hooks so that things are ran automatically before any commit is done: ``pre-commit install``.
120
+
121
+
122
+ ------------
123
+
124
+
125
+ ==============
126
+ Developer Info
127
+ ==============
128
+
129
+ -----
130
+ Tools
131
+ -----
132
+
133
+ pytest
134
+ ------
135
+ We are using pytest to run unit tests on the software.
136
+ See `here <https://docs.pytest.org/en/7.4.x/getting-started.html>`_ for ideas on how to get started.
137
+ Use the command ``pytest`` to run all the tests.
138
+
139
+ We use the pytest-cov plugin to get coverage reports from pytest.
140
+ Use the command ``pytest --cov --cov-report term-missing`` to run all the tests and get a coverage report.
141
+ Use the command ``pytest --cov --cov-report term-missing --cov-report html`` to get an html report with detailed information.
142
+
143
+ We use the pytest-mock plugin in order to use the mock class in our tests.
144
+
145
+ pre-commit
146
+ ----------
147
+ **pre-commit may need to be installed in the global python environment for things to work correctly.**
148
+ This tool allows to setup hooks into the git workflow, in particular for the Pre-Commit Hook, allowing to run automated tests before committing code.
149
+ This functionality is used to automatically run black, flake8 and isort before any commit is made, thus guaranteeing a consistent style and formatting for all committed code (according to these tools).
150
+ If you want to run all the checks individually as if a commit were about to be made, you can use ``pre-commit run --all-files``.
151
+ You can find more information on pre-commit `here <https://pre-commit.com/>`_.
152
+
153
+ bump2version
154
+ ------------
155
+ We are using bump2version to manage the version string of the software.
156
+ bump2version will automatically create a commit and a tag with the version when you use it:
157
+
158
+ - To increase the major version, use: ``bump2version major``; for example 0.1.3 to 1.0.0
159
+ - To increase the minor version, use: ``bump2version minor``; for example 0.1.3 to 0.2.0
160
+ - To increase the patch version, use: ``bump2version patch``; for example 0.1.3 to 0.1.4
161
+
162
+ black
163
+ -----
164
+ We are using black to automatically format the python code.
165
+ To run black standalone use: ``black .`` in the root directory.
166
+ You may also use ``black --check -v .`` to get a list of which changes would be made, without actually making them.
167
+ More information on black can be found `here <https://pypi.org/project/black/>`_.
168
+
169
+ flake8
170
+ ------
171
+ We are using flake8 to check the code for style and syntax errors (i.e. a linter tool).
172
+ The flake8-pyproject enables flake8 to read configuration from the pyproject.toml file, and pulls flake8 as a dependency.
173
+ This is why flake8 is not explicitly installed.
174
+ To run flake8 standalone, use: ``flake8`` in the root directory.
175
+ More information on flake8 can be found `here <https://flake8.pycqa.org/en/latest/index.html#quickstart>`_.
176
+ A list of all options and configuration for the toml file can be found `here <https://flake8.pycqa.org/en/latest/user/options.html>`_.
177
+
178
+ isort
179
+ -----
180
+ We are using isort to automatically sort the include statements at the top of the python files.
181
+ To run isort standalone use: ``isort .`` in the root directory.
182
+ More information on isort can be found `here <https://pycqa.github.io/isort/>`_.
183
+
184
+ build
185
+ -----
186
+ The build tool is used to package the code for publishing on PyPI.
187
+ Build the release with: ``python -m build``
188
+
189
+ twine
190
+ -----
191
+ The twine tool is used to upload the package to PyPI.
192
+ Once the distribution files are generated with the build tool, then upload them with: ``python -m twine upload --repository testpypi dist/*``
193
+
194
+ ----------------
195
+ Github Workflows
196
+ ----------------
197
+ Currently there is a single github workflow which builds and publishes a properly tagged version of the repo onto PyPI.
198
+ We plan to use other github workflows as our CI tools, to be added.
199
+
200
+ publish-to-test-pypi
201
+ --------------------
202
+ This workflow publishes to PyPI a properly tagged commit of the repository.
203
+ Some initial setup in needed on PyPI so that things run smoothly, but once running it should continue to function without intervention needed.
204
+
205
+ -----------------
206
+ Restructured Text
207
+ -----------------
208
+ For information on how to use restructured text, see the cheatsheet `here <https://github.com/DevDungeon/reStructuredText-Documentation-Reference>`_ for example.
209
+ But there are other resources on the internet if you prefer.
210
+
211
+ ----------
212
+ Docstrings
213
+ ----------
214
+ Please use docstrings in the "NumPy/SciPy docstrings" style: `link <https://numpydoc.readthedocs.io/en/latest/format.html>`_.
215
+
216
+ --------------
217
+ pyproject.toml
218
+ --------------
219
+ Get classifiers from `here <https://pypi.org/classifiers/>`_.
220
+
221
+ More information on packaging can be found `here <https://packaging.python.org/en/latest/tutorials/packaging-projects/>`_.
222
+
223
+ There are entry points as explained in: https://packaging.python.org/en/latest/specifications/declaring-project-metadata/#declaring-project-metadata
224
+ There is an entry point to run the binary conversion tool, for example: ``sampic-convert`` tool, use the help to see the options.
@@ -0,0 +1 @@
1
+ .. include:: ../AUTHORS.rst
@@ -0,0 +1 @@
1
+ .. include:: ../CHANGELOG.rst
@@ -0,0 +1,47 @@
1
+ # -*- coding: utf-8 -*-
2
+ from __future__ import unicode_literals
3
+
4
+ import os
5
+
6
+ extensions = [
7
+ 'sphinx.ext.autodoc',
8
+ 'sphinx.ext.autosummary',
9
+ 'sphinx.ext.coverage',
10
+ 'sphinx.ext.doctest',
11
+ 'sphinx.ext.extlinks',
12
+ 'sphinx.ext.ifconfig',
13
+ 'sphinx.ext.napoleon',
14
+ 'sphinx.ext.todo',
15
+ 'sphinx.ext.viewcode',
16
+ ]
17
+ source_suffix = '.rst'
18
+ master_doc = 'index'
19
+ project = 'SAMPIClyser'
20
+ year = '2025'
21
+ author = 'Cristóvão B. da Cruz e Silva'
22
+ copyright = '{0}, {1}'.format(year, author)
23
+ version = release = '0.0.1'
24
+
25
+ pygments_style = 'trac'
26
+ templates_path = ['.']
27
+ extlinks = {
28
+ 'issue': ('https://github.com/cbeiraod/SAMPIClyser/issues/%s', '#'),
29
+ 'pr': ('https://github.com/cbeiraod/SAMPIClyser/pull/%s', 'PR #'),
30
+ }
31
+ # on_rtd is whether we are on readthedocs.org
32
+ on_rtd = os.environ.get('READTHEDOCS', None) == 'True'
33
+
34
+ if not on_rtd: # only set the theme if we're building docs locally
35
+ html_theme = 'sphinx_rtd_theme'
36
+
37
+ html_use_smartypants = True
38
+ html_last_updated_fmt = '%b %d, %Y'
39
+ html_split_index = False
40
+ html_sidebars = {
41
+ '**': ['searchbox.html', 'globaltoc.html', 'sourcelink.html'],
42
+ }
43
+ html_short_title = '%s-%s' % (project, version)
44
+
45
+ napoleon_use_ivar = True
46
+ napoleon_use_rtype = False
47
+ napoleon_use_param = False
@@ -0,0 +1 @@
1
+ .. include:: ../CONTRIBUTING.rst
@@ -0,0 +1,21 @@
1
+ ========
2
+ Contents
3
+ ========
4
+
5
+ .. toctree::
6
+ :maxdepth: 2
7
+
8
+ readme
9
+ installation
10
+ usage
11
+ reference/index
12
+ contributing
13
+ authors
14
+ changelog
15
+
16
+ Indices and tables
17
+ ==================
18
+
19
+ * :ref:`genindex`
20
+ * :ref:`modindex`
21
+ * :ref:`search`
@@ -0,0 +1,7 @@
1
+ ============
2
+ Installation
3
+ ============
4
+
5
+ At the command line::
6
+
7
+ python -m pip install SAMPIClyser
@@ -0,0 +1 @@
1
+ .. include:: ../README.rst
@@ -0,0 +1,7 @@
1
+ Reference
2
+ =========
3
+
4
+ .. toctree::
5
+ :glob:
6
+
7
+ sampiclyser*
@@ -0,0 +1,15 @@
1
+ SAMPIClyser package
2
+ =================
3
+
4
+ .. testsetup::
5
+
6
+ from sampiclyser import *
7
+
8
+
9
+ Module contents
10
+ ---------------
11
+
12
+ .. automodule:: sampiclyser
13
+ :members:
14
+ :undoc-members:
15
+ :show-inheritance:
@@ -0,0 +1,2 @@
1
+ sphinx>=1.3
2
+ sphinx-rtd-theme
@@ -0,0 +1,11 @@
1
+ builtin
2
+ builtins
3
+ classmethod
4
+ staticmethod
5
+ classmethods
6
+ staticmethods
7
+ args
8
+ kwargs
9
+ callstack
10
+ Changelog
11
+ Indices
@@ -0,0 +1,7 @@
1
+ =====
2
+ Usage
3
+ =====
4
+
5
+ To use SAMPIClyser in a project::
6
+
7
+ import sampiclyser
@@ -0,0 +1,85 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "SAMPIClyser"
7
+ version = "0.0.1"
8
+ authors = [
9
+ { name="Cristóvão Beirão da Cruz e Silva", email="cbeiraod@cern.ch" },
10
+ ]
11
+ maintainers = [
12
+ ]
13
+ description = "Python library to help decoding and analysing data from a SAMPIC system"
14
+ readme = "PyPIREADME.md"
15
+ requires-python = ">=3.10"
16
+ classifiers = [
17
+ "Development Status :: 3 - Alpha",
18
+ "Programming Language :: Python :: 3",
19
+ "License :: OSI Approved :: zlib/libpng License",
20
+ "Operating System :: OS Independent",
21
+ "Environment :: Console",
22
+ "Topic :: Scientific/Engineering",
23
+ ]
24
+ keywords = ["SAMPIC", "ROOT", "Awesome"]
25
+ dependencies = [
26
+ "natsort",
27
+ "numpy",
28
+ "pandas",
29
+ "termcolor",
30
+ "pyarrow",
31
+ "uproot",
32
+ "mplhep",
33
+ "matplotlib",
34
+ ]
35
+
36
+ [project.urls]
37
+ "Homepage" = "https://github.com/cbeiraod/SAMPIClyser"
38
+ "Documentation" = "https://sampiclyser.readthedocs.io/"
39
+ "Bug Tracker" = "https://github.com/cbeiraod/SAMPIClyser/issues"
40
+
41
+ [project.scripts]
42
+ sampiclyser-version = "sampiclyser.entry_points:version"
43
+
44
+ [tool.pytest.ini_options]
45
+ addopts = [
46
+ "--import-mode=importlib"
47
+ ]
48
+
49
+ [tool.black]
50
+ line-length = 140
51
+ target-version = ["py310", "py311", "py312"]
52
+ skip-string-normalization = true
53
+ required-version = 24
54
+ extend-exclude = '''
55
+ # A regex preceded with ^/ will apply only to files and directories
56
+ # in the root of the project.
57
+ (
58
+ venv
59
+ dist
60
+ build
61
+ .pytest_cache
62
+ .github
63
+ )
64
+ '''
65
+
66
+ [tool.flake8]
67
+ # Default: E121,E123,E126,E226,E24,E704,W503,W504
68
+ extend-ignore = ['E203','E501','E701']
69
+ extend-select = ['B950']
70
+ exclude = ".git, .github, venv, .mypy_cache, .pytest_cache, build, dist, __pycache__"
71
+ per-file-ignores = [
72
+ '__init__.py:F401',
73
+ ]
74
+ max-line-length = 140
75
+ max-complexity = 18
76
+ count = true
77
+
78
+ [tool.isort]
79
+ profile = "black"
80
+ force_single_line = true
81
+ line_length = 140
82
+ known_first_party = ['sampiclyser']
83
+ default_section = 'THIRDPARTY'
84
+ forced_separate = 'test_sampiclyser'
85
+ skip = ".pytest_cache,.git,.github,venv,build,dist"
@@ -0,0 +1,24 @@
1
+ [pytest]
2
+ # If a pytest section is found in one of the possible config files
3
+ # (pytest.ini, tox.ini or setup.cfg), then pytest will not look for any others,
4
+ # so if you add a pytest config section elsewhere,
5
+ # you will need to delete this section.
6
+ norecursedirs =
7
+ migrations
8
+
9
+ python_files =
10
+ test_*.py
11
+ *_test.py
12
+ tests.py
13
+ addopts =
14
+ -ra
15
+ --strict-markers
16
+ --doctest-modules
17
+ --doctest-glob=\*.rst
18
+ --tb=short
19
+ testpaths =
20
+ tests
21
+
22
+ # Idea from: https://til.simonwillison.net/pytest/treat-warnings-as-errors
23
+ filterwarnings =
24
+ error
@@ -0,0 +1,30 @@
1
+ # -*- coding: utf-8 -*-
2
+ #############################################################################
3
+ # zlib License
4
+ #
5
+ # (C) 2025 Cristóvão Beirão da Cruz e Silva <cbeiraod@cern.ch>
6
+ #
7
+ # This software is provided 'as-is', without any express or implied
8
+ # warranty. In no event will the authors be held liable for any damages
9
+ # arising from the use of this software.
10
+ #
11
+ # Permission is granted to anyone to use this software for any purpose,
12
+ # including commercial applications, and to alter it and redistribute it
13
+ # freely, subject to the following restrictions:
14
+ #
15
+ # 1. The origin of this software must not be misrepresented; you must not
16
+ # claim that you wrote the original software. If you use this software
17
+ # in a product, an acknowledgment in the product documentation would be
18
+ # appreciated but is not required.
19
+ # 2. Altered source versions must be plainly marked as such, and must not be
20
+ # misrepresented as being the original software.
21
+ # 3. This notice may not be removed or altered from any source distribution.
22
+ #############################################################################
23
+
24
+ from __future__ import annotations
25
+
26
+ __version__ = '0.0.1'
27
+
28
+ from .sampic_decoder import SAMPIC_Run_Decoder
29
+
30
+ __all__ = ["SAMPIC_Run_Decoder"]
@@ -0,0 +1,41 @@
1
+ # -*- coding: utf-8 -*-
2
+ #############################################################################
3
+ # zlib License
4
+ #
5
+ # (C) 2025 Cristóvão Beirão da Cruz e Silva <cbeiraod@cern.ch>
6
+ #
7
+ # This software is provided 'as-is', without any express or implied
8
+ # warranty. In no event will the authors be held liable for any damages
9
+ # arising from the use of this software.
10
+ #
11
+ # Permission is granted to anyone to use this software for any purpose,
12
+ # including commercial applications, and to alter it and redistribute it
13
+ # freely, subject to the following restrictions:
14
+ #
15
+ # 1. The origin of this software must not be misrepresented; you must not
16
+ # claim that you wrote the original software. If you use this software
17
+ # in a product, an acknowledgment in the product documentation would be
18
+ # appreciated but is not required.
19
+ # 2. Altered source versions must be plainly marked as such, and must not be
20
+ # misrepresented as being the original software.
21
+ # 3. This notice may not be removed or altered from any source distribution.
22
+ #############################################################################
23
+ """The Entry Points module
24
+
25
+ This is a utility module holds all the CLI entry points
26
+
27
+ """
28
+
29
+ import argparse
30
+
31
+ from sampiclyser import __version__
32
+
33
+
34
+ def version(args=None):
35
+ """This is the entry function for the command line interface to print out the version"""
36
+ parser = argparse.ArgumentParser(description='Print the SAMPIClyser version')
37
+ # parser.add_argument('names', metavar='NAME', nargs=argparse.ZERO_OR_MORE,
38
+ # help="A name of something.")
39
+ args = parser.parse_args(args=args)
40
+
41
+ print(f"The SAMPIClyser version is: {__version__}")
@@ -0,0 +1,34 @@
1
+ # -*- coding: utf-8 -*-
2
+ #############################################################################
3
+ # zlib License
4
+ #
5
+ # (C) 2025 Cristóvão Beirão da Cruz e Silva <cbeiraod@cern.ch>
6
+ #
7
+ # This software is provided 'as-is', without any express or implied
8
+ # warranty. In no event will the authors be held liable for any damages
9
+ # arising from the use of this software.
10
+ #
11
+ # Permission is granted to anyone to use this software for any purpose,
12
+ # including commercial applications, and to alter it and redistribute it
13
+ # freely, subject to the following restrictions:
14
+ #
15
+ # 1. The origin of this software must not be misrepresented; you must not
16
+ # claim that you wrote the original software. If you use this software
17
+ # in a product, an acknowledgment in the product documentation would be
18
+ # appreciated but is not required.
19
+ # 2. Altered source versions must be plainly marked as such, and must not be
20
+ # misrepresented as being the original software.
21
+ # 3. This notice may not be removed or altered from any source distribution.
22
+ #############################################################################
23
+
24
+ import pytest
25
+
26
+
27
+ def test_version():
28
+ import sampiclyser
29
+
30
+ version = '0.0.1'
31
+
32
+ pytest.param
33
+
34
+ assert version == sampiclyser.__version__