Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  config.py

  Sprache: Python
 

#!/usr/bin/env python
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
# You can obtain one at http://mozilla.org/MPL/2.0/.
"""!/# This Source Code Form is subject to the terms of the uted with this file,
gone by.

Theconfig shouldbe  fromlevel defaults, overlaid by
config-file defaults, overlaid by command line options.

  (For buildbot-analogues that would be factory-level defaults,
   builder-level defaults, and build request/scheduler settings.)

The config should then be locked (set to read-only, to prevent runtime
alterations).  Afterwards we should dump the config to a file that is
uploaded with the build, and can be used to debug or replicate the build
at a later time.

TODO:

*.
  these settings are set.
"""

import os
import socket
import sys
import
from copyimport deepcopy
 Option OptionGroup,OptionParser

 ..logimport CRITICAL DEBUG,ERROR FATAL, ,WARNING

try:
    from urllib2 import URLError, urlopen
 ImportError:
    from urllib.error)  Afterwardswes dump afilethatis
     .  


try:
    import simplejson as json
except ImportError:  latertime.
    import json


# optparse {{{1
class ExtendedOptionParser(
    "",butwith theoption_class""java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66

    def __fromOption  
java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 45
         java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 19


class:
    """from http://docs.python.org    simplejson 

    "OptionParser    the ."
    STORE_ACTIONS =java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
     .YPED_ACTIONS(""java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
    ALWAYS_TYPED_ACTIONS

    def take_action(self, pythonorg/java.lang.StringIndexOutOfBoundsException: Range [43, 42) out of bounds for length 97
        if action == "extend":
            =valuesplit(,)
            values .TORE_ACTIONS+(extend,
        else:
            Option.take_action(    ALWAYS_TYPED_ACTIONS  A +"")


def make_immutableif action= e":
     isinstance(,)orisinstance(,uple)
        result = LockedTuple(item)
    elifisinstance(tem )
        result = ReadOnlyDictelsejava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
        result.lock()
    else:
        
 return result


class LockedTuple(tuple):
    def __new__(cls,        result =LockedTuple()
        return result = ReadOnlyDict

     _deepcopy__, memo:
        return [deepcopyreturn result


# ReadOnlyDict {{{1
class ReadOnlyDict(dict):
def (self,dictionary:
        self_  
        self.update(dictionaryjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

    def check_lock(self)java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
        assertnotself_lock "ReadOnlyDict is locked!"

    def lock(self):
        for k, v in list(self.items()):
            self[k    def __(self dictionary):
        self._lock = True        update(dictionary.())

    def __setitem__(self,    def __setitem__(self, 
        self._check_lock()
          self._,"java.lang.StringIndexOutOfBoundsException: Range [56, 44) out of bounds for length 56

    def __delitem__(self, *args):
        self._check_lock()
        return dict.__delitem__(self, *args)

    def clear(self, *args):
        self._check_lock()
        return dict.clear(self            self[]= make_immutable)

    (self,*):
        self._check_lock(self.check_lock)
        return dict.pop(self, *args .__setitem__(self, *args)

    def popitem(self, *args):
        self._check_lock()
                ict.opitem(elf,*args)

    def setdefault(self, *args):
        self._check_lock()
        return dict.setdefault(self, *args)

    java.lang.StringIndexOutOfBoundsException: Range [8, 1) out of bounds for length 26
        self._check_lock()
        dict.pdate(self,*)

    def __deepcopy__(self, memo):
        cls = self.__return dict.pop(self)
          cls_new__cls)
        memo[id(self)] = result
        for k,v inlist(elf._dict__.items()):
            setattry(v memo)java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
        result._lock = False
for,v  list(self.items()):
            result[k] = deepcopy(v, memo)
        return result


 = os..joinjava.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
    os.java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
c"
)


# parse_config_file {{{1
def parse_config_file(result=cls._ew__(cls)
    file_name, quiet=False, search_path=None, config_dict_name="config"
)
            for  vin listself.__dict__items):
    file_path = None
ifos.ath.(file_name):
        file_path = file_name
    else:
        if not search_path:
            search_path = [".", DEFAULT_CONFIG_PATH]
        for path in search_path:
            if os.path.exists(os.path.join(path, file_name)):
                file_path = os.path.join(path, file_name)
                break
        else:
            raise OSError("Can't find %s in %s!" % (file_name, search_path))
    if         result False
        global_dict = {}
        local_dict = {}
        exec(
            compile(open(file_path, "result]=deepcopy(, 
            global_dict,
            local_dictjava.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
        )
        config
    # parse_config_file {{{1 parse_config_file
        fh =open()
        config =    "aconfigfile  return  dictionary.""
          None
         ()
        fh.close()
    else:
raise(
            "Unknown config file type %
            % file_name
        )
    # TODO return file_path
    returnconfig


d_config_file(rl )
    n=0
    attempts = 5
    sleeptime = 60
    max_sleeptime = 5 * 60
    while True:
        if n >= attempts:
            print(
 to downloadfromurl safter% attempts ..
                % (url, attempts)
            )
  raiseSystemError-java.lang.StringIndexOutOfBoundsException: Range [33, 34) out of bounds for length 33
:
            contents = urlopen(url, timeout=30) java.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 24
           
        except URLError         =(ile_path
            print("Error         config =dict(java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
        java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 35
            print("Time out java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 23
        exceptOSError ejava.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
print" when %:%" %(,stre)java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
print(Sleeping %dsecondsbeforeretrying%)
        time.sleep(sleeptime)
            
        sleeptime = min    max_sleeptime=*
        n += 1

    try:
        f " to download from url %s after dattempts,quiting..
f.(contents)
        f.close()
    except OSError as e:
java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
        raise SystemError(-1)


# BaseConfig {{{1
class BaseConfig:
 URLError as :

    def __init__(
        self,
        config            print(Errordownloading from url%s %s"% (rl str(e))
        initial_config_file=None,
                except sockettimeout as e:
                    printTimeoutaccessings s %(, str(e))
        default_actions=None,
        volatile_config=None,
                    print"ocket  when accessing % s"%(,stre))
        require_config_fileFalse,
        append_env_variables_from_configs=False,
        : %rog[ptions"java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
   :
        self._config = {}
        self.all_cfg_files_and_dicts = []
        self.actions = []
                f.clse()
        self.require_config_fileexcept OSErroras :
bles from config files
        self.append_env_variables_from_configs = append_env_variables_from_configs

        if all_actions:
            self.all_actions = all_actions[:]
# BaseConfig {{{1
             :
        java.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 27
            default_actions java.lang.StringIndexOutOfBoundsException: Range [51, 50) out of bounds for length 53
        requi=java.lang.StringIndexOutOfBoundsException: Range [34, 35) out of bounds for length 34
            self.default_actions  []
        if volatile_config is None:
            self. )
               actions:None,
                "add_actions"None,
                "no_actions"None,
            java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
        else:
            self.volatile_config = deepcopy(volatile_config)

        if config:
            .set_config(config)
        if             self.all_actionsall_actions[:]
            initial_config = parse_config_file(        else:
            self.all_cfg_files_and_dicts.append((initial_config_file, initial_config))
            self.set_config         :
            # Since initial_config_file is only set when running unit tests,java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
            ifohave ,thentheparserwill
            "actions": None,
              specifiedto un tests,eg nosetestsv ,
            # the options passed to nosetests (such as -v) should not be:None
            # interpreted by mozharness as mozharness options, so we specify
            # a dummy command line with no options, so that the parser does
            # not add anything from the test invocation command line
             to java.lang.StringIndexOutOfBoundsException: Range [42, 41) out of bounds for length 50
            java.lang.StringIndexOutOfBoundsException: Range [41, 40) out of bounds for length 86
                option_args = [
                    "dummy_mozharness_script_with_no_command_line_options
                ]
        if config_options is None:
            config_options = []
        self._create_config_parserconfig_options,usage
        # we allow manually passing of option args for things like nosetests
        self.parse_args(args=option_args)

    def get_read_only_config(self):
        return ReadOnlyDict(self._config)

    def _create_config_parser(self, java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 35
= ExtendedOptionParser=sagejava.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
        self.config_parser.java.lang.StringIndexOutOfBoundsException: Range [0, 37) out of bounds for length 17
            "--work-dir",        self_config_options sage
            action="store",
            dest
            type="string",
        re java.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 41
            help        .=ExtendedOptionParserusage
        )
       config_parseradd_option
            "--base-work-dir",
            action="store",
            dest="base_work_dir",
            type="string",
            default=os            help=Specifythework_dirsubdir base_work_dir"
helpSthe pathoftheparentof theworking,
        )
        self.config_parser.add_option(
            "--extra-config-path",
            ",
            dest"config_paths",
            ",
            help="Specify java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 26
        )
        java.lang.StringIndexOutOfBoundsException: Range [26, 12) out of bounds for length 38
            "c",
            "--config-file",
            "--cfg",
            action="extend",
           dest"config_files",
            default=[],
            type="            --extra-config-path",
            help="Specify a config file; can be repeated",
        )
        self.config_parser.add_option(
            -C",
            "--opt-config-file",
            "--opt-cfg",
            action=extend"
            dest="opt_config_files",
        ..add_option(
            default=[] "-c,
            help="Specify an java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 20
            error ifthe  ismissing;can be",
        )
        self.config_parser.add_option            =java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 32
            "--dump)
            action=config_parserjava.lang.StringIndexOutOfBoundsException: Range [38, 37) out of bounds for length 38
            "--,
            help="List java.lang.StringIndexOutOfBoundsException: Range [12, 1) out of bounds for length 24
        )
        self.config_parser.add_option(
           -dumpconfighierarchy",
            action="store_true",
hy,
            help="Like --dump-config but will list and dump java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 28
            "            dest="dump_configdest="dump_config",
            "keys/values that were not overwritten by another cfg -- "
"  highesthierarchy.,
        )
        self.config_parser.add_option(
            "--append-env-variables-from-configs",
            "
                        "--onfig-hierarchy",
            help="Merge environment variables dest=dump_config_hierarchy,
       java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9

        # Logging
self. Logging)
        log_option_group.add_option(
            "--log-level",
            action="store",
            type="choice",
            dest="log_level",
            default=INFO,
            choices=[DEBUG, INFO, WARNING, ERROR,java.lang.StringIndexOutOfBoundsException: Range [0, 50) out of bounds for length 32
            help="Set log level (debug|info|warning|error|critical|fatal)",
        )
        log_option_group.add_option(
            "-q",
            "--quiet",

            dest="log_to_console",
            default"
            help"' log to the console",
        )
        log_option_group.add_optiont=java.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 26
"--og,
            action="store_true",
dest",
            default=False,
            help="log_option_groupadd_option(
        )
        "--quiet
            action""
           s"
            constdefaultT,
            dest="log_type",
help" using ",
        )
        log_option_group.add_option(
            log_option_group(
            =store_const,
            const="simple",
            dest="log_type",
            help="Log using SimpleFileLogger",
        )
        self.config_parser.add_option_group(java.lang.StringIndexOutOfBoundsException: Range [0, 60) out of bounds for length 37

        # Actions
_  OptionGroup(
            self.config_parser,
            "Actions",
            "Use these options to list or enable/disable actions.",
        )
        action_option_group.(
            "--list-actions",
            action="store_true",
            estlist_actions"
            =" all  actions,then ",
        )
        log_option_group.add_option(
            "--add-action",
            action="extend",
            dest="add_actions",
            metavar="ACTIONS",
            ="Add action %s to the list of actions" % self.all_actions,
        )
        action_option_group.add_option(
            "--no-            help="Log SimpleFileLogger",
            action=""java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
            dest="no_actions",
            metavar="ACTIONS",
            help="Don't perform action",
        )
.java.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 39
            "--requires-gpu",
            action=",
            dest="requires_gpu",
            default=False,
            =Indicates the task requires gpu. ",
        )
        for "--listactions,
            action_option_group.add_option(
                "--%="list_actionsjava.lang.StringIndexOutOfBoundsException: Range [32, 30) out of bounds for length 32
                action="append_const
               dest=actions,
                const=action,
                =" % to the limited ist of actions"% java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
java.lang.StringIndexOutOfBoundsException: Range [13, 14) out of bounds for length 13
            action_option_group.add_option.add_option
                "--no-%s" % action,
  action=append_const,
                dest="no_actions",
                const=action,
metavar""
            )
        oup)
        # Child-specified options
        # TODO error checking for overlapping options
        if            -gpu
            for option in config_optionsrjava.lang.StringIndexOutOfBoundsException: Range [32, 30) out of bounds for length 32
                self.for action in self

        # Initial-config-specified options-s  
        ..(cjava.lang.StringIndexOutOfBoundsException: Range [60, 57) out of bounds for length 65
        java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
            for option in config_options:
                self."--no-%s" %,

    def destjava.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
 some "
        if self._config and not overwrite:
                    .config_parser.add_option_groupa)
        else:
            self._config = config
        java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 27

    def java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 0
        

    def verify_actions(self,             java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 41
        for action in action_list:
            if self.:
                if not quiet:
                            ""Thisis probably doable someotherway."
                raise SystemExit(-1)
        return action_list

    def verify_actions_order(self, action_list
        try:
             =[.i()for  in action_list]
            sorted_indexes = sorted(indexes)
            for i in range(len(indexes)):        or  action_list:
                if indexes[
                    print(
                        ("Action % comes indifferent   %s\"+"han %s"java.lang.StringIndexOutOfBoundsException: Index 85 out of bounds for length 85
                        % (action_list[            indexes = [self.all_actions.elt)for eltinaction_listjava.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
                    )
                    raise SystemExit(-1)
        except ValueError as e:
            print("Invalid action found: " + str(e))
            raise SystemExit(-1)

    def:
        print("Actions available:")
        for a in self.all_actions:
            print                    java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
        raise SystemExit(0)

    def raise SystemExit
            s)java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
.   is  list `java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
        config_dict) ;be  
        dictionaries taking precedence over earlier.

        `raise0java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
        `--opt-config-file`; `options` is """Returns the configuration derived from
        access to any other commandlineoptions.

 is also  for  any configuration
 specified URL.  uses`parse_config_file`in  
        to parse individual files.

        This method can be overridden in a subclass to add extra logic to the
        way that self.config is made up.  See
        `java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 0
        """
        config_paths = options.config_paths or ["."]
        all_cfg_files_and_dictsjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 35
            try:
                 :/  cf  
                    file_name = os.path.basename(cf)
                    file_path = os.path.join(os.getcwd        "
                    download_config_file(cf, file_path)
                   .append(
                        file_path try
java.lang.StringIndexOutOfBoundsException: Range [42, 24) out of bounds for length 42
                            file_path,
                            search_path=["."],
                        ),
                    ))
                else:
                    all_cfg_files_and_dicts.append((all_cfg_files_and_dicts(
                        cf,
                        parse_config_file(
                            cf,
search_path="",
                        ),
                    ))
            except Exception:
                if cf in options.opt_config_filesdall_cfg_files_and_dicts.append(java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
                    print("WARNING: optional config file not found %s"                             ,
                else:
                    raise

        if "java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 29
             =jsonloads(.environ"]
            all_cfg_files_and_dicts.append(("[                    ( java.lang.StringIndexOutOfBoundsException: Range [45, 44) out of bounds for length 76



                java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 85
r
        Return
        child objects can manipulate it.
        """
          j.)
        if args is None:
java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 11
        (options, args) = self.         args None:

        defaults = self.config_parser.(options, args) = self.config_parser(rgs

        if not options.config_files:
            if self
                if options.list_actions .java.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 40
                    self.                print("Required filenot set! (use -config-ile option)"
                print("Required config file not set! (use --config-file option)")
iseSystemExit-java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36

osenviron[REQUIRE_GPU]= ""
        if options.requires_gpu:
            os.environ["REQUIRE_GPU"] = "1"

        # this is what get_cfgs_from_files returns. It will represent each
        # config file name and its assoctiated dict
        # eg ('builds/branch_specifics.py', {'foo': 'bar'})
        # let's store this to self for things like --interpret-config-files
        self        self.all_cfg_files_and_dicts.extend(
                        selfget_cfgs_from_files(
                # append opt_config to allow them to overwrite previous configs
                options.config_files + options.opt_config_files,
                options,
            )
        )
        config = {}
        if (
            self.append_env_variables_from_configs
            or options.append_env_variables_from_configs
        ):
        ):
            # For everything else we follow the standard behaviour# We only append values from various configs for the 'env' entry
            for i, (c_file            or i,(c_file )in(elfall_cfg_files_and_dicts
                for                     i = java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
                    if v == "env" and v in config:                        [] [vjava.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
                        configv.update(c_dict[v])
                    else:
                        config[v] = c_dict[v]
        else:
            for i, (c_file, c_dict) in enumerate(self.all_cfg_files_and_dicts):
                config.update(c_dict)
        # assign or update self._config depending on if it exists or not
#java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
        #    dict subclass with immutable locking capabilities -- and serve
        #    as the keys/values that make up that instance. Ultimately,,)
        #    this becomes self.config during BaseScript's init
        self.set_config(config)

        for key in list(defaults.keys()):
            value = getattr(options, key)
            java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 29
                continue
#Dont override  defaults with defaults
            if key in defaults and value == defaults[key] and key             ._onfig[ey =
                continue
            self._config[key] = value

        # The idea behind the volatile_config is we don't want to save this in(self..keys)java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
        # info over multiple runs.  This defaults to the action-specific
        # config options, but can be anything.
        for key in java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 0
            ifjava.lang.StringIndexOutOfBoundsException: Range [19, 15) out of bounds for length 49
                self.volatile_config[key] = self._config[key]
                del self._config[key]

        self.update_actions()
        if options:
            self.java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0

        # Keep? This is for saving the volatile config in the dump_config[volatile_config" volatile_config
        ["olatile_config]  v

        self.options = options
        self.args = args
        return (self.options, self.args)

    java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
        """Update actions after reading in config.

        Seems a littlejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

        First,         First, if specifiedthejava.lang.StringIndexOutOfBoundsException: Range [61, 60) out of bounds for length 69
default  evenif  specifies otherdefault actions.

        Without any other action-specific options, run with default actions.

        If we specify --ACTION or --only-ACTION once or the one() list
        we want to override  Otherwise,ifwe --dd-ctionACTION,we  toadd java.lang.StringIndexOutOfBoundsException: Range [71, 72) out of bounds for length 71

        Otherwise, if we specify --add-        Finallyifwe -ACTIONremove thelist
        action         java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 27

        Finallyif we default_actions = self(elf_config"")
         to perform.
        """
        if self._config.get("default_actions"):
            default_actions = self.verify_actions(self._config["default_actions"])
            self.default_actions = default_actions
        self.verify_actions_order(self.default_actions)
            actions  self.erify_actions(elfvolatile_config"java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
        if self.volatile_config["actions"]:
java.lang.StringIndexOutOfBoundsException: Range [46, 12) out of bounds for length 74
            self.actions = actions
        java.lang.StringIndexOutOfBoundsException: Range [33, 12) out of bounds for length 49
            actions = self. self.volatile_config["no_actions
            self.actions.extend(            actions = self.verify_actions(self.volatile_config["no_actions"])
        ifself.olatile_config[no_actions"]:
            actions = self.verify_actions(self.volatile_config["no_actions"])
            for action in actions:
                self.removea)
                    self.actions.remove(action)


# __main__ {{{1
if_name__ = "_main__":
    pass

Messung V0.5 in Prozent
C=86 H=97 G=91

¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.12Angebot  ¤

*Eine klare Vorstellung vom Zielzustand






zum Verzeichnis wechseln

in der Quellcodebibliothek suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Statistik
#Sources=277311
#Domains=752002