Beispiel #1
0
def migrate_files(current_version, target_version, data_directory):
    # look up the version names
    has_updated = False
    if current_version is None:
        return False
    if NumberedVersion(current_version) < NumberedVersion("0.4.0rc1.dev3"):
        if migrate_files_pre_0_4_0_rc1_dev3(current_version, data_directory):
            has_updated = True
    return has_updated
Beispiel #2
0
def migrate_settings(current_version, settings_dict, default_settings_directory, data_directory):
    # extract the settings version
    # note that the version moved from settings.version to settings.main_settings.version
    version = get_version(settings_dict)
    settings_version = get_settings_version(settings_dict)

    if version == 'unknown':
        raise Exception("Could not find version information within the settings json, cannot perform migration.")

    if version == "0+unknown":
        raise Exception("An unknown settings version was detected, cannot perform migration.")

    # create a copy of the settings
    original_settings_copy = copy.deepcopy(settings_dict)

    # create a flag to indicate that we've updated settings
    has_updated = False

    if settings_version is None and NumberedVersion(version) <= NumberedVersion("0.3.3rc3.dev0"):
        has_updated = True
        settings_dict = migrate_pre_0_3_3_rc3_dev(current_version, settings_dict, os.path.join(default_settings_directory, 'settings_default_0.3.3rc3.dev0.json'))

    if settings_version is None and NumberedVersion(version) < NumberedVersion("0.4.0rc1.dev0"):
        has_updated = True
        settings_dict = migrate_pre_0_3_5_rc1_dev(current_version, settings_dict, os.path.join(default_settings_directory, 'settings_default_0.4.0rc1.dev0.json'))

    if settings_version is None and NumberedVersion(version) < NumberedVersion("0.4.0rc1.dev2"):
        has_updated = True
        settings_dict = migrate_pre_0_4_0_rc1_dev2(current_version, settings_dict, os.path.join(default_settings_directory, 'settings_default_0.4.0rc1.dev2.json'))

    if settings_version is None and NumberedVersion(version) < NumberedVersion("0.4.0rc1.dev3"):
        has_updated = True
        settings_dict = migrate_pre_0_4_0_rc1_dev3(current_version, settings_dict, os.path.join(default_settings_directory, 'settings_default_0.4.0rc1.dev3.json'))

    if settings_version is None and NumberedVersion(version) < NumberedVersion("0.4.0rc1.dev4"):
        has_updated = True
        settings_dict = migrate_pre_0_4_0_rc1_dev4(current_version, settings_dict, os.path.join(default_settings_directory, 'settings_default_0.4.0rc1.dev4.json'))

    # Start using main_settings.settings_version for migrations
    # this value will start off as None
    if settings_version is None:  # None < 0.4.0
        has_updated = True
        settings_dict = migrate_pre_0_4_0(current_version, settings_dict, os.path.join(default_settings_directory, 'settings_default_0.4.0.json'))

    # Add other migrations here in the future...

    # if we have updated, create a backup of the current settings
    if has_updated:
        with open(get_settings_backup_name(version, data_directory), "w+") as f:
            json.dump(original_settings_copy, f)

    # Ensure that the version and settings_version within the settings.json file is up to date
    settings_dict["main_settings"]["version"] = current_version
    settings_dict["main_settings"]["settings_version"] = NumberedVersion.CurrentSettingsVersion

    return settings_dict
Beispiel #3
0
 def test_numbered_version(self):
     fallback_version = NumberedVersion.clean_version("0.4.0rc3")
     plugin_version = NumberedVersion.clean_version(
         get_versions()['version'])
     #if plugin_version == "0+unknown" or NumberedVersion(plugin_version) < NumberedVersion(fallback_version):
     if plugin_version == "0+unknown":
         plugin_version = fallback_version
         try:
             # This generates version in the following form:
             #   0.4.0rc1+?.GUID_GOES_HERE
             plugin_version += "+u." + versioneer.get_versions(
             )['full-revisionid'][0:7]
         except:
             pass
     self.assertEqual(plugin_version, fallback_version)
    def check_for_updates(available_profiles, updatable_profiles,
                          force_updates, ignore_suppression):
        profiles_to_update = {
            "printer": [],
            "stabilization": [],
            "trigger": [],
            "rendering": [],
            "camera": [],
            "logging": [],
        }
        updates_available = False
        # loop through printer profiles
        if (updatable_profiles is not None and available_profiles is not None):
            # loop through the updatable profile dicts
            for profile_type, value in six.iteritems(updatable_profiles):
                # loop through the profiles
                for updatable_profile in value:
                    # get the available profile for the updatable profile keys
                    key_values = [
                        x["value"] for x in updatable_profile["key_values"]
                    ]
                    available_profile = ExternalSettings._get_profile_for_keys(
                        available_profiles, key_values, profile_type)
                    if available_profile is None:
                        continue
                    # if we have new model and the version is greater than the update version
                    # and we're not suppressing updates for this version, add the profile
                    # to our update list
                    if (updatable_profile["version"] is None or
                        (NumberedVersion(str(available_profile["version"])) >
                         NumberedVersion(str(updatable_profile["version"])) and
                         (not updatable_profile[
                             "suppress_update_notification_version"] or
                          (force_updates or ignore_suppression or
                           NumberedVersion(str(available_profile["version"])) >
                           NumberedVersion(
                               str(updatable_profile[
                                   "suppress_update_notification_version"])))))
                        ):
                        updates_available = True
                        profiles_to_update[profile_type].append(
                            updatable_profile)

        if not updates_available:
            return False
        return profiles_to_update
    def _get_best_settings_version(current_version):
        # load the available versions for the current settings version.  This number will be incremented as the
        # settings change enough to not be backwards compatible
        versions = ExternalSettings._get_versions()["versions"]
        if not versions:
            return None

        versions.sort(key=NumberedVersion)

        settings_version = None
        for version in versions:
            if NumberedVersion(str(version)) > NumberedVersion(
                    str(NumberedVersion.CurrentSettingsVersion)):
                break
            settings_version = version

        if settings_version is None and len(versions) > 0:
            settings_version = versions[len(versions) - 1]
        return settings_version
