[yt-svn] commit/yt: ngoldbaum: Merged in MatthewTurk/yt (pull request #2247)

commits-noreply at bitbucket.org commits-noreply at bitbucket.org
Wed Jun 29 13:08:07 PDT 2016


1 new commit in yt:

https://bitbucket.org/yt_analysis/yt/commits/667d2aa2b768/
Changeset:   667d2aa2b768
Branch:      yt
User:        ngoldbaum
Date:        2016-06-29 20:07:56+00:00
Summary:     Merged in MatthewTurk/yt (pull request #2247)

Implement a DOAP file generator
Affected #:  1 file

diff -r 3b23684c3c29c28a888fbfec978120700de134a1 -r 667d2aa2b7683bb2f695059d2f23dec485645d85 doc/helper_scripts/generate_doap.py
--- /dev/null
+++ b/doc/helper_scripts/generate_doap.py
@@ -0,0 +1,142 @@
+import os
+import hglib
+import pkg_resources
+from email.utils import parseaddr
+
+templates = {"header": r"""<Project xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns="http://usefulinc.com/ns/doap#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:admin="http://webns.net/mvcb/">
+ <name>The yt Project</name>
+ <shortname>yt</shortname>
+ <shortdesc>Multi-resolution volumetric analysis</shortdesc>
+ <description>yt is a python package for analyzing and visualizing volumetric, multi-resolution data.  Originally developed for astrophysical simulations, it is flexible enough to work with data from other domains such as weather, nuclear engineering, seismology and molecular dynamics.</description>
+ <homepage rdf:resource="http://yt-project.org/" />
+ <download-page rdf:resource="https://pypi.python.org/pypi/yt/" />
+ <download-mirror rdf:resource="http://bitbucket.org/yt_analysis/yt/" />
+ <bug-database rdf:resource="http://bitbucket.org/yt_analysis/yt/issues" />
+ <programming-language>python</programming-language>
+ <programming-language>cython</programming-language>
+ <license rdf:resource="http://usefulinc.com/doap/licenses/bsd" />
+ """,
+ "foaf": r"""<foaf:Person>
+     <foaf:name>%(realname)s</foaf:name>
+  </foaf:Person>
+  """,
+  "release": r"""
+	<release>
+		<Version>
+			<name>%(name)s</name>
+			<created>%(date)s</created>
+			<revision>%(revision)s</revision>
+		</Version>
+	</release>
+   """,
+  "footer": r"""
+ <repository> 
+   <HgRepository>
+     <browse rdf:resource='https://bitbucket.org/yt_analysis/yt/src' />
+     <location rdf:resource='https://bitbucket.org/yt_analysis/yt' />
+   </HgRepository>
+ </repository> 
+</Project>
+"""
+}
+
+known_releases = [
+    ("0.3"  , "2007-12-17"),
+    ("1.0.1", "2008-10-25"),
+    ("1.5"  , "2009-11-04"),
+    ("1.6"  , "2010-01-22"),
+    ("1.6.1", "2010-02-11"),
+    ("1.7"  , "2010-06-27"),
+]
+
+yt_provider = pkg_resources.get_provider("yt")
+yt_path = os.path.dirname(yt_provider.module_path)
+
+name_mappings = {
+        # Sometimes things get filtered out by hgchurn pointing elsewhere.
+        # So we can add them back in manually
+        "andrew.wetzel at yale.edu" : "Andrew Wetzel",
+        "df11c at my.fsu.edu": "Daniel Fenn",
+        "dnarayan at haverford.edu": "Desika Narayanan",
+        "jmtomlinson95 at gmail.com": "Joseph Tomlinson",
+        "kaylea.nelson at yale.edu": "Kaylea Nelson",
+        "tabel at slac.stanford.edu": "Tom Abel",
+        "pshriwise": "Patrick Shriwise",
+        "jnaiman": "Jill Naiman",
+        "gsiisg": "Geoffrey So",
+        "dcollins4096 at gmail.com": "David Collins",
+        "bcrosby": "Brian Crosby",
+        "astrugarek": "Antoine Strugarek",
+        "AJ": "Allyson Julian",
+}
+
+name_ignores = ["convert-repo"]
+
+lastname_sort = lambda a: a.rsplit(None, 1)[-1]
+
+def get_release_tags():
+    c = hglib.open(yt_path)
+    releases = {}
+    for name, rev, node, islocal in c.tags():
+        if name.startswith("yt-"):
+            releases[name] = node
+    rr = []
+    for name, node in sorted(releases.items()):
+        date = c.log(node)[-1][-1]
+        rr.append((date, name[3:]))
+    rr.sort()
+    return [(_[1], _[0].strftime("%Y-%M-%d")) for _ in rr]
+
+def developer_names():
+    cmd = hglib.util.cmdbuilder("churn", "-c")
+    c = hglib.open(yt_path)
+    emails = set([])
+    for dev in c.rawcommand(cmd).split("\n"):
+        if len(dev.strip()) == 0: continue
+        emails.add(dev.rsplit(None, 2)[0])
+    print("Generating real names for {0} emails".format(len(emails)))
+    names = set([])
+    for email in sorted(emails):
+        if email in name_ignores:
+            continue
+        if email in name_mappings:
+            names.add(name_mappings[email])
+            continue
+        cset = c.log(revrange="last(author('%s'))" % email)
+        if len(cset) == 0:
+            print("Error finding {0}".format(email))
+            realname = email
+        else:
+            realname, addr = parseaddr(cset[0][4])
+        if realname == '':
+            realname = email
+        if realname in name_mappings:
+            names.add(name_mappings[realname])
+            continue
+        realname = realname.decode('utf-8')
+        realname = realname.encode('ascii', 'xmlcharrefreplace')
+        names.add(realname)
+    #with open("devs.txt", "w") as f:
+    #    for name in sorted(names, key=lastname_sort):
+    #        f.write("%s\n" % name)
+    devs = list(names)
+    devs.sort(key=lastname_sort)
+    return devs
+
+def generate_doap():
+    dev_names = developer_names()
+    with open("doap.xml", "w") as f:
+        f.write(templates["header"])
+        for dev_name in dev_names:
+            f.write("<developer>\n")
+            f.write(templates["foaf"] % {'realname': dev_name})
+            f.write("</developer>\n")
+        for release in known_releases + get_release_tags():
+            print release
+            f.write(templates["release"] % {
+                'name': "yt " + release[0], 'revision': release[0], 'date': release[1]}
+            )
+        f.write(templates["footer"])
+
+if __name__ == "__main__":
+    generate_doap()

Repository URL: https://bitbucket.org/yt_analysis/yt/

--

This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.


More information about the yt-svn mailing list