pandaspro
pandas with friendlier dataframe methods and Excel export / formatting helpers.
pip install pandaspro
See CHANGELOG.md for what changed in each version, and df.cpdhelp() for the dataframe shortcuts.
Data assembly: cpdBaseFrame and cpdDatabaseC
The two halves of assembling a project's data:
- cpdBaseFrame — dated system extracts. One folder of files named by date (
SOB_20261001.csv); decorate a class and load a version withX(version="latest"). The data is produced elsewhere and only read here. - cpdDatabaseC — hand-maintained lists. One folder of JSON files named by list
(
modules/clients.json) plus a browser editor; decorate a store class and one class per list. The data is maintained by people in the published page.
cpdDatabaseC
from mylists import MyLists, Clients
MyLists.publish() # creates <folder>/mylists.html and modules/*.json (data is never overwritten)
MyLists.open() # opens the editor in Edge / Chrome; "Open folder" -> pick <folder>
Clients.frame() # rows as a DataFrame
MyLists.list() # every module: id, title, group, live, rows, revision, saved_at
MyLists.check() # one line per module: filled? live? same as its old source?
CountryGroups.import_source() # rows from the old Excel into the module (not live yet)
CountryGroups.compare() # empty frame = module and Excel agree
CountryGroups.set_live() # from now on read_live() returns the module
mylists is the example shipped in pandaspro/cpddatabasec/example/: copy mylists/ into your
project, rename the store, keep or replace the three example lists, add your own. Declaring a
store and a list:
from pandaspro import cpdDatabaseC, cpdField as field
@cpdDatabaseC(name="MyLists", package="myproject", editor="mylists.html")
class MyLists:
@classmethod
def get_path(cls): # or path="..." in the decorator
return os.environ["MYLISTS_DIR"] # per machine, never a hard-coded path in the repo
@MyLists.module("clients", title="Clients", group="Reference", key=["code"])
class Clients:
code = field(required=True, help="Short code, unique")
name = field(required=True)
tier = field(type="select", options=["A", "B", "C"])
Add a list = add a decorated class. Add a field = add a line (publish() refreshes the
definition, rows stay). Change the page = pass editor_source="your.html" (start from a copy of
pandaspro/cpddatabasec/editor.html).
Versions and releases
All work happens on master. A version is a tag on master (v1.3.1); there are no version
branches. The version number lives in one place, pyproject.toml.
- While you work: add a line under Unreleased in
CHANGELOG.mdfor anything a user can notice. - To release:
python release.py 1.3.2(add--dry-runto rehearse). It checks the tree, runs the tests, sets the version, dates the changelog section, commits, tags and pushes. - A machine that produces reports should sit on a tag, not on every push:
git fetch --tagsthengit checkout v1.3.2. - Version numbers: last digit for fixes and small additions, middle digit for new features, first digit when existing calls stop working.
Metadata
Release files for pandaspro 1.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| pandaspro-1.3.1.tar.gz | 164.9 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pandaspro-1.3.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 361.7 kB
Release files / pandaspro-1.3.1.tar.gz
| Download URL | pandaspro-1.3.1.tar.gz |
|---|---|
| Size | 164.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b4b7016fa009802e2f18658dbdba19930a682e30c7211af4a652123738f84428
|
|
BLAKE2b-256 checksum How to use checksums |
08b788bf5b55cd2ad231da41bb02e85b0e4ddca4979c0dc5b07b5b3b3234f1d9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.11
|
Release files / pandaspro-1.3.1-py3-none-any.whl
| Download URL | pandaspro-1.3.1-py3-none-any.whl |
|---|---|
| Size | 196.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0d030913cbe6a21a5e85c72df698f2d4b1185a04e83815aa2b7eed507532cd40
|
|
BLAKE2b-256 checksum How to use checksums |
2b6de8707e97aa0bda7f4847bad1e2528aa59a2201c95404292853cd4475886c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.11
|
Security for pandaspro 1.3.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.