python-musicbrainz3: Difference between revisions
(link pymbngs) |
|||
(20 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
The python-musicbrainz3 package |
The python-musicbrainz3 package was planned to be the successor of [[python-musicbrainz2]]. |
||
For an active project try [https://github.com/alastair/python-musicbrainz-ngs python-musicbrainz-ngs]. |
|||
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. |
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. |
||
Line 11: | Line 12: | ||
* Despite NGS's complexity: Simple things should be simple |
* Despite NGS's complexity: Simple things should be simple |
||
* Turn today's modules into packages (source files are much too large) |
* Turn today's modules into packages (source files are much too large) |
||
* Make it more pythonic where possible (naming conventions?) |
* Make it more pythonic where possible (spaces instead of tabs; naming conventions?) |
||
* Remove rarely used cruft (what would that be?) |
* Remove rarely used cruft (what would that be?) |
||
* Keep the amount and quality of documentation |
* Keep the amount and quality of documentation |
||
* Write more test cases |
* Write more test cases |
||
== Project |
== Project Infrastructure == |
||
⚫ | |||
There are a few open tasks: |
|||
⚫ | |||
* Source code is hosted at git://git.musicbrainz.org/python-musicbrainz3.git ([http://git.musicbrainz.org/gitweb/?p=python-musicbrainz3.git;a=summary web interface]) |
|||
* Submit bug reports and feature requests via [http://jira.musicbrainz.org/browse/PYMB 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 [http://codereview.musicbrainz.org/groups/python-musicbrainz/ group python-musicbrainz] |
|||
⚫ | |||
# Set up project infrastructure |
# Set up project infrastructure |
||
## Wiki page ('''done''') |
## Wiki page ('''done''') |
||
## Git repository ( |
## Git repository ('''done''') |
||
## Jira project |
## Jira project ('''done''') |
||
## Group in Review Board ('''done''') |
|||
## Reviewboard? |
|||
# Evaluate tools |
# Evaluate tools |
||
## XML mapping tool (Matt, '''in progress''') |
## XML mapping tool (Matt, '''in progress''') |
||
## Unit test runner (nose?) |
## 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 |
# Create UML diagrams for |
||
## the core entities |
## the core entities ('''done''') |
||
## pymb3's classes |
## pymb3's classes |
||
# Set up project structure in the repository |
# Set up project structure in the repository (Matt, '''in progress''') |
||
# Gather data for the parser |
# Gather data for the parser |
||
## Update MMD Relax NG schema if necessary |
## Update MMD Relax NG schema if necessary ('''done''') |
||
## Prepare |
## Prepare initial set of example documents for the test suite ('''done''') |
||
# Start hacking! |
|||
== |
== Model == |
||
This is a simplified model showing only the core entities. |
|||
⚫ | |||
[[Image:pymb3-model-core.png|800px|Core Model]] |
|||
⚫ | |||
* [[NextGenerationSchema|Next Generation Schema Overview]] |
|||
⚫ | |||
⚫ | |||
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 == |
|||
* Soon: git repository |
|||
* TODO: Review board? |
|||
⚫ | |||
* TODO: Jira? |
|||
⚫ | |||
* [[MusicBrainz Database/Schema|Schema Overview]] |
|||
⚫ | |||
⚫ | |||
* [http://git.musicbrainz.org/gitweb/?p=musicbrainz-server/core.git;a=tree;f=lib/MusicBrainz/Server/Entity;hb=HEAD MusicBrainz Server Entities] |
|||
== Ideas and Open Questions == |
== Ideas and Open Questions == |
||
* Use an XML mapping package (xml.etree?) |
* Use an XML mapping package (xml.etree?) |
||
* Use distutils or setuptools? With setuptools we'd get test commands. |
|||
* Import version history into git? |
|||
* Is [[Server_Release_Notes/NGS_Beta_1#Tracklist|Tracklist]] a top-level entity? Is it in the web service? Should it be in pymb3? |
|||
[[Category:To Be Reviewed]] |
Latest revision as of 00:03, 16 January 2013
The python-musicbrainz3 package was planned to be the successor of python-musicbrainz2. For an active project try python-musicbrainz-ngs.
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?