def pin_requirements(dist, all_dists): """ Override versions of things we're tagging to be explicit pins. This will 'flatten' the dependency graph for anything that is third-party so that nothing shifts under our feet when we install this later. """ get_log().info("Pinning requirements for %s" % dist) with chdir(dist.location): parser = get_parser() cfg = get_metadata(parser) new_reqs = set() for req in pkg_resources.parse_requirements(cfg['install_requires']): if not req.key in all_dists: raise PackageError("Dependency %s is not installed, cannot pin to version." % req.project_name) req_dist = all_dists[req.key] if is_third_party(req_dist): # Flatten third-party requirement graphs. [new_reqs.add(i.as_requirement()) for i in resolve_dependencies([req_dist]).values()] else: new_reqs.add(all_dists[req.key].as_requirement()) parser.set('metadata','install_requires', '\n'.join(str(i) for i in new_reqs)) # Save setup file away so we can go back to the un-pinned version shutil.copyfile('setup.cfg', 'setup.cfg.unpinned') # Write out pinned requirements with open('setup.cfg', 'wb') as fp: parser.write(fp) return new_reqs
def upload(dist): get_log().info("Uploading %s" % dist) with chdir(dist.location): cfg = get_parser() run([ 'scp', 'dist/%s-%s.tar.gz' % (cfg.get('metadata', 'name'), dist.version), PKG_REPO ])
def is_top_level(pkg): with chdir(pkg): parser = get_parser() try: if parser.get('tagup','top_level') == 'true': return True except (ConfigParser.NoSectionError, ConfigParser.NoOpotionError): pass return False
def is_top_level(pkg): with chdir(pkg): parser = get_parser() try: if parser.get('tagup', 'top_level') == 'true': return True except (ConfigParser.NoSectionError, ConfigParser.NoOpotionError): pass return False
def rollover(dist, version): get_log().info("Rolling over %s" % dist) with chdir(dist.location): if os.path.isfile('setup.cfg.unpinned'): get_log().info("Rolling back to unpinned setup.cfg") shutil.move('setup.cfg.unpinned', 'setup.cfg') new_version = next_version(version) cfg = get_parser() cfg.set('metadata','version',new_version.vstring) with open('setup.cfg', 'wb') as fp: cfg.write(fp) get_log().info("New version is: %s" % new_version.vstring)
def rollover(dist, version): get_log().info("Rolling over %s" % dist) with chdir(dist.location): if os.path.isfile('setup.cfg.unpinned'): get_log().info("Rolling back to unpinned setup.cfg") shutil.move('setup.cfg.unpinned', 'setup.cfg') new_version = next_version(version) cfg = get_parser() cfg.set('metadata', 'version', new_version.vstring) with open('setup.cfg', 'wb') as fp: cfg.write(fp) get_log().info("New version is: %s" % new_version.vstring)
def should_tag(dist): get_log().info("Checking if we should tag %s" % dist) with chdir(dist.location): # Using cfg version in case the env is out-of-date version = get_version(get_parser()) releases = get_tags() get_log().debug("This version: %s" % (version)) get_log().debug("Releases : %s" % (releases)) if version.vstring in releases.keys(): raise PackageError("Version %s has already been tagged" % version) # Check if the second last revision number is in our releases # Second last because creating the tag itself is one commit, and # rolling over the version is another. second_last_revno = get_previous_revno(get_previous_revno(get_revno())) get_log().debug("Second-last revno: %s" % second_last_revno) if second_last_revno in releases.values(): get_log().info("No changes since last release") return False return version
def pin_requirements(dist, all_dists): """ Override versions of things we're tagging to be explicit pins. This will 'flatten' the dependency graph for anything that is third-party so that nothing shifts under our feet when we install this later. """ get_log().info("Pinning requirements for %s" % dist) with chdir(dist.location): parser = get_parser() cfg = get_metadata(parser) new_reqs = set() for req in pkg_resources.parse_requirements(cfg['install_requires']): if not req.key in all_dists: raise PackageError( "Dependency %s is not installed, cannot pin to version." % req.project_name) req_dist = all_dists[req.key] if is_third_party(req_dist): # Flatten third-party requirement graphs. [ new_reqs.add(i.as_requirement()) for i in resolve_dependencies([req_dist]).values() ] else: new_reqs.add(all_dists[req.key].as_requirement()) parser.set('metadata', 'install_requires', '\n'.join(str(i) for i in new_reqs)) # Save setup file away so we can go back to the un-pinned version shutil.copyfile('setup.cfg', 'setup.cfg.unpinned') # Write out pinned requirements with open('setup.cfg', 'wb') as fp: parser.write(fp) return new_reqs
def get_dist_name(pkg_dir): with chdir(pkg_dir): return get_metadata(get_parser())['name']
def upload(dist): get_log().info("Uploading %s" % dist) with chdir(dist.location): cfg = get_parser() run(['scp', 'dist/%s-%s.tar.gz' % (cfg.get('metadata','name'), dist.version), PKG_REPO])