python-musicbrainz3
From MusicBrainz Wiki
The python-musicbrainz3 package is the successor of python-musicbrainz2.
NGS is coming, so a rewrite is in order to keep up with MB development. This wiki page collects information, plans, and ideas for this project.
Feel free to edit!
Goals
- Fully support the NGS data model and web service
- Require Python 2.6 and aim to be as close to Python 3 as possible
- Despite NGS's complexity: Simple things should be simple
- Turn today's modules into packages (source files are much too large)
- Make it more pythonic where possible (spaces instead of tabs; naming conventions?)
- Remove rarely used cruft (what would that be?)
- Keep the amount and quality of documentation
- Write more test cases
Project Infrastructure
- This wiki page is the central source of information
- Discussion can take place on the development mailing list
- Source code is hosted at git://git.musicbrainz.org/python-musicbrainz3.git (web interface)
- Submit bug reports and feature requests via PYMB Jira
- Do we want to use Jira just for bug reports, or as a dumping ground for upcoming tasks too (e.g. 'Do author search') --alastair
- I don't know. Using it for tasks sounds like a good idea, too. --matt
- Upload patches to Review Board in group python-musicbrainz
Project Plan
- Set up project infrastructure
- Wiki page (done)
- Git repository (done)
- Jira project (done)
- Group in Review Board (done)
- Evaluate tools
- XML mapping tool (Matt, in progress)
- Unit test runner (nose?)
- What's the advantage of something like nose over just using the unittest package? I don't have much experience in unit testing python stuff. --alastair
- Look at ETree or similar for XML (also consider json libraries?) (Alastair, in progress)
- Create UML diagrams for
- the core entities (done)
- pymb3's classes
- Set up project structure in the repository (Matt, in progress)
- Gather data for the parser
- Update MMD Relax NG schema if necessary (done)
- Prepare initial set of example documents for the test suite (done)
- Start hacking!
Model
This is a simplified model showing only the core entities.
The m:n associations displayed with bold lines (Artist to anything, Release to Label) are attributed and will be modeled using association classes (ArtistCredit and ReleaseEvent respectively). We implement 1:n associations using lists.
TODO: Are Work to Recording, ReleaseGroup to Release ordered?
TODO: The URL class is only used for ARs?
Links
Links with documentation and other relevant information.
- Matt's original blog announcement and mailing list archive
- Schema Overview
- NGS Web Service Interface
- NGS Web Service XML Format
- MusicBrainz Server Entities
Ideas and Open Questions
- Use an XML mapping package (xml.etree?)
- Use distutils or setuptools? With setuptools we'd get test commands.
- Is Tracklist a top-level entity? Is it in the web service? Should it be in pymb3?