← Back to team overview

keryx team mailing list archive

Re: [Merge] lp:~mac9416/keryx/devel into lp:keryx/devel

 

Do you know if there is a way to merge only partial changes of a commit?

On Sun, Sep 27, 2009 at 10:25 AM, mac9416 <mac9416@xxxxxxxxxxxxxxxx> wrote:

> mac9416 has proposed merging lp:~mac9416/keryx/devel into lp:keryx/devel.
>
>    Requested reviews:
>    Keryx Admins (keryx-admins)
>
>
> Sorry it took so long to get this merged. I had to reinstall Ubuntu, so I
> lost my PGP/SSH keys and had to get all that set up again. Now (once again)
> I'm not getting credit for the push because of a bzr setting. But I'll worry
> about that later.
>
> The important thing is that to_strings is working. :-)
>
> -mac
> --
> https://code.launchpad.net/~mac9416/keryx/devel/+merge/12488<https://code.launchpad.net/%7Emac9416/keryx/devel/+merge/12488>
> Your team Keryx Development Team is subscribed to branch lp:keryx/devel.
>
> === modified file 'libkeryx/definitions/dpkg/minideblib/AptRepoClient.py'
> (properties changed: -x to +x)
> --- libkeryx/definitions/dpkg/minideblib/AptRepoClient.py       2009-09-08
> 05:22:12 +0000
> +++ libkeryx/definitions/dpkg/minideblib/AptRepoClient.py       2009-09-27
> 15:25:17 +0000
> @@ -29,10 +29,10 @@
>  __revision__ = "r"+"$Revision$"[11:-2]
>  __all__ = [ 'AptRepoClient', 'AptRepoException' ]
>
> -from DpkgControl import DpkgParagraph
> -from DpkgDatalist import DpkgOrderedDatalist
> -from DpkgVersion import DpkgVersion, VersionError
> -from LoggableObject import LoggableObject
> +from minideblib.DpkgControl import DpkgParagraph
> +from minideblib.DpkgDatalist import DpkgOrderedDatalist
> +from minideblib.DpkgVersion import DpkgVersion, VersionError
> +from minideblib.LoggableObject import LoggableObject
>  import re, urllib2, os, types, time
>
>  try:
> @@ -40,6 +40,7 @@
>  except NameError:
>     from sets import Set as set
>
> +
>  def _universal_urlopen(url):
>     """More robust urlopen. It understands gzip transfer encoding"""
>     headers = { 'User-Agent': 'Mozilla/4.0 (compatible;
> Python/AptRepoClient)',
> @@ -47,15 +48,7 @@
>                 'Cache-Control': 'no-cache',
>                 'Accept-encoding': 'gzip' }
>     request = urllib2.Request(url, None, headers)
> -    try:
> -        import urlgrabber
> -        from urlgrabber.progress import TextMeter
> -
> -        #BUG: TextMeter prints over itself
> -        usock = urlgrabber.urlopen(url, http_headers=headers.items(),
> -                                    progress_obj=TextMeter())
> -    except:
> -        usock = urllib2.urlopen(request)
> +    usock = urllib2.urlopen(request)
>     if usock.headers.get('content-encoding', None) == 'gzip' or
> url.endswith(".gz"):
>         data = usock.read()
>         import cStringIO, gzip
> @@ -331,7 +324,7 @@
>         """Loads repositories into internal data structures from a local
> cache. Replaces previous content if clear = True (default)"""
>         self.load_repos(repoline, ignore_errors, clear, folder)
>
> -    # Alias for load_local()
> +    # Alias for load_local()d
>     update_local = load_local
>
>     def make_source_to_binaries_map(self):
> @@ -419,6 +412,151 @@
>     def get_available_binaries(self, base_url = None):
>         return _get_available_pkgs(base_url, self.binaries)
>
> +    def to_strings(self, binaries=True, sources=True):
> +        """Exports loaded metadata to _Packages/_Sources file formatted
> strings
> +           Outputs both source and binary data by default. Use
> binaries=False
> +           to output only source data and sources=False for only binary
> data
> +        """
> +        def convert_to_url(base_url, distro, section, architecture,
> datatype):
> +            """ Converts repository info into index file URL """
> +            if datatype == 'Packages':
> +                url = '%s_dists_%s_%s_binary-%s_%s' % (base_url, distro,
> section, architecture, datatype)
> +            elif datatype == 'Sources':
> +                url = '%s_dists_%s_%s_source_%s' % (base_url, distro,
> section, datatype)
> +            return url
> +
> +        values = ('Package',
> +                    'Essential',
> +                    'Binary',
> +                    'Priority',
> +                    'Section',
> +                    'Installed-Size',
> +                    'Maintainer',
> +                    'Original-Maintainer',
> +                    'Build-Depends',
> +                    'Build-Depends-Indep',
> +                    'Architecture',
> +                    'Source',
> +                    'Version',
> +                    'Replaces',
> +                    'Provides',
> +                    'Depends',
> +                    'Pre-Depends',
> +                    'Recommends',
> +                    'Suggests',
> +                    'Conflicts',
> +                    'Breaks',
> +                    'Filename',
> +                    'Size',
> +                    'MD5sum',
> +                    'SHA1',
> +                    'SHA256',
> +                    'Description',
> +                    'Enhances',
> +                    'Origin',
> +                    'Bugs',
> +                    'Homepage',
> +                    'Python-Version',
> +                    'Tag',
> +                    'Gstreamer-Decoders',
> +                    'Gstreamer-Elements',
> +                    'Gstreamer-Encoders',
> +                    'Gstreamer-Uri-Sinks',
> +                    'Gstreamer-Uri-Sources',
> +                    'Gstreamer-Version',
> +                    'Npp-Applications',
> +                    'Npp-Description',
> +                    'Npp-Filename',
> +                    'Npp-Mimetype',
> +                    'Npp-Name',
> +                    'Original-Uploaders',
> +                    'Python-Runtime',
> +                    'Build-Essential',
> +                    'Task',
> +                    'Standards-Version',
> +                    'Format',
> +                    'Directory',
> +                    'Files',
> +                    'Uploaders',
> +                    'Dm-Upload-Allowed',
> +                    'Vcs-Bzr',
> +                    'Vcs-Browser',
> +                    'Vcs-Svn',
> +                    'Vcs-Git',
> +                    'Vcs-Hg',
> +                    'Vcs-Cvs',
> +                    'Vcs-Darcs',
> +                    'Vcs-Arch',
> +                    'Checksums-Sha1',
> +                    'Checksums-Sha256',
> +                    'Orig-Vcs-Browser',
> +                    'Orig-Vcs-Svn',
> +                    'Debian-Vcs-Browser',
> +                    'Debian-Vcs-Svn',
> +                    'Build-Conflicts',
> +                    'Original-Vcs-Browser',
> +                    'Original-Vcs-Svn',
> +                    'Build-Conflicts-Indep',
> +                    'Python-Standards-Version',
> +                    'Debian-Vcs-Git',
> +                    'X-Vcs-Svn',
> +                    'X-Collab-Maint',
> +                    'Original-Vcs-Bzr',
> +                    'Vcs-Browse',
> +                    'Original-Vcs-Git',)
> +
> +        # Special values that take multiple lines. All lower-case.
> +        multiline_values = ('description',
> +                            'files',
> +                            'checksums-sha1',
> +                            'checksums-sha256')
> +
> +        data = {}
> +        output = {}
> +
> +        if binaries:
> +            data.update({'Packages': self.binaries})
> +        if sources:
> +            data.update({'Sources': self.sources})
> +        if not binaries and not sources:
> +            return {}
> +
> +        for datatype in data.keys():  # 'Packages' or 'Sources'
> +            for section in data[datatype].keys():
> +                # Populate output with filename keys and empty values.
> +                for arch in self._arch:
> +                    filename = convert_to_url(section[0][7:].replace('/',
> '_'), section[1], section[2], arch, datatype)
> +                    output.update({filename: ''})
> +                for pkgname in data[datatype][section].keys():
> +                    for pkg in data[datatype][section][pkgname]:
> +                        string = ''
> +                        for value in values:
> +                            key = value.lower()
> +
> +                            if key in multiline_values:
> +                                try:
> +                                    if pkg[key] == '':
> +                                        string += '%s:\n' % (value)
> +                                    if type(pkg[key]) == type([]):
> +                                        string += '%s: %s\n' % (value, '\n
> '.join(pkg[key]))
> +                                    if type(pkg[key]) == type(''):
> +                                        string += '%s: %s\n' % (value,
> pkg[key])
> +                                except KeyError:
> +                                    pass
> +                            else:
> +                                try: string += '%s: %s\n' % (value,
> pkg[key])
> +                                except KeyError: pass
> +                        string += '\n'  # Put a spacer between this and
> the next entry.
> +
> +                        if pkg['architecture'] == 'all':
> +                            for arch in self._arch:
> +                                filename =
> convert_to_url(section[0][7:].replace('/', '_'), section[1], section[2],
> arch, datatype)
> +                                output[filename] += string
> +                        else:
> +                            filename =
> convert_to_url(section[0][7:].replace('/', '_'), section[1], section[2],
> pkg['architecture'], datatype)
> +                            output[filename] += string
> +        return output
> +
>     def __get_best_version(self, package, base_url, pkgcache):
>         """
>             Should return touple (base_url,package_version) with the best
> version found in cache.
>
>
> _______________________________________________
> Mailing list: https://launchpad.net/~keryx<https://launchpad.net/%7Ekeryx>
> Post to     : keryx@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~keryx<https://launchpad.net/%7Ekeryx>
> More help   : https://help.launchpad.net/ListHelp
>
>


-- 
Chris Oliver
http://excid3.com

https://code.launchpad.net/~mac9416/keryx/devel/+merge/12488
Your team Keryx Development Team is subscribed to branch lp:keryx/devel.



References