Beispiel #6
0
from distutils.cygwinccompiler import CygwinCCompiler
from distutils.version import LooseVersion
from octoprint_octolapse_setuptools import NumberedVersion
import sys
import versioneer
########################################################################################################################
# The plugin's identifier, has to be unique
plugin_identifier = "octolapse"
# The plugin's python package, should be "octoprint_<plugin identifier>", has to be unique
plugin_package = "octoprint_octolapse"
# The plugin's human readable name. Can be overwritten within OctoPrint's internal data via __plugin_name__ in the
# plugin module
plugin_name = "Octolapse"
# The plugin's fallback version, in case versioneer can't extract the version from _version.py.
# This can happen if the user installs from one of the .zip links in github, not generated with git archive
fallback_version = NumberedVersion.clean_version(
    NumberedVersion.CurrentVersion)
# Get the cleaned version number from versioneer
plugin_version = NumberedVersion.clean_version(
    versioneer.get_versions(verbose=True)["version"])

# Depending on the installation method, versioneer might not know the current version
# if plugin_version == "0+unknown" or NumberedVersion(plugin_version) < NumberedVersion(fallback_version):
if plugin_version == "0+unknown":
    plugin_version = fallback_version
    try:
        # This generates version in the following form:
        #   0.4.0rc1+?.GUID_GOES_HERE
        plugin_version += "+u." + versioneer.get_versions(
        )['full-revisionid'][0:7]
    except:
        pass
