Skip to main content

Support for US Swimming SDIF v3 files

Project description

sdif

Parser/writer for US Swimming SDIF files.

GitHub forks Main workflow PyPI This project uses CalVer

The format is described in sdifv3.txt, obtained from https://www.usms.org/admin/sdifv3f.txt, dated April 28 1998, accessed Feb 12 2023.

United States Swimming has matured as an organization and expanded services to individuals and clubs. To support this expansion, USS has developed a computer plan. One component is a standard interchange format for technical data. Swimming data must be transmitted among the clubs, Local Swimming Committees (LSCs), and the USS headquarters office. Exchanging meet results is one example, where data from a host club is distributed to swimmers and clubs using diskettes or modems. Some LSCs are compiling swimmer statistics and would retype the data from printed sheets if electronic transmission were not available. A standard format promotes easy exchange of data and the development of new computer programs and services. The goal is to preserve the valuable efforts of our volunteers.

But why?

Swim meet administration uses some incredibly venerable software! Whatever innovations have visited swimming in the last twenty-five years have not made much of a mark on the conduct of meets, and a handful of vendors continue to do the bare minimum to keep their legacy code, and their legacy data formats, chugging along on new hardware and modern operating systems.

Most of these legacy data formats have no public documentation, so, if you'd like to get a bunch of entries into some meet management software, there aren't many obvious starting points! They don't accept anything as quotidian as a spreadsheet.

SDIF (SD3) is the proud exception, so here's a library. SD3 is a single-file data format with multiple record types and optional internal consistency checks. Each line in the file represents a record, and the fields are specified as fixed-width regions. It seems intended to represent a sort of flat-file database as much as an interchange format.

You can use this package to make sense of these files, or construct the records that you need to get data into a meet management tool.

How do I start?

To read a sd3 file:

with open("my_file.sd3", "rt") as f:
    for record in sdif.records.decode_records(f):
        print(record)

To write a sd3 file:

a0 = sdif.models.FileDescription(
    organization=sdif.models.OrganizationCode.masters,
    sdif_version="V3",
    file_code=sdif.models.FileCode.vendor_defined,
    software_name="My Cool Software",
    software_version="v0.0.0",
    contact_name="Joe Bloggs",
    contact_phone="+15555551212",
    file_creation=date.today(),
    submitted_by_lsc=None,
)
with open("my_file.sd3", "w") as f:
    f.write(sdif.records.encode_records([a0]))

Valid sd3 files must contain at least a FileDescription and a FileTerminator. See the SDIF specification for more details.

Other resources

License

Copyright 2023 Tim D. Smith

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this package except in compliance with the License. There is a copy of the license in the file LICENSE.

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sdif-23.2.0.post0.tar.gz (18.4 kB view details)

Uploaded Source

Built Distribution

sdif-23.2.0.post0-py3-none-any.whl (17.0 kB view details)

Uploaded Python 3

File details

Details for the file sdif-23.2.0.post0.tar.gz.

File metadata

  • Download URL: sdif-23.2.0.post0.tar.gz
  • Upload date:
  • Size: 18.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for sdif-23.2.0.post0.tar.gz
Algorithm Hash digest
SHA256 2d5d34b3d20a50b2b6827b0ce5a920324a1b083877e416edd4dc2e6cb1f14a88
MD5 24ac013aa88ebadbfedcf9f6f7b45476
BLAKE2b-256 7225be501cc3509c917af3e4b5b24c3403a9ca5168af2438072a1334176d7f6c

See more details on using hashes here.

File details

Details for the file sdif-23.2.0.post0-py3-none-any.whl.

File metadata

  • Download URL: sdif-23.2.0.post0-py3-none-any.whl
  • Upload date:
  • Size: 17.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for sdif-23.2.0.post0-py3-none-any.whl
Algorithm Hash digest
SHA256 6d642c40928d09c27b36615d6ca337480543d61c1a58c1b5c0147944bc77d39f
MD5 d8498be8edbe937adcd320fea3b614d2
BLAKE2b-256 559926123c771cf25f101d86a0f14405fdf44cc272b0c003008611e83b21d3b1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page