python-musicbrainz3: Difference between revisions
(link pymbngs) |
|||
(9 intermediate revisions by 3 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 |
||
Line 20: | Line 21: | ||
* This wiki page is the central source of information |
* This wiki page is the central source of information |
||
* Discussion can take place on the [http://lists.musicbrainz.org/mailman/listinfo/musicbrainz-devel development mailing list] |
* Discussion can take place on the [http://lists.musicbrainz.org/mailman/listinfo/musicbrainz-devel development mailing list] |
||
* Source code is hosted |
* 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] |
* 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 |
** 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 |
||
Line 31: | Line 32: | ||
## Wiki page ('''done''') |
## Wiki page ('''done''') |
||
## Git repository ('''done''') |
## Git repository ('''done''') |
||
## Jira project |
## Jira project ('''done''') |
||
## |
## Group in Review Board ('''done''') |
||
# Evaluate tools |
# Evaluate tools |
||
## XML mapping tool (Matt, '''in progress''') |
## XML mapping tool (Matt, '''in progress''') |
||
Line 43: | Line 44: | ||
# Set up project structure in the repository (Matt, '''in progress''') |
# 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''') |
||
### I wouldn't worry too much about getting this comprehensive list upfront. Especially since there are parts of the webservice still not completed we should be able to create this as we go --alastair |
|||
### I agree. We should start and see what's missing. --matt |
|||
# Start hacking! |
# Start hacking! |
||
Line 66: | Line 65: | ||
* [http://unmaintainable.wordpress.com/2010/03/13/future-of-python-musicbrainz2/ Matt's original blog announcement] and [http://lists.musicbrainz.org/pipermail/musicbrainz-devel/2010-March/003797.html mailing list archive] |
* [http://unmaintainable.wordpress.com/2010/03/13/future-of-python-musicbrainz2/ Matt's original blog announcement] and [http://lists.musicbrainz.org/pipermail/musicbrainz-devel/2010-March/003797.html mailing list archive] |
||
* [[ |
* [[MusicBrainz Database/Schema|Schema Overview]] |
||
* [[Next_Generation_Schema/SearchServerXML|Web Service Interface]] |
* [[Next_Generation_Schema/SearchServerXML|NGS Web Service Interface]] |
||
* [[Next_Generation_Schema/XML|Web Service XML Format]] |
* [[Next_Generation_Schema/XML|NGS Web Service XML Format]] |
||
* [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 == |
||
Line 74: | Line 74: | ||
* 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. |
* Use distutils or setuptools? With setuptools we'd get test commands. |
||
* 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?