Beispiel #7
0
    def test_version(self):
        # The problem:
        # Version numbers like V0.4.0rc1 < V0.4.0.rc1.devxxx  The dev stuff messed it up!
        # When comparing version numbers:
        # V0.4.0 > v0.4.0rc... Always
        # 0.4.0rc... > 0.4.0rc.dev...
        # 0.4.0rc2... > 0.4.0rc1...

        # test stripping off commit level version info
        test_version = NumberedVersion('0.4.0rc1+u.dec65f5')
        # make sure identical version numbers are considered to be equal
        assert (NumberedVersion('0.4.0rc1') == NumberedVersion('0.4.0rc1'))

        # make sure V prefixes are ignored version numbers are considered to be equal
        assert (NumberedVersion('v0.4.0rc1') == NumberedVersion('0.4.0rc1'))
        assert (NumberedVersion('V0.4.0rc1') == NumberedVersion('0.4.0rc1'))
        assert (NumberedVersion('0.4.0rc1') == NumberedVersion('v0.4.0rc1'))
        assert (NumberedVersion('0.4.0rc1') == NumberedVersion('V0.4.0rc1'))
        assert not (NumberedVersion('v0.4.0rc1') < NumberedVersion('0.4.0rc1'))

        # make sure that rc is always greater than rcX.devX
        assert (NumberedVersion('0.4.0rc1.dev1') < NumberedVersion('0.4.0rc1'))
        assert not (NumberedVersion('0.4.0rc1.dev1') >
                    NumberedVersion('0.4.0rc1'))
        assert not (NumberedVersion('0.4.0rc1.dev1')
                    == NumberedVersion('0.4.0rc1'))
        assert (NumberedVersion('0.4.0rc1') > NumberedVersion('0.4.0rc1.dev1'))
        assert not (NumberedVersion('0.4.0rc1') <
                    NumberedVersion('0.4.0rc1.dev1'))
        assert not (NumberedVersion('0.4.0rc1')
                    == NumberedVersion('0.4.0rc1.dev1'))

        # Make sure that release versions are always greater than non-release versions
        assert (NumberedVersion('0.4.0') > NumberedVersion('0.4.0rc1'))
        assert not (NumberedVersion('0.4.0') < NumberedVersion('0.4.0rc1'))
        assert not (NumberedVersion('0.4.0') == NumberedVersion('0.4.0rc1'))
        assert (NumberedVersion('0.4.0rc1') < NumberedVersion('0.4.0'))
        assert not (NumberedVersion('0.4.0rc1') > NumberedVersion('0.4.0'))
        assert not (NumberedVersion('0.4.0rc1') == NumberedVersion('0.4.0'))

        # make sure that higher tag versions are always considered newer than lower ones
        assert (NumberedVersion('0.4.1') > NumberedVersion('0.4.0'))
        assert not (NumberedVersion('0.4.1') < NumberedVersion('0.4.0'))
        assert not (NumberedVersion('0.4.1') == NumberedVersion('0.4.0'))
        assert (NumberedVersion('0.4.0') < NumberedVersion('0.4.1'))
        assert not (NumberedVersion('0.4.0') > NumberedVersion('0.4.1'))
        assert not (NumberedVersion('0.4.0') == NumberedVersion('0.4.1'))

        # make sure that clean versions are always considered older than dirty versions
        assert (NumberedVersion('v0.4.0rc1.dev5+11.g3ffd305.dirty') >
                NumberedVersion("v0.4.0rc1.dev5+11.g3ffd305"))
        assert not (NumberedVersion('v0.4.0rc1.dev5+11.g3ffd305.dirty') <
                    NumberedVersion("v0.4.0rc1.dev5+11.g3ffd305"))
        assert not (NumberedVersion('v0.4.0rc1.dev5+11.g3ffd305.dirty')
                    == NumberedVersion("v0.4.0rc1.dev5+11.g3ffd305"))
        assert (NumberedVersion("v0.4.0rc1.dev5+11.g3ffd305") <
                NumberedVersion('v0.4.0rc1.dev5+11.g3ffd305.dirty'))
        assert not (NumberedVersion("v0.4.0rc1.dev5+11.g3ffd305") >
                    NumberedVersion('v0.4.0rc1.dev5+11.g3ffd305.dirty'))
        assert not (NumberedVersion("v0.4.0rc1.dev5+11.g3ffd305")
                    == NumberedVersion('v0.4.0rc1.dev5+11.g3ffd305.dirty'))

        # make sure that versions with more commits are higher than those with lower
        assert (NumberedVersion('v0.4.0rc1.dev5+11.g3ffd305.dirty') >
                NumberedVersion("v0.4.0rc1.dev5+10.g3ffd305.dirty"))
        assert not (NumberedVersion('v0.4.0rc1.dev5+11.g3ffd305.dirty') <
                    NumberedVersion("v0.4.0rc1.dev5+10.g3ffd305.dirty"))
        assert not (NumberedVersion('v0.4.0rc1.dev5+11.g3ffd305.dirty')
                    == NumberedVersion("v0.4.0rc1.dev5+10.g3ffd305.dirty"))
        assert (NumberedVersion("v0.4.0rc1.dev5+10.g3ffd305.dirty") <
                NumberedVersion('v0.4.0rc1.dev5+11.g3ffd305.dirty'))
        assert not (NumberedVersion("v0.4.0rc1.dev5+10.g3ffd305.dirty") >
                    NumberedVersion('v0.4.0rc1.dev5+11.g3ffd305.dirty'))
        assert not (NumberedVersion("v0.4.0rc1.dev5+10.g3ffd305.dirty")
                    == NumberedVersion('v0.4.0rc1.dev5+11.g3ffd305.dirty'))

        # When there is not development info within the version, the comparison is ambiguous.  Make them equal
        assert (NumberedVersion('v0.4.0rc1.dev5+u.g3ffd305') ==
                NumberedVersion("v0.4.0rc1.dev5+10.g3ffd305"))
        assert (NumberedVersion("v0.4.0rc1.dev5+10.g3ffd305") ==
                NumberedVersion('v0.4.0rc1.dev5+u.g3ffd305'))

        # when there is full tag information (i.e. installed from a release), it is older
        assert (NumberedVersion('v0.4.0rc1.dev5') <
                NumberedVersion("v0.4.0rc1.dev5+10.g3ffd305"))
        assert not (NumberedVersion('v0.4.0rc1.dev5') >
                    NumberedVersion("v0.4.0rc1.dev5+10.g3ffd305"))
        assert not (NumberedVersion('v0.4.0rc1.dev5')
                    == NumberedVersion("v0.4.0rc1.dev5+10.g3ffd305"))
        assert (NumberedVersion("v0.4.0rc1.dev5+10.g3ffd305") >
                NumberedVersion('v0.4.0rc1.dev5'))
        assert not (NumberedVersion("v0.4.0rc1.dev5+10.g3ffd305") <
                    NumberedVersion('v0.4.0rc1.dev5'))
        assert not (NumberedVersion("v0.4.0rc1.dev5+10.g3ffd305")
                    == NumberedVersion('v0.4.0rc1.dev5'))

        assert (NumberedVersion("v0.4.0rc1.dev2") <
                NumberedVersion('v0.4.0rc1.dev3'))

        assert (NumberedVersion('v0.4.0rc1.dev3') >
                NumberedVersion("v0.4.0rc1.dev2"))

        assert (NumberedVersion('v0.4.0') > NumberedVersion("v0.4.0rc1.dev2"))
        assert (NumberedVersion("v0.4.0rc1.dev2") < NumberedVersion('v0.4.0'))