Server IP : 103.119.228.120 / Your IP : 3.131.13.196 Web Server : Apache System : Linux v8.techscape8.com 3.10.0-1160.119.1.el7.tuxcare.els2.x86_64 #1 SMP Mon Jul 15 12:09:18 UTC 2024 x86_64 User : nobody ( 99) PHP Version : 5.6.40 Disable Function : shell_exec,symlink,system,exec,proc_get_status,proc_nice,proc_terminate,define_syslog_variables,syslog,openlog,closelog,escapeshellcmd,passthru,ocinum cols,ini_alter,leak,listen,chgrp,apache_note,apache_setenv,debugger_on,debugger_off,ftp_exec,dl,dll,myshellexec,proc_open,socket_bind,proc_close,escapeshellarg,parse_ini_filepopen,fpassthru,exec,passthru,escapeshellarg,escapeshellcmd,proc_close,proc_open,ini_alter,popen,show_source,proc_nice,proc_terminate,proc_get_status,proc_close,pfsockopen,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setpgid,posix_setsid,posix_setuid,dl,symlink,shell_exec,system,dl,passthru,escapeshellarg,escapeshellcmd,myshellexec,c99_buff_prepare,c99_sess_put,fpassthru,getdisfunc,fx29exec,fx29exec2,is_windows,disp_freespace,fx29sh_getupdate,fx29_buff_prepare,fx29_sess_put,fx29shexit,fx29fsearch,fx29ftpbrutecheck,fx29sh_tools,fx29sh_about,milw0rm,imagez,sh_name,myshellexec,checkproxyhost,dosyayicek,c99_buff_prepare,c99_sess_put,c99getsource,c99sh_getupdate,c99fsearch,c99shexit,view_perms,posix_getpwuid,posix_getgrgid,posix_kill,parse_perms,parsesort,view_perms_color,set_encoder_input,ls_setcheckboxall,ls_reverse_all,rsg_read,rsg_glob,selfURL,dispsecinfo,unix2DosTime,addFile,system,get_users,view_size,DirFiles,DirFilesWide,DirPrintHTMLHeaders,GetFilesTotal,GetTitles,GetTimeTotal,GetMatchesCount,GetFileMatchesCount,GetResultFiles,fs_copy_dir,fs_copy_obj,fs_move_dir,fs_move_obj,fs_rmdir,SearchText,getmicrotime MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/lib/python2.7/site-packages/kitchen/versioning/ |
Upload File : |
# -*- coding: utf-8 -*- # # Copyright (c) 2011 Red Hat, Inc # # kitchen is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # kitchen is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with kitchen; if not, see <http://www.gnu.org/licenses/> # # Authors: # Toshio Kuratomi <toshio@fedoraproject.org> ''' ---------------------------- PEP-386 compliant versioning ---------------------------- :pep:`386` defines a standard format for version strings. This module contains a function for creating strings in that format. ''' __version_info__ = ((1, 0, 0),) import itertools def version_tuple_to_string(version_info): '''Return a :pep:`386` version string from a :pep:`386` style version tuple :arg version_info: Nested set of tuples that describes the version. See below for an example. :returns: a version string This function implements just enough of :pep:`386` to satisfy our needs. :pep:`386` defines a standard format for version strings and refers to a function that will be merged into the |stdlib|_ that transforms a tuple of version information into a standard version string. This function is an implementation of that function. Once that function becomes available in the |stdlib|_ we will start using it and deprecate this function. :attr:`version_info` takes the form that :pep:`386`'s :func:`NormalizedVersion.from_parts` uses:: ((Major, Minor, [Micros]), [(Alpha/Beta/rc marker, version)], [(post/dev marker, version)]) Ex: ((1, 0, 0), ('a', 2), ('dev', 3456)) It generates a :pep:`386` compliant version string:: N.N[.N]+[{a|b|c|rc}N[.N]+][.postN][.devN] Ex: 1.0.0a2.dev3456 .. warning:: This function does next to no error checking. It's up to the person defining the version tuple to make sure that the values make sense. If the :pep:`386` compliant version parser doesn't get released soon we'll look at making this function check that the version tuple makes sense before transforming it into a string. It's recommended that you use this function to keep a :data:`__version_info__` tuple and :data:`__version__` string in your modules. Why do we need both a tuple and a string? The string is often useful for putting into human readable locations like release announcements, version strings in tarballs, etc. Meanwhile the tuple is very easy for a computer to compare. For example, kitchen sets up its version information like this:: from kitchen.versioning import version_tuple_to_string __version_info__ = ((0, 2, 1),) __version__ = version_tuple_to_string(__version_info__) Other programs that depend on a kitchen version between 0.2.1 and 0.3.0 can find whether the present version is okay with code like this:: from kitchen import __version_info__, __version__ if __version_info__ < ((0, 2, 1),) or __version_info__ >= ((0, 3, 0),): print 'kitchen is present but not at the right version.' print 'We need at least version 0.2.1 and less than 0.3.0' print 'Currently found: kitchen-%s' % __version__ ''' ver_components = [] for values in version_info: if isinstance(values[0], int): ver_components.append('.'.join(itertools.imap(str, values))) else: if isinstance(values[0], unicode): modifier = values[0].encode('ascii') else: modifier = values[0] if modifier in ('a', 'b', 'c', 'rc'): ver_components.append('%s%s' % (modifier, '.'.join(itertools.imap(str, values[1:])) or '0')) else: ver_components.append('.%s%s' % (modifier, str(values[1]))) return unicode(''.join(ver_components), 'ascii') __version__ = version_tuple_to_string(__version_info__) __all__ = ('version_tuple_to_string',)