diff -Nru pycdio-2.0.0/cdio.py pycdio-2.1.0/cdio.py --- pycdio-2.0.0/cdio.py 2018-02-05 21:51:25.000000000 +0000 +++ pycdio-2.1.0/cdio.py 2019-08-25 11:37:10.000000000 +0000 @@ -1,4 +1,4 @@ -# Copyright (C) 2006, 2008-2009, 2013, 2018 Rocky Bernstein +# Copyright (C) 2006, 2008-2009, 2013, 2018-2019 Rocky Bernstein # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -19,81 +19,111 @@ import pycdio import _pycdio +import sys import types +PYTHON2 = sys.version_info[0] <= 2 +OVER_PYTHON_25 = sys.version_info[0:1] >= (2, 5) + + class DeviceException(Exception): """General device or driver exceptions""" -class DriverError(DeviceException): pass -class DriverUnsupportedError(DeviceException): pass -class DriverUninitError(DeviceException): pass -class DriverNotPermittedError(DeviceException): pass -class DriverBadParameterError(DeviceException): pass -class DriverBadPointerError(DeviceException): pass -class NoDriverError(DeviceException): pass - -class TrackError(DeviceException): pass - -pycdio.CDTEXT_FIELD_ARRANGER = _pycdio.CDTEXT_ARRANGER -pycdio.CDTEXT_FIELD_COMPOSER = _pycdio.CDTEXT_COMPOSER -pycdio.CDTEXT_FIELD_DISCID = _pycdio.CDTEXT_DISCID -pycdio.CDTEXT_FIELD_MESSAGE = _pycdio.CDTEXT_MESSAGE + +class DriverError(DeviceException): + pass + + +class DriverUnsupportedError(DeviceException): + pass + + +class DriverUninitError(DeviceException): + pass + + +class DriverNotPermittedError(DeviceException): + pass + + +class DriverBadParameterError(DeviceException): + pass + + +class DriverBadPointerError(DeviceException): + pass + + +class NoDriverError(DeviceException): + pass + + +class TrackError(DeviceException): + pass + + +pycdio.CDTEXT_FIELD_ARRANGER = _pycdio.CDTEXT_ARRANGER +pycdio.CDTEXT_FIELD_COMPOSER = _pycdio.CDTEXT_COMPOSER +pycdio.CDTEXT_FIELD_DISCID = _pycdio.CDTEXT_DISCID +pycdio.CDTEXT_FIELD_MESSAGE = _pycdio.CDTEXT_MESSAGE pycdio.CDTEXT_FIELD_PERFORMER = _pycdio.CDTEXT_PERFORMER -pycdio.CDTEXT_FIELD_ISRC = _pycdio.CDTEXT_PERFORMER +pycdio.CDTEXT_FIELD_ISRC = _pycdio.CDTEXT_PERFORMER # Note: the keys below match those the names returned by # cdio_get_driver_name() drivers = { - 'Unknown' : pycdio.DRIVER_UNKNOWN, - 'AIX' : pycdio.DRIVER_AIX, - 'FreeBSD' : pycdio.DRIVER_FREEBSD, - 'GNU/Linux': pycdio.DRIVER_LINUX, - 'linux' : pycdio.DRIVER_LINUX, - 'Solaris' : pycdio.DRIVER_SOLARIS, - 'OS X' : pycdio.DRIVER_OSX, - 'osx' : pycdio.DRIVER_OSX, - 'WIN32' : pycdio.DRIVER_WIN32, - 'CDRDAO' : pycdio.DRIVER_CDRDAO, - 'BIN/CUE' : pycdio.DRIVER_BINCUE, - 'NRG' : pycdio.DRIVER_NRG, - 'Nero' : pycdio.DRIVER_NRG, - 'device' : pycdio.DRIVER_DEVICE - } + "Unknown": pycdio.DRIVER_UNKNOWN, + "AIX": pycdio.DRIVER_AIX, + "FreeBSD": pycdio.DRIVER_FREEBSD, + "GNU/Linux": pycdio.DRIVER_LINUX, + "linux": pycdio.DRIVER_LINUX, + "Solaris": pycdio.DRIVER_SOLARIS, + "OS X": pycdio.DRIVER_OSX, + "osx": pycdio.DRIVER_OSX, + "WIN32": pycdio.DRIVER_WIN32, + "CDRDAO": pycdio.DRIVER_CDRDAO, + "BIN/CUE": pycdio.DRIVER_BINCUE, + "NRG": pycdio.DRIVER_NRG, + "Nero": pycdio.DRIVER_NRG, + "device": pycdio.DRIVER_DEVICE, +} if pycdio.VERSION_NUM >= 82: - drivers['NetBSD'] = pycdio.DRIVER_NETBSD + drivers["NetBSD"] = pycdio.DRIVER_NETBSD for name in list(drivers.keys()): drivers[name.lower()] = drivers[name] read_mode2blocksize = { pycdio.READ_MODE_AUDIO: pycdio.CD_FRAMESIZE_RAW, - pycdio.READ_MODE_M1F1: pycdio.M2RAW_SECTOR_SIZE, - pycdio.READ_MODE_M1F2: pycdio.CD_FRAMESIZE, - pycdio.READ_MODE_M2F1: pycdio.M2RAW_SECTOR_SIZE, - pycdio.READ_MODE_M2F2: pycdio.CD_FRAMESIZE - } + pycdio.READ_MODE_M1F1: pycdio.M2RAW_SECTOR_SIZE, + pycdio.READ_MODE_M1F2: pycdio.CD_FRAMESIZE, + pycdio.READ_MODE_M2F1: pycdio.M2RAW_SECTOR_SIZE, + pycdio.READ_MODE_M2F2: pycdio.CD_FRAMESIZE, +} + def __possibly_raise_exception__(drc, msg=None): """Raise a Driver Error exception on error as determined by drc""" - if drc==pycdio.DRIVER_OP_SUCCESS: + if drc == pycdio.DRIVER_OP_SUCCESS: return - if drc==pycdio.DRIVER_OP_ERROR: + if drc == pycdio.DRIVER_OP_ERROR: raise DriverError - if drc==pycdio.DRIVER_OP_UNINIT: + if drc == pycdio.DRIVER_OP_UNINIT: raise DriverUninitError - if drc==pycdio.DRIVER_OP_UNSUPPORTED: + if drc == pycdio.DRIVER_OP_UNSUPPORTED: raise DriverUnsupportedError - if drc==pycdio.DRIVER_OP_NOT_PERMITTED: + if drc == pycdio.DRIVER_OP_NOT_PERMITTED: raise DriverUnsupportedError - if drc==pycdio.DRIVER_OP_BAD_PARAMETER: + if drc == pycdio.DRIVER_OP_BAD_PARAMETER: raise DriverBadParameterError - if drc==pycdio.DRIVER_OP_BAD_POINTER: + if drc == pycdio.DRIVER_OP_BAD_POINTER: raise DriverBadPointerError - if drc==pycdio.DRIVER_OP_NO_DRIVER: + if drc == pycdio.DRIVER_OP_NO_DRIVER: raise NoDriverError - raise DeviceException('unknown exception %d' % drc) + raise DeviceException("unknown exception %d" % drc) + def close_tray(drive=None, driver_id=pycdio.DRIVER_UNKNOWN): """close_tray(drive=None, driver_id=DRIVER_UNKNOWN) -> driver_id @@ -104,6 +134,7 @@ __possibly_raise_exception__(drc) return found_driver_id + def get_default_device_driver(driver_id=pycdio.DRIVER_DEVICE): """get_default_device_driver(self, driver_id=pycdio.DRIVER_DEVICE) ->[device, driver] @@ -115,10 +146,11 @@ None is returned as the device if we couldn't get a default device.""" result = pycdio.get_default_device_driver(driver_id) - if type(result) == type([1,2]): + if type(result) == type([1, 2]): return result return None + def get_devices(driver_id=pycdio.DRIVER_UNKNOWN): """ get_devices(driver_id)->[device1, device2, ...] @@ -126,11 +158,12 @@ Get an list of device names. """ result = pycdio.get_devices(driver_id) - if type(result) == bytes: + if OVER_PYTHON_25 and type(result) == bytes: return [result] else: return result + def get_devices_ret(driver_id=pycdio.DRIVER_UNKNOWN): """ get_devices_ret(driver_id)->[device1, device2, ... driver_id] @@ -144,6 +177,7 @@ """ return pycdio.get_devices_ret(driver_id) + def get_devices_with_cap(capabilities, any=False): """ get_devices_with_cap(capabilities, any=False)->[device1, device2...] @@ -164,6 +198,7 @@ """ return pycdio.get_devices_with_cap(capabilities, any) + def get_devices_with_cap_ret(capabilities, any=False): """ get_devices_with_cap(capabilities, any=False) @@ -176,21 +211,30 @@ """ return pycdio.get_devices_with_cap_ret(capabilities, any) + def have_driver(driver_id): """ have_driver(driver_id) -> bool Return True if we have driver driver_id. """ - if isinstance(driver_id, long) or isinstance(driver_id, int): + if OVER_PYTHON_25: + check_types = (bytes, str) + else: + check_types = (str,) + + if isinstance(driver_id, int) or (PYTHON2 and isinstance(driver_id, long)): return pycdio.have_driver(driver_id) - elif type(driver_id)==bytes and driver_id in drivers: + elif type(driver_id) in check_types and driver_id in drivers: ret = pycdio.have_driver(drivers[driver_id]) - if ret == 0: return False - if ret == 1: return True - raise ValueError('internal error: driver id came back %d' % ret) + if ret == 0: + return False + if ret == 1: + return True + raise ValueError("internal error: driver id came back %d" % ret) else: - raise ValueError('need either a number or string driver id') + raise ValueError("need either a number or string driver id") + def is_binfile(binfile_name): """ @@ -204,6 +248,7 @@ """ return pycdio.is_binfile(binfile_name) + def is_cuefile(cuefile_name): """ is_cuefile(cuefile_name)->bin_name @@ -216,14 +261,17 @@ """ return pycdio.is_cuefile(cuefile_name) + def is_device(source, driver_id=pycdio.DRIVER_UNKNOWN): """ is_device(source, driver_id=pycdio.DRIVER_UNKNOWN)->bool Return True if source refers to a real hardware CD-ROM. """ - if driver_id is None: driver_id=pycdio.DRIVER_UNKNOWN + if driver_id is None: + driver_id = pycdio.DRIVER_UNKNOWN return pycdio.is_device(source, driver_id) + def is_nrg(nrgfile_name): """ is_nrg(nrgfile_name)->bool @@ -232,6 +280,7 @@ """ return pycdio.is_nrg(nrgfile_name) + def is_tocfile(tocfile_name): """ is_tocfile(tocfile_name)->bool @@ -240,101 +289,104 @@ """ return pycdio.is_tocfile(tocfile_name) + def convert_drive_cap_misc(bitmask): """Convert bit mask for miscellaneous drive properties into a dictionary of drive capabilities""" - result={} + result = {} if bitmask & pycdio.DRIVE_CAP_ERROR: - result['DRIVE_CAP_ERROR'] = True + result["DRIVE_CAP_ERROR"] = True if bitmask & pycdio.DRIVE_CAP_UNKNOWN: - result['DRIVE_CAP_UNKNOWN'] = True + result["DRIVE_CAP_UNKNOWN"] = True if bitmask & pycdio.DRIVE_CAP_MISC_CLOSE_TRAY: - result['DRIVE_CAP_MISC_CLOSE_TRAY'] = True + result["DRIVE_CAP_MISC_CLOSE_TRAY"] = True if bitmask & pycdio.DRIVE_CAP_MISC_EJECT: - result['DRIVE_CAP_MISC_EJECT'] = True + result["DRIVE_CAP_MISC_EJECT"] = True if bitmask & pycdio.DRIVE_CAP_MISC_LOCK: - result['DRIVE_CAP_MISC_LOCK'] = True + result["DRIVE_CAP_MISC_LOCK"] = True if bitmask & pycdio.DRIVE_CAP_MISC_SELECT_SPEED: - result['DRIVE_CAP_MISC_SELECT_SPEED'] = True + result["DRIVE_CAP_MISC_SELECT_SPEED"] = True if bitmask & pycdio.DRIVE_CAP_MISC_SELECT_DISC: - result['DRIVE_CAP_MISC_SELECT_DISC'] = True + result["DRIVE_CAP_MISC_SELECT_DISC"] = True if bitmask & pycdio.DRIVE_CAP_MISC_MULTI_SESSION: - result['DRIVE_CAP_MISC_MULTI_SESSION'] = True + result["DRIVE_CAP_MISC_MULTI_SESSION"] = True if bitmask & pycdio.DRIVE_CAP_MISC_MEDIA_CHANGED: - result['DRIVE_CAP_MISC_MEDIA_CHANGED'] = True + result["DRIVE_CAP_MISC_MEDIA_CHANGED"] = True if bitmask & pycdio.DRIVE_CAP_MISC_RESET: - result['DRIVE_CAP_MISC_RESET'] = True + result["DRIVE_CAP_MISC_RESET"] = True if bitmask & pycdio.DRIVE_CAP_MISC_FILE: - result['DRIVE_CAP_MISC_FILE'] = True + result["DRIVE_CAP_MISC_FILE"] = True return result + def convert_drive_cap_read(bitmask): """Convert bit mask for drive read properties into a dictionary of drive capabilities""" - result={} + result = {} if bitmask & pycdio.DRIVE_CAP_READ_AUDIO: - result['DRIVE_CAP_READ_AUDIO'] = True + result["DRIVE_CAP_READ_AUDIO"] = True if bitmask & pycdio.DRIVE_CAP_READ_CD_DA: - result['DRIVE_CAP_READ_CD_DA'] = True + result["DRIVE_CAP_READ_CD_DA"] = True if bitmask & pycdio.DRIVE_CAP_READ_CD_G: - result['DRIVE_CAP_READ_CD_G'] = True + result["DRIVE_CAP_READ_CD_G"] = True if bitmask & pycdio.DRIVE_CAP_READ_CD_R: - result['DRIVE_CAP_READ_CD_R'] = True + result["DRIVE_CAP_READ_CD_R"] = True if bitmask & pycdio.DRIVE_CAP_READ_CD_RW: - result['DRIVE_CAP_READ_CD_RW'] = True + result["DRIVE_CAP_READ_CD_RW"] = True if bitmask & pycdio.DRIVE_CAP_READ_DVD_R: - result['DRIVE_CAP_READ_DVD_R'] = True + result["DRIVE_CAP_READ_DVD_R"] = True if bitmask & pycdio.DRIVE_CAP_READ_DVD_PR: - result['DRIVE_CAP_READ_DVD_PR'] = True + result["DRIVE_CAP_READ_DVD_PR"] = True if bitmask & pycdio.DRIVE_CAP_READ_DVD_RAM: - result['DRIVE_CAP_READ_DVD_RAM'] = True + result["DRIVE_CAP_READ_DVD_RAM"] = True if bitmask & pycdio.DRIVE_CAP_READ_DVD_ROM: - result['DRIVE_CAP_READ_DVD_ROM'] = True + result["DRIVE_CAP_READ_DVD_ROM"] = True if bitmask & pycdio.DRIVE_CAP_READ_DVD_RW: - result['DRIVE_CAP_READ_DVD_RW'] = True + result["DRIVE_CAP_READ_DVD_RW"] = True if bitmask & pycdio.DRIVE_CAP_READ_DVD_RPW: - result['DRIVE_CAP_READ_DVD_RPW'] = True + result["DRIVE_CAP_READ_DVD_RPW"] = True if bitmask & pycdio.DRIVE_CAP_READ_C2_ERRS: - result['DRIVE_CAP_READ_C2_ERRS'] = True + result["DRIVE_CAP_READ_C2_ERRS"] = True if bitmask & pycdio.DRIVE_CAP_READ_MODE2_FORM1: - result['DRIVE_CAP_READ_MODE2_FORM1'] = True + result["DRIVE_CAP_READ_MODE2_FORM1"] = True if bitmask & pycdio.DRIVE_CAP_READ_MODE2_FORM2: - result['DRIVE_CAP_READ_MODE2_FORM2'] = True + result["DRIVE_CAP_READ_MODE2_FORM2"] = True if bitmask & pycdio.DRIVE_CAP_READ_MCN: - result['DRIVE_CAP_READ_MCN'] = True + result["DRIVE_CAP_READ_MCN"] = True if bitmask & pycdio.DRIVE_CAP_READ_ISRC: - result['DRIVE_CAP_READ_ISRC'] = True + result["DRIVE_CAP_READ_ISRC"] = True return result + def convert_drive_cap_write(bitmask): """Convert bit mask for drive write properties into a dictionary of drive capabilities""" - result={} + result = {} if bitmask & pycdio.DRIVE_CAP_WRITE_CD_R: - result['DRIVE_CAP_WRITE_CD_R'] = True + result["DRIVE_CAP_WRITE_CD_R"] = True if bitmask & pycdio.DRIVE_CAP_WRITE_CD_RW: - result['DRIVE_CAP_WRITE_CD_RW'] = True + result["DRIVE_CAP_WRITE_CD_RW"] = True if bitmask & pycdio.DRIVE_CAP_WRITE_DVD_R: - result['DRIVE_CAP_WRITE_DVD_R'] = True + result["DRIVE_CAP_WRITE_DVD_R"] = True if bitmask & pycdio.DRIVE_CAP_WRITE_DVD_PR: - result['DRIVE_CAP_WRITE_DVD_PR'] = True + result["DRIVE_CAP_WRITE_DVD_PR"] = True if bitmask & pycdio.DRIVE_CAP_WRITE_DVD_RAM: - result['DRIVE_CAP_WRITE_DVD_RAM'] = True + result["DRIVE_CAP_WRITE_DVD_RAM"] = True if bitmask & pycdio.DRIVE_CAP_WRITE_DVD_RW: - result['DRIVE_CAP_WRITE_DVD_RW'] = True + result["DRIVE_CAP_WRITE_DVD_RW"] = True if bitmask & pycdio.DRIVE_CAP_WRITE_DVD_RPW: - result['DRIVE_CAP_WRITE_DVD_RPW'] = True + result["DRIVE_CAP_WRITE_DVD_RPW"] = True if bitmask & pycdio.DRIVE_CAP_WRITE_MT_RAINIER: - result['DRIVE_CAP_WRITE_MT_RAINIER'] = True + result["DRIVE_CAP_WRITE_MT_RAINIER"] = True if bitmask & pycdio.DRIVE_CAP_WRITE_BURN_PROOF: - result['DRIVE_CAP_WRITE_BURN_PROOF'] = True + result["DRIVE_CAP_WRITE_BURN_PROOF"] = True return result + class Device: """CD Input and control class for discs/devices""" - def __init__(self, source=None, driver_id=None, - access_mode=None): + def __init__(self, source=None, driver_id=None, access_mode=None): self.cd = None if source is not None or driver_id is not None: self.open(source, driver_id, access_mode) @@ -345,7 +397,7 @@ Pause playing CD through analog output. A DeviceError exception may be raised. """ - drc=pycdio.audio_pause(self.cd) + drc = pycdio.audio_pause(self.cd) __possibly_raise_exception__(drc) def audio_play_lsn(self, start_lsn, end_lsn): @@ -355,7 +407,7 @@ Playing CD through analog output at the given lsn to the ending lsn A DeviceError exception may be raised. """ - drc=pycdio.audio_play_lsn(self.cd, start_lsn, end_lsn) + drc = pycdio.audio_play_lsn(self.cd, start_lsn, end_lsn) __possibly_raise_exception__(drc) def audio_resume(self): @@ -364,7 +416,7 @@ Resume playing an audio CD through the analog interface. A DeviceError exception may be raised. """ - drc=pycdio.audio_resume(self.cd) + drc = pycdio.audio_resume(self.cd) __possibly_raise_exception__(drc) def audio_stop(self): @@ -373,7 +425,7 @@ Stop playing an audio CD through the analog interface. A DeviceError exception may be raised. """ - drc=pycdio.audio_stop(self.cd) + drc = pycdio.audio_stop(self.cd) __possibly_raise_exception__(drc) def close(self): @@ -385,14 +437,14 @@ pycdio.close(self.cd) else: print("***No object to close") - self.cd=None + self.cd = None def eject_media(self): """eject_media(self) Eject media in CD drive if there is a routine to do so. A DeviceError exception may be raised. """ - drc=pycdio.eject_media(self.cd) + drc = pycdio.eject_media(self.cd) self.cd = None __possibly_raise_exception__(drc) @@ -410,6 +462,7 @@ return pycdio.get_arg(self.cd, key) if pycdio.VERSION_NUM > 83: + def get_cdtext(self): return CDText(pycdio.get_cdtext(self.cd)) @@ -434,7 +487,7 @@ """ lsn = pycdio.get_disc_last_lsn(self.cd) if lsn == pycdio.INVALID_LSN: - raise DriverError('Invalid LSN returned') + raise DriverError("Invalid LSN returned") return lsn def get_disc_mode(self): @@ -467,17 +520,20 @@ hardware CD-ROM.""" b_read_cap, b_write_cap, b_misc_cap = pycdio.get_drive_cap(self.cd) - return (convert_drive_cap_read(b_read_cap), \ - convert_drive_cap_write(b_write_cap), \ - convert_drive_cap_misc(b_misc_cap)) + return ( + convert_drive_cap_read(b_read_cap), + convert_drive_cap_write(b_write_cap), + convert_drive_cap_misc(b_misc_cap), + ) ### FIXME: combine into above by testing on the type of device. def get_drive_cap_dev(self, device=None): - b_read_cap, b_write_cap, b_misc_cap = \ - pycdio.get_drive_cap_dev(device) - return (convert_drive_cap_read(b_read_cap), \ - convert_drive_cap_write(b_write_cap), \ - convert_drive_cap_misc(b_misc_cap)) + b_read_cap, b_write_cap, b_misc_cap = pycdio.get_drive_cap_dev(device) + return ( + convert_drive_cap_read(b_read_cap), + convert_drive_cap_write(b_write_cap), + convert_drive_cap_misc(b_misc_cap), + ) def get_driver_name(self): """ @@ -565,10 +621,12 @@ Error is given on error. """ drc = pycdio.get_media_changed(self.cd) - if drc == 0: return False - if drc == 1: return True + if drc == 0: + return False + if drc == 1: + return True __possibly_raise_exception__(drc) - raise DeviceException('Unknown return value %d' % drc) + raise DeviceException("Unknown return value %d" % drc) def get_num_tracks(self): """ @@ -579,7 +637,7 @@ """ track = pycdio.get_num_tracks(self.cd) if track == pycdio.INVALID_TRACK: - raise TrackError('Invalid track returned') + raise TrackError("Invalid track returned") return track def get_track(self, track_num): @@ -626,8 +684,7 @@ """ return pycdio.lseek(self.cd, offset, whence) - def open(self, source=None, driver_id=pycdio.DRIVER_UNKNOWN, - access_mode=None): + def open(self, source=None, driver_id=pycdio.DRIVER_UNKNOWN, access_mode=None): """ open(self, source=None, driver_id=pycdio.DRIVER_UNKNOWN, access_mode=None) @@ -644,7 +701,8 @@ Device is opened so that subsequent operations can be performed. """ - if driver_id is None: driver_id=pycdio.DRIVER_UNKNOWN + if driver_id is None: + driver_id = pycdio.DRIVER_UNKNOWN if self.cd is not None: self.close() self.cd = pycdio.open_cd(source, driver_id, access_mode) @@ -672,11 +730,10 @@ lsn is sector to read, bytes is the number of bytes. A DeviceError exception may be raised. """ - size = pycdio.ISO_BLOCKSIZE*blocks - size, data = pycdio.read_data_bytes(self.cd, size, lsn, - pycdio.ISO_BLOCKSIZE) + size = pycdio.ISO_BLOCKSIZE * blocks + size, data = pycdio.read_data_bytes(self.cd, size, lsn, pycdio.ISO_BLOCKSIZE) if size < 0: - __possibly_raise_exception__(size) + __possibly_raise_exception__(size) return [size, data] def read_sectors(self, lsn, read_mode, blocks=1): @@ -706,7 +763,7 @@ blocksize = read_mode2blocksize[read_mode] size = blocks * blocksize except KeyError: - raise DriverBadParameterError ('Bad read mode %d' % read_mode) + raise DriverBadParameterError("Bad read mode %d" % read_mode) size, data = pycdio.read_sectors(self.cd, size, lsn, read_mode) if size < 0: __possibly_raise_exception__(size) @@ -727,21 +784,22 @@ drc = pycdio.set_speed(self.cd, speed) __possibly_raise_exception__(drc) + class Track: """CD Input and control track class""" def __init__(self, device, track_num): if type(track_num) != int: - raise TrackError('track number parameter is not an integer') + raise TrackError("track number parameter is not an integer") self.track = track_num # See if the device parameter is a string or # a device object. - if type(device) == bytes: + if OVER_PYTHON_25 and type(device) == bytes: self.device = Device(device) else: - test_device=Device() + test_device = Device() ## FIXME: would like a way to test if device ## is a PySwigObject self.device = device @@ -792,7 +850,7 @@ """ lsn = pycdio.get_track_last_lsn(self.device, self.track) if lsn == pycdio.INVALID_LSN: - raise TrackError('Invalid LSN returned') + raise TrackError("Invalid LSN returned") return lsn def get_lba(self): @@ -804,7 +862,7 @@ """ lba = pycdio.get_track_lba(self.device, self.track) if lba == pycdio.INVALID_LBA: - raise TrackError('Invalid LBA returned') + raise TrackError("Invalid LBA returned") return lba def get_lsn(self): @@ -816,7 +874,7 @@ """ lsn = pycdio.get_track_lsn(self.device, self.track) if lsn == pycdio.INVALID_LSN: - raise TrackError('Invalid LSN returned') + raise TrackError("Invalid LSN returned") return lsn def get_msf(self): @@ -841,13 +899,13 @@ """ rc = pycdio.get_track_preemphasis(self.device, self.track) if rc == pycdio.TRACK_FLAG_FALSE: - return 'none' + return "none" elif rc == pycdio.TRACK_FLAG_TRUE: - return 'preemphasis' + return "preemphasis" elif rc == pycdio.TRACK_FLAG_UNKNOWN: - return 'unknown' + return "unknown" else: - raise TrackError('Invalid return value %d' % rc) + raise TrackError("Invalid return value %d" % rc) def get_track_sec_count(self): """ @@ -885,14 +943,17 @@ self.track = track_num if pycdio.VERSION_NUM <= 83: + def get_cdtext(self): return CDText(pycdio.get_cdtext(self.device, self.track)) + class CDText: def __init__(self, opaque): self._cdtext = opaque if pycdio.VERSION_NUM <= 83: + def get(self, key): """ get(self, key)->string @@ -901,7 +962,6 @@ """ return pycdio.cdtext_get(key, self._cdtext) - def set(self, key, string): """ set(self, key, string)->None @@ -909,7 +969,9 @@ Set the value associatied with key. """ return pycdio.cdtext_set(key, string, self._cdtext) + else: + def get(self, key, track): """ get(self, key, track)->string @@ -918,6 +980,7 @@ """ return pycdio.cdtext_get(self._cdtext, key, track) + # # Local variables: # mode: Python diff -Nru pycdio-2.0.0/debian/changelog pycdio-2.1.0/debian/changelog --- pycdio-2.0.0/debian/changelog 2020-01-25 04:38:20.000000000 +0000 +++ pycdio-2.1.0/debian/changelog 2020-02-04 19:35:13.000000000 +0000 @@ -1,8 +1,11 @@ -pycdio (2.0.0-1build1) focal; urgency=medium +pycdio (2.1.0-1) unstable; urgency=medium - * No-change rebuild to build with python3.8. + * New upstream release. + * source/options: Extend diff-ignore. + * control: Correct python dev dependency. (Closes: #950640) + * control: Use debhelper-compat. - -- Matthias Klose Sat, 25 Jan 2020 04:38:20 +0000 + -- Timo Aaltonen Tue, 04 Feb 2020 21:35:13 +0200 pycdio (2.0.0-1) unstable; urgency=low diff -Nru pycdio-2.0.0/debian/compat pycdio-2.1.0/debian/compat --- pycdio-2.0.0/debian/compat 2019-08-07 07:05:04.000000000 +0000 +++ pycdio-2.1.0/debian/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -12 diff -Nru pycdio-2.0.0/debian/control pycdio-2.1.0/debian/control --- pycdio-2.0.0/debian/control 2019-08-07 07:54:23.000000000 +0000 +++ pycdio-2.1.0/debian/control 2020-02-04 19:34:55.000000000 +0000 @@ -3,17 +3,12 @@ Section: python Priority: optional Build-Depends: - debhelper (>= 12), + debhelper-compat (= 12), dh-python, libcdio-dev, libiso9660-dev, pkg-config, -# python-all, -# python-dev, -# python-nose, -# python-setuptools, - python3-all, - python3-dev, + python3-all-dev, python3-nose, python3-setuptools, swig, @@ -22,15 +17,6 @@ Vcs-Git: https://salsa.debian.org/debian/pycdio.git Vcs-Browser: https://salsa.debian.org/debian/pycdio -#Package: python-cdio -#Architecture: any -#Depends: ${misc:Depends}, ${python:Depends}, ${shlibs:Depends} -#Description: Python interface to libcdio optical media control library -# pycdio is a Python interface to the CD Input and Control library -# (libcdio). -# . -# This package includes the python2 version. - Package: python3-cdio Architecture: any Depends: ${misc:Depends}, ${python3:Depends}, ${shlibs:Depends} diff -Nru pycdio-2.0.0/debian/rules pycdio-2.1.0/debian/rules --- pycdio-2.0.0/debian/rules 2019-08-07 07:46:26.000000000 +0000 +++ pycdio-2.1.0/debian/rules 2020-02-04 19:23:08.000000000 +0000 @@ -2,7 +2,6 @@ export PYBUILD_NAME=cdio %: -# dh $@ --with python2,python3 --buildsystem=pybuild --builddirectory=build dh $@ --with python3 --buildsystem=pybuild --builddirectory=build override_dh_auto_install: diff -Nru pycdio-2.0.0/debian/source/options pycdio-2.1.0/debian/source/options --- pycdio-2.0.0/debian/source/options 2019-08-07 07:45:54.000000000 +0000 +++ pycdio-2.1.0/debian/source/options 2020-02-04 19:27:21.000000000 +0000 @@ -1 +1,2 @@ extend-diff-ignore = "NEWS|__init__.py|admin-tools/how-to-make-a-release.md|example/Makefile|git2authors.txt|setup.cfg" +extend-diff-ignore = "admin-tools|requirements-dev.txt" diff -Nru pycdio-2.0.0/Makefile pycdio-2.1.0/Makefile --- pycdio-2.0.0/Makefile 2013-09-06 07:11:26.000000000 +0000 +++ pycdio-2.1.0/Makefile 2019-08-25 11:36:24.000000000 +0000 @@ -17,7 +17,7 @@ #: Remove OS- and platform-specific derived files. clean: - $(PYTHON) ./setup.py clean --all + $(PYTHON) ./setup.py clean --all && rm -f *.so || /bin/true #: Create source and binary distribution dist: diff -Nru pycdio-2.0.0/MANIFEST.in pycdio-2.1.0/MANIFEST.in --- pycdio-2.0.0/MANIFEST.in 2018-02-06 00:36:19.000000000 +0000 +++ pycdio-2.1.0/MANIFEST.in 2019-08-25 08:36:54.000000000 +0000 @@ -3,7 +3,7 @@ include COPYING include ChangeLog include Makefile -include NEWS +include NEWS.md include THANKS include VERSION.py include __pkginfo__.py diff -Nru pycdio-2.0.0/NEWS pycdio-2.1.0/NEWS --- pycdio-2.0.0/NEWS 2018-02-05 21:51:25.000000000 +0000 +++ pycdio-2.1.0/NEWS 1970-01-01 00:00:00.000000000 +0000 @@ -1,78 +0,0 @@ -2.0.0 -2018-01-?? - -- Update to libcdio 2.0.0 API -- remove old compability code before 2.0.0 - We no longer support obsolte CD-Text interface -- Update Python packaging info - -0.20 -2013-09-6 -- Bug fixes and update README.txt - -0.19 -2013-02-16 -- Bug fixes for libcdio =< 0.82 versus libcdio >= 0.90 -- Make this work on Python3 - -0.18 -2013-01-07 -- Adjust for libcdio 0.90 - -0.17 -2010-10-27 -- Minor instruction and bug fixes - -0.16 -2009-10-27 Halala ngosuku lokuzalwa -- Remove shbang from cdio.py and ios9660.py which helps Fedora packaging -- Off-by-one compensation in get_devices_* not needed anymore - -0.15 -2009-05-18 -- Add Access to CDText thanks to Thomas Vander Stichele - -0.14 -2008-12-10 - -- Make more setuptools and distutils friendly. Small cleanups. - -0.13 -2007-10-27 - -- Small bugfix - -0.12 -2006-12-10 - -- Add get_msg() - -- Add pathname_isofy() in iso9660.py - -- Correct bugs in SWIG pathname_isofy() and close_tray() - -- Correct bug in get_devices when there was only one device. - -0.11 -2006-03-27 - -- Add ISO 9660 library - * add example programs to extract a file from an ISO fileystem - * add regression tsets - -- Changes to make building outside of source tree (e.g. "make - distcheck") work - -- Include SWIG-derived files. In theory you don't need SWIG installed - any more (although you do need a C compiler and libcdio installed). - -- Remove bug in is_device() - -- Fixes for Solaris and cygwin builds (compilation/linking flags) - -- Minor SWIG changes to be more precise. - -0.10 -2006-01-30 - -Initial Python wrapper diff -Nru pycdio-2.0.0/NEWS.md pycdio-2.1.0/NEWS.md --- pycdio-2.0.0/NEWS.md 1970-01-01 00:00:00.000000000 +0000 +++ pycdio-2.1.0/NEWS.md 2019-08-25 09:42:25.000000000 +0000 @@ -0,0 +1,82 @@ +2.0.1 2019-08-25 +--------------- + +- Python 3 tolerance +- move to github + +2.0.0 2018-02-5 +--------------- + +- Update to libcdio 2.0.0 API +- remove old compability code before 2.0.0 + We no longer support obsolte CD-Text interface +- Update Python packaging info + +0.20 2013-09-6 +-------------- + +- Bug fixes and update README.txt + +0.19 2013-02-16 +--------------- + +- Bug fixes for libcdio =< 0.82 versus libcdio >= 0.90 +- Make this work on Python3 + +0.18 2013-01-07 +---------------- + +- Adjust for libcdio 0.90 + +0.17 2010-10-27 +--------------- + +- Minor instruction and bug fixes + +0.16 2009-10-27 Halala ngosuku lokuzalwa +---------------------------------------- + +- Remove shbang from cdio.py and ios9660.py which helps Fedora packaging +- Off-by-one compensation in get_devices_* not needed anymore + +0.15 2009-05-18 +--------------- + +- Add Access to CDText thanks to Thomas Vander Stichele + +0.14 2008-12-10 +--------------- + +- Make more setuptools and distutils friendly. Small cleanups. + +0.13 2007-10-27 +--------------- + +- Small bugfix + +0.12 2006-12-10 +--------------- + +- Add get_msg() +- Add pathname_isofy() in iso9660.py +- Correct bugs in SWIG pathname_isofy() and close_tray() +- Correct bug in get_devices when there was only one device. + +0.11 2006-03-27 +--------------- + +- Add ISO 9660 library: + * add example programs to extract a file from an ISO fileystem + * add regression tsets +- Changes to make building outside of source tree (e.g. "make + distcheck") work +- Include SWIG-derived files. In theory you don't need SWIG installed + any more (although you do need a C compiler and libcdio installed). +- Remove bug in is_device() +- Fixes for Solaris and cygwin builds (compilation/linking flags) +- Minor SWIG changes to be more precise. + +0.10 2006-01-30 +--------------- + +Initial Python wrapper diff -Nru pycdio-2.0.0/PKG-INFO pycdio-2.1.0/PKG-INFO --- pycdio-2.0.0/PKG-INFO 2018-02-06 00:36:25.000000000 +0000 +++ pycdio-2.1.0/PKG-INFO 2019-08-25 12:19:34.000000000 +0000 @@ -1,13 +1,13 @@ Metadata-Version: 1.1 Name: pycdio -Version: 2.0.0 +Version: 2.1.0 Summary: Python OO interface to libcdio (CD Input and Control library) Home-page: http://www.gnu.org/software/libcdio Author: Rocky Bernstein Author-email: rocky@gnu.org License: GPL Description: Introduction - ============ + ============== pycdio is a Python interface to the *libcdio*, the CD Input and Control library http://www.gnu.org/software/libcdio @@ -63,7 +63,7 @@ Other sample code can be found in the *example* directory of the distribution. Requirements - ============ + ============= * A C compiler so the extension can be compiled when it is installed. * libcdio (http://www.gnu.org/software/libcdio) and it's header files installed. @@ -71,18 +71,44 @@ * pkg-config http://pkg-config.freedesktop.org To build on Debian (e.g. Ubuntu): - --------------------------------- + ------------------------------------- :: - apt-get install python-dev - apt-get install libcdio-dev - apt-get install libiso9660-dev - apt-get install swig pkg-config + $ apt-get install python-dev + $ apt-get install libcdio-dev + $ apt-get install libiso9660-dev + $ apt-get install swig pkg-config + $ pip install -e . + $ make check + + SWIG Problems + =============== + + I've tried to make this work back to Python 2.3 or so. + + I've noticed however problems in various distutils. + + If you see a message like this when running `make check`: + + :: + File "/home/rocky/.pyenv/versions/3.5.6/lib/python3.5/distutils/unixccompiler.py", line 207, in library_dir_option + return "-L" + dir + TypeError: Can't convert 'bytes' object to str implicitly + + + Copy in a recent ditutils `unixccompiler.py` like this: + + :: + + $ cp admin-tools/unixccompiler.py /home/rocky/.pyenv/versions/3.5.6/lib/python3.5/distutils/unixccompiler.py + + The distutils distribution says that it tries to be compatible with all Python versions from 2.3. The + `unixccompiler.py` in `admin_tools` is from the Python 3.7.4 distribution. Completeness - ============ + ============= *libcdio* is rather large and yet may still grow a bit. @@ -135,6 +161,7 @@ Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: GNU General Public License (GPL) Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: Python :: 2.4 Classifier: Programming Language :: Python :: 2.5 Classifier: Programming Language :: Python :: 2.6 diff -Nru pycdio-2.0.0/__pkginfo__.py pycdio-2.1.0/__pkginfo__.py --- pycdio-2.0.0/__pkginfo__.py 2018-02-05 21:51:25.000000000 +0000 +++ pycdio-2.1.0/__pkginfo__.py 2019-08-25 12:00:33.000000000 +0000 @@ -38,6 +38,7 @@ 'Intended Audience :: Developers', 'License :: OSI Approved :: GNU General Public License (GPL)', 'Programming Language :: Python', + 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.4', 'Programming Language :: Python :: 2.5', 'Programming Language :: Python :: 2.6', diff -Nru pycdio-2.0.0/pycdio.egg-info/PKG-INFO pycdio-2.1.0/pycdio.egg-info/PKG-INFO --- pycdio-2.0.0/pycdio.egg-info/PKG-INFO 2018-02-06 00:36:25.000000000 +0000 +++ pycdio-2.1.0/pycdio.egg-info/PKG-INFO 2019-08-25 12:19:34.000000000 +0000 @@ -1,13 +1,13 @@ Metadata-Version: 1.1 Name: pycdio -Version: 2.0.0 +Version: 2.1.0 Summary: Python OO interface to libcdio (CD Input and Control library) Home-page: http://www.gnu.org/software/libcdio Author: Rocky Bernstein Author-email: rocky@gnu.org License: GPL Description: Introduction - ============ + ============== pycdio is a Python interface to the *libcdio*, the CD Input and Control library http://www.gnu.org/software/libcdio @@ -63,7 +63,7 @@ Other sample code can be found in the *example* directory of the distribution. Requirements - ============ + ============= * A C compiler so the extension can be compiled when it is installed. * libcdio (http://www.gnu.org/software/libcdio) and it's header files installed. @@ -71,18 +71,44 @@ * pkg-config http://pkg-config.freedesktop.org To build on Debian (e.g. Ubuntu): - --------------------------------- + ------------------------------------- :: - apt-get install python-dev - apt-get install libcdio-dev - apt-get install libiso9660-dev - apt-get install swig pkg-config + $ apt-get install python-dev + $ apt-get install libcdio-dev + $ apt-get install libiso9660-dev + $ apt-get install swig pkg-config + $ pip install -e . + $ make check + + SWIG Problems + =============== + + I've tried to make this work back to Python 2.3 or so. + + I've noticed however problems in various distutils. + + If you see a message like this when running `make check`: + + :: + File "/home/rocky/.pyenv/versions/3.5.6/lib/python3.5/distutils/unixccompiler.py", line 207, in library_dir_option + return "-L" + dir + TypeError: Can't convert 'bytes' object to str implicitly + + + Copy in a recent ditutils `unixccompiler.py` like this: + + :: + + $ cp admin-tools/unixccompiler.py /home/rocky/.pyenv/versions/3.5.6/lib/python3.5/distutils/unixccompiler.py + + The distutils distribution says that it tries to be compatible with all Python versions from 2.3. The + `unixccompiler.py` in `admin_tools` is from the Python 3.7.4 distribution. Completeness - ============ + ============= *libcdio* is rather large and yet may still grow a bit. @@ -135,6 +161,7 @@ Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: GNU General Public License (GPL) Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: Python :: 2.4 Classifier: Programming Language :: Python :: 2.5 Classifier: Programming Language :: Python :: 2.6 diff -Nru pycdio-2.0.0/pycdio.egg-info/SOURCES.txt pycdio-2.1.0/pycdio.egg-info/SOURCES.txt --- pycdio-2.0.0/pycdio.egg-info/SOURCES.txt 2018-02-06 00:36:25.000000000 +0000 +++ pycdio-2.1.0/pycdio.egg-info/SOURCES.txt 2019-08-25 12:19:34.000000000 +0000 @@ -3,7 +3,7 @@ ChangeLog MANIFEST.in Makefile -NEWS +NEWS.md README.rst THANKS VERSION.py diff -Nru pycdio-2.0.0/pycdio.py pycdio-2.1.0/pycdio.py --- pycdio-2.0.0/pycdio.py 2017-08-16 12:24:10.000000000 +0000 +++ pycdio-2.1.0/pycdio.py 2019-08-25 12:19:30.000000000 +0000 @@ -1,12 +1,9 @@ # This file was automatically generated by SWIG (http://www.swig.org). -# Version 3.0.8 +# Version 3.0.12 # # Do not make changes to this file unless you know what you are doing--modify # the SWIG interface file instead. - - - """ This is a wrapper for The CD Input and Control library (libcdio) which encapsulates CD-ROM reading and control. Python programs wishing to be @@ -15,8 +12,19 @@ """ -from sys import version_info -if version_info >= (2, 6, 0): +from sys import version_info as _swig_python_version_info +if _swig_python_version_info >= (2, 7, 0): + def swig_import_helper(): + import importlib + pkg = __name__.rpartition('.')[0] + mname = '.'.join((pkg, '_pycdio')).lstrip('.') + try: + return importlib.import_module(mname) + except ImportError: + return importlib.import_module('_pycdio') + _pycdio = swig_import_helper() + del swig_import_helper +elif _swig_python_version_info >= (2, 6, 0): def swig_import_helper(): from os.path import dirname import imp @@ -26,22 +34,27 @@ except ImportError: import _pycdio return _pycdio - if fp is not None: - try: - _mod = imp.load_module('_pycdio', fp, pathname, description) - finally: + try: + _mod = imp.load_module('_pycdio', fp, pathname, description) + finally: + if fp is not None: fp.close() - return _mod + return _mod _pycdio = swig_import_helper() del swig_import_helper else: import _pycdio -del version_info +del _swig_python_version_info + try: _swig_property = property except NameError: pass # Python < 2.2 doesn't have 'property'. +try: + import builtins as __builtin__ +except ImportError: + import __builtin__ def _swig_setattr_nondynamic(self, class_type, name, value, static=1): if (name == "thisown"): @@ -66,37 +79,30 @@ return _swig_setattr_nondynamic(self, class_type, name, value, 0) -def _swig_getattr_nondynamic(self, class_type, name, static=1): +def _swig_getattr(self, class_type, name): if (name == "thisown"): return self.this.own() method = class_type.__swig_getmethods__.get(name, None) if method: return method(self) - if (not static): - return object.__getattr__(self, name) - else: - raise AttributeError(name) - -def _swig_getattr(self, class_type, name): - return _swig_getattr_nondynamic(self, class_type, name, 0) + raise AttributeError("'%s' object has no attribute '%s'" % (class_type.__name__, name)) def _swig_repr(self): try: strthis = "proxy of " + self.this.__repr__() - except Exception: + except __builtin__.Exception: strthis = "" return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,) try: _object = object _newclass = 1 -except AttributeError: +except __builtin__.Exception: class _object: pass _newclass = 0 - class imaxdiv_t(_object): __swig_setmethods__ = {} __setattr__ = lambda self, name, value: _swig_setattr(self, imaxdiv_t, name, value) @@ -122,7 +128,7 @@ this = _pycdio.new_imaxdiv_t() try: self.this.append(this) - except Exception: + except __builtin__.Exception: self.this = this __swig_destroy__ = _pycdio.delete_imaxdiv_t __del__ = lambda self: None @@ -153,29 +159,13 @@ def strtoumax(nptr, endptr, base): return _pycdio.strtoumax(nptr, endptr, base) strtoumax = _pycdio.strtoumax - -_pycdio.VERSION_NUM_swigconstant(_pycdio) VERSION_NUM = _pycdio.VERSION_NUM - -_pycdio.INVALID_LBA_swigconstant(_pycdio) INVALID_LBA = _pycdio.INVALID_LBA - -_pycdio.INVALID_LSN_swigconstant(_pycdio) INVALID_LSN = _pycdio.INVALID_LSN - -_pycdio.CD_FRAMESIZE_swigconstant(_pycdio) CD_FRAMESIZE = _pycdio.CD_FRAMESIZE - -_pycdio.CD_FRAMESIZE_RAW_swigconstant(_pycdio) CD_FRAMESIZE_RAW = _pycdio.CD_FRAMESIZE_RAW - -_pycdio.ISO_BLOCKSIZE_swigconstant(_pycdio) ISO_BLOCKSIZE = _pycdio.ISO_BLOCKSIZE - -_pycdio.M2F2_SECTOR_SIZE_swigconstant(_pycdio) M2F2_SECTOR_SIZE = _pycdio.M2F2_SECTOR_SIZE - -_pycdio.M2RAW_SECTOR_SIZE_swigconstant(_pycdio) M2RAW_SECTOR_SIZE = _pycdio.M2RAW_SECTOR_SIZE def audio_pause(p_cdio): @@ -214,20 +204,10 @@ Stop playing an audio CD. """ return _pycdio.audio_stop(p_cdio) - -_pycdio.READ_MODE_AUDIO_swigconstant(_pycdio) READ_MODE_AUDIO = _pycdio.READ_MODE_AUDIO - -_pycdio.READ_MODE_M1F1_swigconstant(_pycdio) READ_MODE_M1F1 = _pycdio.READ_MODE_M1F1 - -_pycdio.READ_MODE_M1F2_swigconstant(_pycdio) READ_MODE_M1F2 = _pycdio.READ_MODE_M1F2 - -_pycdio.READ_MODE_M2F1_swigconstant(_pycdio) READ_MODE_M2F1 = _pycdio.READ_MODE_M2F1 - -_pycdio.READ_MODE_M2F2_swigconstant(_pycdio) READ_MODE_M2F2 = _pycdio.READ_MODE_M2F2 def lseek(*args): @@ -292,77 +272,29 @@ If size <= 0 an error has occurred. """ return _pycdio.read_data_bytes(p_cdio, p_buf, i_lsn, i_blocksize) - -_pycdio.TRACK_FORMAT_AUDIO_swigconstant(_pycdio) TRACK_FORMAT_AUDIO = _pycdio.TRACK_FORMAT_AUDIO - -_pycdio.TRACK_FORMAT_CDI_swigconstant(_pycdio) TRACK_FORMAT_CDI = _pycdio.TRACK_FORMAT_CDI - -_pycdio.TRACK_FORMAT_XA_swigconstant(_pycdio) TRACK_FORMAT_XA = _pycdio.TRACK_FORMAT_XA - -_pycdio.TRACK_FORMAT_DATA_swigconstant(_pycdio) TRACK_FORMAT_DATA = _pycdio.TRACK_FORMAT_DATA - -_pycdio.TRACK_FORMAT_PSX_swigconstant(_pycdio) TRACK_FORMAT_PSX = _pycdio.TRACK_FORMAT_PSX - -_pycdio.CDIO_TRACK_FLAG_FALSE_swigconstant(_pycdio) CDIO_TRACK_FLAG_FALSE = _pycdio.CDIO_TRACK_FLAG_FALSE - -_pycdio.CDIO_TRACK_FLAG_TRUE_swigconstant(_pycdio) CDIO_TRACK_FLAG_TRUE = _pycdio.CDIO_TRACK_FLAG_TRUE - -_pycdio.CDIO_TRACK_FLAG_ERROR_swigconstant(_pycdio) CDIO_TRACK_FLAG_ERROR = _pycdio.CDIO_TRACK_FLAG_ERROR - -_pycdio.CDIO_TRACK_FLAG_UNKNOWN_swigconstant(_pycdio) CDIO_TRACK_FLAG_UNKNOWN = _pycdio.CDIO_TRACK_FLAG_UNKNOWN - -_pycdio.CDIO_CDROM_LBA_swigconstant(_pycdio) CDIO_CDROM_LBA = _pycdio.CDIO_CDROM_LBA - -_pycdio.CDIO_CDROM_MSF_swigconstant(_pycdio) CDIO_CDROM_MSF = _pycdio.CDIO_CDROM_MSF - -_pycdio.CDIO_CDROM_DATA_TRACK_swigconstant(_pycdio) CDIO_CDROM_DATA_TRACK = _pycdio.CDIO_CDROM_DATA_TRACK - -_pycdio.CDIO_CDROM_CDI_TRACK_swigconstant(_pycdio) CDIO_CDROM_CDI_TRACK = _pycdio.CDIO_CDROM_CDI_TRACK - -_pycdio.CDIO_CDROM_XA_TRACK_swigconstant(_pycdio) CDIO_CDROM_XA_TRACK = _pycdio.CDIO_CDROM_XA_TRACK - -_pycdio.AUDIO_swigconstant(_pycdio) AUDIO = _pycdio.AUDIO - -_pycdio.MODE1_swigconstant(_pycdio) MODE1 = _pycdio.MODE1 - -_pycdio.MODE1_RAW_swigconstant(_pycdio) MODE1_RAW = _pycdio.MODE1_RAW - -_pycdio.MODE2_swigconstant(_pycdio) MODE2 = _pycdio.MODE2 - -_pycdio.MODE2_FORM1_swigconstant(_pycdio) MODE2_FORM1 = _pycdio.MODE2_FORM1 - -_pycdio.MODE2_FORM2_swigconstant(_pycdio) MODE2_FORM2 = _pycdio.MODE2_FORM2 - -_pycdio.MODE2_FORM_MIX_swigconstant(_pycdio) MODE2_FORM_MIX = _pycdio.MODE2_FORM_MIX - -_pycdio.MODE2_RAW_swigconstant(_pycdio) MODE2_RAW = _pycdio.MODE2_RAW - -_pycdio.INVALID_TRACK_swigconstant(_pycdio) INVALID_TRACK = _pycdio.INVALID_TRACK - -_pycdio.CDROM_LEADOUT_TRACK_swigconstant(_pycdio) CDROM_LEADOUT_TRACK = _pycdio.CDROM_LEADOUT_TRACK def get_first_track_num(p_cdio): @@ -511,440 +443,150 @@ 0 is returned if there is an error. """ return _pycdio.get_track_sec_count(p_cdio, i_track) - -_pycdio.CDTEXT_ARRANGER_swigconstant(_pycdio) CDTEXT_ARRANGER = _pycdio.CDTEXT_ARRANGER - -_pycdio.CDTEXT_COMPOSER_swigconstant(_pycdio) CDTEXT_COMPOSER = _pycdio.CDTEXT_COMPOSER - -_pycdio.CDTEXT_DISCID_swigconstant(_pycdio) CDTEXT_DISCID = _pycdio.CDTEXT_DISCID - -_pycdio.CDTEXT_ISRC_swigconstant(_pycdio) CDTEXT_ISRC = _pycdio.CDTEXT_ISRC - -_pycdio.CDTEXT_MESSAGE_swigconstant(_pycdio) CDTEXT_MESSAGE = _pycdio.CDTEXT_MESSAGE - -_pycdio.CDTEXT_PERFORMER_swigconstant(_pycdio) CDTEXT_PERFORMER = _pycdio.CDTEXT_PERFORMER - -_pycdio.CDTEXT_FIELD_TITLE_swigconstant(_pycdio) CDTEXT_FIELD_TITLE = _pycdio.CDTEXT_FIELD_TITLE - -_pycdio.CDTEXT_FIELD_SONGWRITER_swigconstant(_pycdio) CDTEXT_FIELD_SONGWRITER = _pycdio.CDTEXT_FIELD_SONGWRITER - -_pycdio.CDTEXT_FIELD_UPC_EAN_swigconstant(_pycdio) CDTEXT_FIELD_UPC_EAN = _pycdio.CDTEXT_FIELD_UPC_EAN - -_pycdio.CDTEXT_GENRE_swigconstant(_pycdio) CDTEXT_GENRE = _pycdio.CDTEXT_GENRE - -_pycdio.CDTEXT_FIELD_INVALID_swigconstant(_pycdio) CDTEXT_FIELD_INVALID = _pycdio.CDTEXT_FIELD_INVALID - -_pycdio.CDTEXT_GENRE_UNUSED_swigconstant(_pycdio) CDTEXT_GENRE_UNUSED = _pycdio.CDTEXT_GENRE_UNUSED - -_pycdio.CDTEXT_GENRE_UNDEFINED_swigconstant(_pycdio) CDTEXT_GENRE_UNDEFINED = _pycdio.CDTEXT_GENRE_UNDEFINED - -_pycdio.CDTEXT_GENRE_ADULT_CONTEMP_swigconstant(_pycdio) CDTEXT_GENRE_ADULT_CONTEMP = _pycdio.CDTEXT_GENRE_ADULT_CONTEMP - -_pycdio.CDTEXT_GENRE_ALT_ROCK_swigconstant(_pycdio) CDTEXT_GENRE_ALT_ROCK = _pycdio.CDTEXT_GENRE_ALT_ROCK - -_pycdio.CDTEXT_GENRE_CHILDRENS_swigconstant(_pycdio) CDTEXT_GENRE_CHILDRENS = _pycdio.CDTEXT_GENRE_CHILDRENS - -_pycdio.CDTEXT_GENRE_CLASSIC_swigconstant(_pycdio) CDTEXT_GENRE_CLASSIC = _pycdio.CDTEXT_GENRE_CLASSIC - -_pycdio.CDTEXT_GENRE_CHRIST_CONTEMP_swigconstant(_pycdio) CDTEXT_GENRE_CHRIST_CONTEMP = _pycdio.CDTEXT_GENRE_CHRIST_CONTEMP - -_pycdio.CDTEXT_GENRE_COUNTRY_swigconstant(_pycdio) CDTEXT_GENRE_COUNTRY = _pycdio.CDTEXT_GENRE_COUNTRY - -_pycdio.CDTEXT_GENRE_DANCE_swigconstant(_pycdio) CDTEXT_GENRE_DANCE = _pycdio.CDTEXT_GENRE_DANCE - -_pycdio.CDTEXT_GENRE_EASY_LISTENING_swigconstant(_pycdio) CDTEXT_GENRE_EASY_LISTENING = _pycdio.CDTEXT_GENRE_EASY_LISTENING - -_pycdio.CDTEXT_GENRE_EROTIC_swigconstant(_pycdio) CDTEXT_GENRE_EROTIC = _pycdio.CDTEXT_GENRE_EROTIC - -_pycdio.CDTEXT_GENRE_FOLK_swigconstant(_pycdio) CDTEXT_GENRE_FOLK = _pycdio.CDTEXT_GENRE_FOLK - -_pycdio.CDTEXT_GENRE_GOSPEL_swigconstant(_pycdio) CDTEXT_GENRE_GOSPEL = _pycdio.CDTEXT_GENRE_GOSPEL - -_pycdio.CDTEXT_GENRE_HIPHOP_swigconstant(_pycdio) CDTEXT_GENRE_HIPHOP = _pycdio.CDTEXT_GENRE_HIPHOP - -_pycdio.CDTEXT_GENRE_JAZZ_swigconstant(_pycdio) CDTEXT_GENRE_JAZZ = _pycdio.CDTEXT_GENRE_JAZZ - -_pycdio.CDTEXT_GENRE_LATIN_swigconstant(_pycdio) CDTEXT_GENRE_LATIN = _pycdio.CDTEXT_GENRE_LATIN - -_pycdio.CDTEXT_GENRE_MUSICAL_swigconstant(_pycdio) CDTEXT_GENRE_MUSICAL = _pycdio.CDTEXT_GENRE_MUSICAL - -_pycdio.CDTEXT_GENRE_NEWAGE_swigconstant(_pycdio) CDTEXT_GENRE_NEWAGE = _pycdio.CDTEXT_GENRE_NEWAGE - -_pycdio.CDTEXT_GENRE_OPERA_swigconstant(_pycdio) CDTEXT_GENRE_OPERA = _pycdio.CDTEXT_GENRE_OPERA - -_pycdio.CDTEXT_GENRE_OPERETTA_swigconstant(_pycdio) CDTEXT_GENRE_OPERETTA = _pycdio.CDTEXT_GENRE_OPERETTA - -_pycdio.CDTEXT_GENRE_POP_swigconstant(_pycdio) CDTEXT_GENRE_POP = _pycdio.CDTEXT_GENRE_POP - -_pycdio.CDTEXT_GENRE_RAP_swigconstant(_pycdio) CDTEXT_GENRE_RAP = _pycdio.CDTEXT_GENRE_RAP - -_pycdio.CDTEXT_GENRE_REGGAE_swigconstant(_pycdio) CDTEXT_GENRE_REGGAE = _pycdio.CDTEXT_GENRE_REGGAE - -_pycdio.CDTEXT_GENRE_ROCK_swigconstant(_pycdio) CDTEXT_GENRE_ROCK = _pycdio.CDTEXT_GENRE_ROCK - -_pycdio.CDTEXT_GENRE_RYTHMANDBLUES_swigconstant(_pycdio) CDTEXT_GENRE_RYTHMANDBLUES = _pycdio.CDTEXT_GENRE_RYTHMANDBLUES - -_pycdio.CDTEXT_GENRE_SOUNDEFFECTS_swigconstant(_pycdio) CDTEXT_GENRE_SOUNDEFFECTS = _pycdio.CDTEXT_GENRE_SOUNDEFFECTS - -_pycdio.CDTEXT_GENRE_SOUNDTRACK_swigconstant(_pycdio) CDTEXT_GENRE_SOUNDTRACK = _pycdio.CDTEXT_GENRE_SOUNDTRACK - -_pycdio.CDTEXT_GENRE_SPOKEN_WORD_swigconstant(_pycdio) CDTEXT_GENRE_SPOKEN_WORD = _pycdio.CDTEXT_GENRE_SPOKEN_WORD - -_pycdio.CDTEXT_GENRE_WORLD_MUSIC_swigconstant(_pycdio) CDTEXT_GENRE_WORLD_MUSIC = _pycdio.CDTEXT_GENRE_WORLD_MUSIC - -_pycdio.CDTEXT_LANGUAGE_UNKNOWN_swigconstant(_pycdio) CDTEXT_LANGUAGE_UNKNOWN = _pycdio.CDTEXT_LANGUAGE_UNKNOWN - -_pycdio.CDTEXT_LANGUAGE_ALBANIAN_swigconstant(_pycdio) CDTEXT_LANGUAGE_ALBANIAN = _pycdio.CDTEXT_LANGUAGE_ALBANIAN - -_pycdio.CDTEXT_LANGUAGE_BRETON_swigconstant(_pycdio) CDTEXT_LANGUAGE_BRETON = _pycdio.CDTEXT_LANGUAGE_BRETON - -_pycdio.CDTEXT_LANGUAGE_CATALAN_swigconstant(_pycdio) CDTEXT_LANGUAGE_CATALAN = _pycdio.CDTEXT_LANGUAGE_CATALAN - -_pycdio.CDTEXT_LANGUAGE_CROATIAN_swigconstant(_pycdio) CDTEXT_LANGUAGE_CROATIAN = _pycdio.CDTEXT_LANGUAGE_CROATIAN - -_pycdio.CDTEXT_LANGUAGE_WELSH_swigconstant(_pycdio) CDTEXT_LANGUAGE_WELSH = _pycdio.CDTEXT_LANGUAGE_WELSH - -_pycdio.CDTEXT_LANGUAGE_CZECH_swigconstant(_pycdio) CDTEXT_LANGUAGE_CZECH = _pycdio.CDTEXT_LANGUAGE_CZECH - -_pycdio.CDTEXT_LANGUAGE_DANISH_swigconstant(_pycdio) CDTEXT_LANGUAGE_DANISH = _pycdio.CDTEXT_LANGUAGE_DANISH - -_pycdio.CDTEXT_LANGUAGE_GERMAN_swigconstant(_pycdio) CDTEXT_LANGUAGE_GERMAN = _pycdio.CDTEXT_LANGUAGE_GERMAN - -_pycdio.CDTEXT_LANGUAGE_ENGLISH_swigconstant(_pycdio) CDTEXT_LANGUAGE_ENGLISH = _pycdio.CDTEXT_LANGUAGE_ENGLISH - -_pycdio.CDTEXT_LANGUAGE_SPANISH_swigconstant(_pycdio) CDTEXT_LANGUAGE_SPANISH = _pycdio.CDTEXT_LANGUAGE_SPANISH - -_pycdio.CDTEXT_LANGUAGE_ESPERANTO_swigconstant(_pycdio) CDTEXT_LANGUAGE_ESPERANTO = _pycdio.CDTEXT_LANGUAGE_ESPERANTO - -_pycdio.CDTEXT_LANGUAGE_ESTONIAN_swigconstant(_pycdio) CDTEXT_LANGUAGE_ESTONIAN = _pycdio.CDTEXT_LANGUAGE_ESTONIAN - -_pycdio.CDTEXT_LANGUAGE_BASQUE_swigconstant(_pycdio) CDTEXT_LANGUAGE_BASQUE = _pycdio.CDTEXT_LANGUAGE_BASQUE - -_pycdio.CDTEXT_LANGUAGE_FAROESE_swigconstant(_pycdio) CDTEXT_LANGUAGE_FAROESE = _pycdio.CDTEXT_LANGUAGE_FAROESE - -_pycdio.CDTEXT_LANGUAGE_FRENCH_swigconstant(_pycdio) CDTEXT_LANGUAGE_FRENCH = _pycdio.CDTEXT_LANGUAGE_FRENCH - -_pycdio.CDTEXT_LANGUAGE_FRISIAN_swigconstant(_pycdio) CDTEXT_LANGUAGE_FRISIAN = _pycdio.CDTEXT_LANGUAGE_FRISIAN - -_pycdio.CDTEXT_LANGUAGE_IRISH_swigconstant(_pycdio) CDTEXT_LANGUAGE_IRISH = _pycdio.CDTEXT_LANGUAGE_IRISH - -_pycdio.CDTEXT_LANGUAGE_GAELIC_swigconstant(_pycdio) CDTEXT_LANGUAGE_GAELIC = _pycdio.CDTEXT_LANGUAGE_GAELIC - -_pycdio.CDTEXT_LANGUAGE_GALICIAN_swigconstant(_pycdio) CDTEXT_LANGUAGE_GALICIAN = _pycdio.CDTEXT_LANGUAGE_GALICIAN - -_pycdio.CDTEXT_LANGUAGE_ICELANDIC_swigconstant(_pycdio) CDTEXT_LANGUAGE_ICELANDIC = _pycdio.CDTEXT_LANGUAGE_ICELANDIC - -_pycdio.CDTEXT_LANGUAGE_ITALIAN_swigconstant(_pycdio) CDTEXT_LANGUAGE_ITALIAN = _pycdio.CDTEXT_LANGUAGE_ITALIAN - -_pycdio.CDTEXT_LANGUAGE_LAPPISH_swigconstant(_pycdio) CDTEXT_LANGUAGE_LAPPISH = _pycdio.CDTEXT_LANGUAGE_LAPPISH - -_pycdio.CDTEXT_LANGUAGE_LATIN_swigconstant(_pycdio) CDTEXT_LANGUAGE_LATIN = _pycdio.CDTEXT_LANGUAGE_LATIN - -_pycdio.CDTEXT_LANGUAGE_LATVIAN_swigconstant(_pycdio) CDTEXT_LANGUAGE_LATVIAN = _pycdio.CDTEXT_LANGUAGE_LATVIAN - -_pycdio.CDTEXT_LANGUAGE_LUXEMBOURGIAN_swigconstant(_pycdio) CDTEXT_LANGUAGE_LUXEMBOURGIAN = _pycdio.CDTEXT_LANGUAGE_LUXEMBOURGIAN - -_pycdio.CDTEXT_LANGUAGE_LITHUANIAN_swigconstant(_pycdio) CDTEXT_LANGUAGE_LITHUANIAN = _pycdio.CDTEXT_LANGUAGE_LITHUANIAN - -_pycdio.CDTEXT_LANGUAGE_HUNGARIAN_swigconstant(_pycdio) CDTEXT_LANGUAGE_HUNGARIAN = _pycdio.CDTEXT_LANGUAGE_HUNGARIAN - -_pycdio.CDTEXT_LANGUAGE_MALTESE_swigconstant(_pycdio) CDTEXT_LANGUAGE_MALTESE = _pycdio.CDTEXT_LANGUAGE_MALTESE - -_pycdio.CDTEXT_LANGUAGE_DUTCH_swigconstant(_pycdio) CDTEXT_LANGUAGE_DUTCH = _pycdio.CDTEXT_LANGUAGE_DUTCH - -_pycdio.CDTEXT_LANGUAGE_NORWEGIAN_swigconstant(_pycdio) CDTEXT_LANGUAGE_NORWEGIAN = _pycdio.CDTEXT_LANGUAGE_NORWEGIAN - -_pycdio.CDTEXT_LANGUAGE_OCCITAN_swigconstant(_pycdio) CDTEXT_LANGUAGE_OCCITAN = _pycdio.CDTEXT_LANGUAGE_OCCITAN - -_pycdio.CDTEXT_LANGUAGE_POLISH_swigconstant(_pycdio) CDTEXT_LANGUAGE_POLISH = _pycdio.CDTEXT_LANGUAGE_POLISH - -_pycdio.CDTEXT_LANGUAGE_PORTUGUESE_swigconstant(_pycdio) CDTEXT_LANGUAGE_PORTUGUESE = _pycdio.CDTEXT_LANGUAGE_PORTUGUESE - -_pycdio.CDTEXT_LANGUAGE_ROMANIAN_swigconstant(_pycdio) CDTEXT_LANGUAGE_ROMANIAN = _pycdio.CDTEXT_LANGUAGE_ROMANIAN - -_pycdio.CDTEXT_LANGUAGE_ROMANSH_swigconstant(_pycdio) CDTEXT_LANGUAGE_ROMANSH = _pycdio.CDTEXT_LANGUAGE_ROMANSH - -_pycdio.CDTEXT_LANGUAGE_SERBIAN_swigconstant(_pycdio) CDTEXT_LANGUAGE_SERBIAN = _pycdio.CDTEXT_LANGUAGE_SERBIAN - -_pycdio.CDTEXT_LANGUAGE_SLOVAK_swigconstant(_pycdio) CDTEXT_LANGUAGE_SLOVAK = _pycdio.CDTEXT_LANGUAGE_SLOVAK - -_pycdio.CDTEXT_LANGUAGE_SLOVENIAN_swigconstant(_pycdio) CDTEXT_LANGUAGE_SLOVENIAN = _pycdio.CDTEXT_LANGUAGE_SLOVENIAN - -_pycdio.CDTEXT_LANGUAGE_FINNISH_swigconstant(_pycdio) CDTEXT_LANGUAGE_FINNISH = _pycdio.CDTEXT_LANGUAGE_FINNISH - -_pycdio.CDTEXT_LANGUAGE_SWEDISH_swigconstant(_pycdio) CDTEXT_LANGUAGE_SWEDISH = _pycdio.CDTEXT_LANGUAGE_SWEDISH - -_pycdio.CDTEXT_LANGUAGE_TURKISH_swigconstant(_pycdio) CDTEXT_LANGUAGE_TURKISH = _pycdio.CDTEXT_LANGUAGE_TURKISH - -_pycdio.CDTEXT_LANGUAGE_FLEMISH_swigconstant(_pycdio) CDTEXT_LANGUAGE_FLEMISH = _pycdio.CDTEXT_LANGUAGE_FLEMISH - -_pycdio.CDTEXT_LANGUAGE_WALLON_swigconstant(_pycdio) CDTEXT_LANGUAGE_WALLON = _pycdio.CDTEXT_LANGUAGE_WALLON - -_pycdio.CDTEXT_LANGUAGE_ZULU_swigconstant(_pycdio) CDTEXT_LANGUAGE_ZULU = _pycdio.CDTEXT_LANGUAGE_ZULU - -_pycdio.CDTEXT_LANGUAGE_VIETNAMESE_swigconstant(_pycdio) CDTEXT_LANGUAGE_VIETNAMESE = _pycdio.CDTEXT_LANGUAGE_VIETNAMESE - -_pycdio.CDTEXT_LANGUAGE_UZBEK_swigconstant(_pycdio) CDTEXT_LANGUAGE_UZBEK = _pycdio.CDTEXT_LANGUAGE_UZBEK - -_pycdio.CDTEXT_LANGUAGE_URDU_swigconstant(_pycdio) CDTEXT_LANGUAGE_URDU = _pycdio.CDTEXT_LANGUAGE_URDU - -_pycdio.CDTEXT_LANGUAGE_UKRAINIAN_swigconstant(_pycdio) CDTEXT_LANGUAGE_UKRAINIAN = _pycdio.CDTEXT_LANGUAGE_UKRAINIAN - -_pycdio.CDTEXT_LANGUAGE_THAI_swigconstant(_pycdio) CDTEXT_LANGUAGE_THAI = _pycdio.CDTEXT_LANGUAGE_THAI - -_pycdio.CDTEXT_LANGUAGE_TELUGU_swigconstant(_pycdio) CDTEXT_LANGUAGE_TELUGU = _pycdio.CDTEXT_LANGUAGE_TELUGU - -_pycdio.CDTEXT_LANGUAGE_TATAR_swigconstant(_pycdio) CDTEXT_LANGUAGE_TATAR = _pycdio.CDTEXT_LANGUAGE_TATAR - -_pycdio.CDTEXT_LANGUAGE_TAMIL_swigconstant(_pycdio) CDTEXT_LANGUAGE_TAMIL = _pycdio.CDTEXT_LANGUAGE_TAMIL - -_pycdio.CDTEXT_LANGUAGE_TADZHIK_swigconstant(_pycdio) CDTEXT_LANGUAGE_TADZHIK = _pycdio.CDTEXT_LANGUAGE_TADZHIK - -_pycdio.CDTEXT_LANGUAGE_SWAHILI_swigconstant(_pycdio) CDTEXT_LANGUAGE_SWAHILI = _pycdio.CDTEXT_LANGUAGE_SWAHILI - -_pycdio.CDTEXT_LANGUAGE_SRANANTONGO_swigconstant(_pycdio) CDTEXT_LANGUAGE_SRANANTONGO = _pycdio.CDTEXT_LANGUAGE_SRANANTONGO - -_pycdio.CDTEXT_LANGUAGE_SOMALI_swigconstant(_pycdio) CDTEXT_LANGUAGE_SOMALI = _pycdio.CDTEXT_LANGUAGE_SOMALI - -_pycdio.CDTEXT_LANGUAGE_SINHALESE_swigconstant(_pycdio) CDTEXT_LANGUAGE_SINHALESE = _pycdio.CDTEXT_LANGUAGE_SINHALESE - -_pycdio.CDTEXT_LANGUAGE_SHONA_swigconstant(_pycdio) CDTEXT_LANGUAGE_SHONA = _pycdio.CDTEXT_LANGUAGE_SHONA - -_pycdio.CDTEXT_LANGUAGE_SERBO_CROAT_swigconstant(_pycdio) CDTEXT_LANGUAGE_SERBO_CROAT = _pycdio.CDTEXT_LANGUAGE_SERBO_CROAT - -_pycdio.CDTEXT_LANGUAGE_RUTHENIAN_swigconstant(_pycdio) CDTEXT_LANGUAGE_RUTHENIAN = _pycdio.CDTEXT_LANGUAGE_RUTHENIAN - -_pycdio.CDTEXT_LANGUAGE_RUSSIAN_swigconstant(_pycdio) CDTEXT_LANGUAGE_RUSSIAN = _pycdio.CDTEXT_LANGUAGE_RUSSIAN - -_pycdio.CDTEXT_LANGUAGE_QUECHUA_swigconstant(_pycdio) CDTEXT_LANGUAGE_QUECHUA = _pycdio.CDTEXT_LANGUAGE_QUECHUA - -_pycdio.CDTEXT_LANGUAGE_PUSHTU_swigconstant(_pycdio) CDTEXT_LANGUAGE_PUSHTU = _pycdio.CDTEXT_LANGUAGE_PUSHTU - -_pycdio.CDTEXT_LANGUAGE_PUNJABI_swigconstant(_pycdio) CDTEXT_LANGUAGE_PUNJABI = _pycdio.CDTEXT_LANGUAGE_PUNJABI - -_pycdio.CDTEXT_LANGUAGE_PERSIAN_swigconstant(_pycdio) CDTEXT_LANGUAGE_PERSIAN = _pycdio.CDTEXT_LANGUAGE_PERSIAN - -_pycdio.CDTEXT_LANGUAGE_PAPAMIENTO_swigconstant(_pycdio) CDTEXT_LANGUAGE_PAPAMIENTO = _pycdio.CDTEXT_LANGUAGE_PAPAMIENTO - -_pycdio.CDTEXT_LANGUAGE_ORIYA_swigconstant(_pycdio) CDTEXT_LANGUAGE_ORIYA = _pycdio.CDTEXT_LANGUAGE_ORIYA - -_pycdio.CDTEXT_LANGUAGE_NEPALI_swigconstant(_pycdio) CDTEXT_LANGUAGE_NEPALI = _pycdio.CDTEXT_LANGUAGE_NEPALI - -_pycdio.CDTEXT_LANGUAGE_NDEBELE_swigconstant(_pycdio) CDTEXT_LANGUAGE_NDEBELE = _pycdio.CDTEXT_LANGUAGE_NDEBELE - -_pycdio.CDTEXT_LANGUAGE_MARATHI_swigconstant(_pycdio) CDTEXT_LANGUAGE_MARATHI = _pycdio.CDTEXT_LANGUAGE_MARATHI - -_pycdio.CDTEXT_LANGUAGE_MOLDAVIAN_swigconstant(_pycdio) CDTEXT_LANGUAGE_MOLDAVIAN = _pycdio.CDTEXT_LANGUAGE_MOLDAVIAN - -_pycdio.CDTEXT_LANGUAGE_MALAYSIAN_swigconstant(_pycdio) CDTEXT_LANGUAGE_MALAYSIAN = _pycdio.CDTEXT_LANGUAGE_MALAYSIAN - -_pycdio.CDTEXT_LANGUAGE_MALAGASAY_swigconstant(_pycdio) CDTEXT_LANGUAGE_MALAGASAY = _pycdio.CDTEXT_LANGUAGE_MALAGASAY - -_pycdio.CDTEXT_LANGUAGE_MACEDONIAN_swigconstant(_pycdio) CDTEXT_LANGUAGE_MACEDONIAN = _pycdio.CDTEXT_LANGUAGE_MACEDONIAN - -_pycdio.CDTEXT_LANGUAGE_LAOTIAN_swigconstant(_pycdio) CDTEXT_LANGUAGE_LAOTIAN = _pycdio.CDTEXT_LANGUAGE_LAOTIAN - -_pycdio.CDTEXT_LANGUAGE_KOREAN_swigconstant(_pycdio) CDTEXT_LANGUAGE_KOREAN = _pycdio.CDTEXT_LANGUAGE_KOREAN - -_pycdio.CDTEXT_LANGUAGE_KHMER_swigconstant(_pycdio) CDTEXT_LANGUAGE_KHMER = _pycdio.CDTEXT_LANGUAGE_KHMER - -_pycdio.CDTEXT_LANGUAGE_KAZAKH_swigconstant(_pycdio) CDTEXT_LANGUAGE_KAZAKH = _pycdio.CDTEXT_LANGUAGE_KAZAKH - -_pycdio.CDTEXT_LANGUAGE_KANNADA_swigconstant(_pycdio) CDTEXT_LANGUAGE_KANNADA = _pycdio.CDTEXT_LANGUAGE_KANNADA - -_pycdio.CDTEXT_LANGUAGE_JAPANESE_swigconstant(_pycdio) CDTEXT_LANGUAGE_JAPANESE = _pycdio.CDTEXT_LANGUAGE_JAPANESE - -_pycdio.CDTEXT_LANGUAGE_INDONESIAN_swigconstant(_pycdio) CDTEXT_LANGUAGE_INDONESIAN = _pycdio.CDTEXT_LANGUAGE_INDONESIAN - -_pycdio.CDTEXT_LANGUAGE_HINDI_swigconstant(_pycdio) CDTEXT_LANGUAGE_HINDI = _pycdio.CDTEXT_LANGUAGE_HINDI - -_pycdio.CDTEXT_LANGUAGE_HEBREW_swigconstant(_pycdio) CDTEXT_LANGUAGE_HEBREW = _pycdio.CDTEXT_LANGUAGE_HEBREW - -_pycdio.CDTEXT_LANGUAGE_HAUSA_swigconstant(_pycdio) CDTEXT_LANGUAGE_HAUSA = _pycdio.CDTEXT_LANGUAGE_HAUSA - -_pycdio.CDTEXT_LANGUAGE_GURANI_swigconstant(_pycdio) CDTEXT_LANGUAGE_GURANI = _pycdio.CDTEXT_LANGUAGE_GURANI - -_pycdio.CDTEXT_LANGUAGE_GUJURATI_swigconstant(_pycdio) CDTEXT_LANGUAGE_GUJURATI = _pycdio.CDTEXT_LANGUAGE_GUJURATI - -_pycdio.CDTEXT_LANGUAGE_GREEK_swigconstant(_pycdio) CDTEXT_LANGUAGE_GREEK = _pycdio.CDTEXT_LANGUAGE_GREEK - -_pycdio.CDTEXT_LANGUAGE_GEORGIAN_swigconstant(_pycdio) CDTEXT_LANGUAGE_GEORGIAN = _pycdio.CDTEXT_LANGUAGE_GEORGIAN - -_pycdio.CDTEXT_LANGUAGE_FULANI_swigconstant(_pycdio) CDTEXT_LANGUAGE_FULANI = _pycdio.CDTEXT_LANGUAGE_FULANI - -_pycdio.CDTEXT_LANGUAGE_DARI_swigconstant(_pycdio) CDTEXT_LANGUAGE_DARI = _pycdio.CDTEXT_LANGUAGE_DARI - -_pycdio.CDTEXT_LANGUAGE_CHURASH_swigconstant(_pycdio) CDTEXT_LANGUAGE_CHURASH = _pycdio.CDTEXT_LANGUAGE_CHURASH - -_pycdio.CDTEXT_LANGUAGE_CHINESE_swigconstant(_pycdio) CDTEXT_LANGUAGE_CHINESE = _pycdio.CDTEXT_LANGUAGE_CHINESE - -_pycdio.CDTEXT_LANGUAGE_BURMESE_swigconstant(_pycdio) CDTEXT_LANGUAGE_BURMESE = _pycdio.CDTEXT_LANGUAGE_BURMESE - -_pycdio.CDTEXT_LANGUAGE_BULGARIAN_swigconstant(_pycdio) CDTEXT_LANGUAGE_BULGARIAN = _pycdio.CDTEXT_LANGUAGE_BULGARIAN - -_pycdio.CDTEXT_LANGUAGE_BENGALI_swigconstant(_pycdio) CDTEXT_LANGUAGE_BENGALI = _pycdio.CDTEXT_LANGUAGE_BENGALI - -_pycdio.CDTEXT_LANGUAGE_BIELORUSSIAN_swigconstant(_pycdio) CDTEXT_LANGUAGE_BIELORUSSIAN = _pycdio.CDTEXT_LANGUAGE_BIELORUSSIAN - -_pycdio.CDTEXT_LANGUAGE_BAMBORA_swigconstant(_pycdio) CDTEXT_LANGUAGE_BAMBORA = _pycdio.CDTEXT_LANGUAGE_BAMBORA - -_pycdio.CDTEXT_LANGUAGE_AZERBAIJANI_swigconstant(_pycdio) CDTEXT_LANGUAGE_AZERBAIJANI = _pycdio.CDTEXT_LANGUAGE_AZERBAIJANI - -_pycdio.CDTEXT_LANGUAGE_ASSAMESE_swigconstant(_pycdio) CDTEXT_LANGUAGE_ASSAMESE = _pycdio.CDTEXT_LANGUAGE_ASSAMESE - -_pycdio.CDTEXT_LANGUAGE_ARMENIAN_swigconstant(_pycdio) CDTEXT_LANGUAGE_ARMENIAN = _pycdio.CDTEXT_LANGUAGE_ARMENIAN - -_pycdio.CDTEXT_LANGUAGE_ARABIC_swigconstant(_pycdio) CDTEXT_LANGUAGE_ARABIC = _pycdio.CDTEXT_LANGUAGE_ARABIC - -_pycdio.CDTEXT_LANGUAGE_AMHARIC_swigconstant(_pycdio) CDTEXT_LANGUAGE_AMHARIC = _pycdio.CDTEXT_LANGUAGE_AMHARIC - -_pycdio.MIN_CDTEXT_FIELD_swigconstant(_pycdio) MIN_CDTEXT_FIELD = _pycdio.MIN_CDTEXT_FIELD - -_pycdio.MAX_CDTEXT_FIELDS_swigconstant(_pycdio) MAX_CDTEXT_FIELDS = _pycdio.MAX_CDTEXT_FIELDS def cdtext_field2str(i): @@ -994,290 +636,99 @@ def get_cdtext(p_cdio): """get_cdtext(CdIo_t * p_cdio) -> cdtext_t *""" return _pycdio.get_cdtext(p_cdio) - -_pycdio.DRIVE_CAP_ERROR_swigconstant(_pycdio) DRIVE_CAP_ERROR = _pycdio.DRIVE_CAP_ERROR - -_pycdio.DRIVE_CAP_UNKNOWN_swigconstant(_pycdio) DRIVE_CAP_UNKNOWN = _pycdio.DRIVE_CAP_UNKNOWN - -_pycdio.DRIVE_CAP_MISC_CLOSE_TRAY_swigconstant(_pycdio) DRIVE_CAP_MISC_CLOSE_TRAY = _pycdio.DRIVE_CAP_MISC_CLOSE_TRAY - -_pycdio.DRIVE_CAP_MISC_EJECT_swigconstant(_pycdio) DRIVE_CAP_MISC_EJECT = _pycdio.DRIVE_CAP_MISC_EJECT - -_pycdio.DRIVE_CAP_MISC_LOCK_swigconstant(_pycdio) DRIVE_CAP_MISC_LOCK = _pycdio.DRIVE_CAP_MISC_LOCK - -_pycdio.DRIVE_CAP_MISC_SELECT_SPEED_swigconstant(_pycdio) DRIVE_CAP_MISC_SELECT_SPEED = _pycdio.DRIVE_CAP_MISC_SELECT_SPEED - -_pycdio.DRIVE_CAP_MISC_SELECT_DISC_swigconstant(_pycdio) DRIVE_CAP_MISC_SELECT_DISC = _pycdio.DRIVE_CAP_MISC_SELECT_DISC - -_pycdio.DRIVE_CAP_MISC_MULTI_SESSION_swigconstant(_pycdio) DRIVE_CAP_MISC_MULTI_SESSION = _pycdio.DRIVE_CAP_MISC_MULTI_SESSION - -_pycdio.DRIVE_CAP_MISC_MEDIA_CHANGED_swigconstant(_pycdio) DRIVE_CAP_MISC_MEDIA_CHANGED = _pycdio.DRIVE_CAP_MISC_MEDIA_CHANGED - -_pycdio.DRIVE_CAP_MISC_RESET_swigconstant(_pycdio) DRIVE_CAP_MISC_RESET = _pycdio.DRIVE_CAP_MISC_RESET - -_pycdio.DRIVE_CAP_MISC_FILE_swigconstant(_pycdio) DRIVE_CAP_MISC_FILE = _pycdio.DRIVE_CAP_MISC_FILE - -_pycdio.DRIVE_CAP_READ_AUDIO_swigconstant(_pycdio) DRIVE_CAP_READ_AUDIO = _pycdio.DRIVE_CAP_READ_AUDIO - -_pycdio.DRIVE_CAP_READ_CD_DA_swigconstant(_pycdio) DRIVE_CAP_READ_CD_DA = _pycdio.DRIVE_CAP_READ_CD_DA - -_pycdio.DRIVE_CAP_READ_CD_G_swigconstant(_pycdio) DRIVE_CAP_READ_CD_G = _pycdio.DRIVE_CAP_READ_CD_G - -_pycdio.DRIVE_CAP_READ_CD_R_swigconstant(_pycdio) DRIVE_CAP_READ_CD_R = _pycdio.DRIVE_CAP_READ_CD_R - -_pycdio.DRIVE_CAP_READ_CD_RW_swigconstant(_pycdio) DRIVE_CAP_READ_CD_RW = _pycdio.DRIVE_CAP_READ_CD_RW - -_pycdio.DRIVE_CAP_READ_DVD_R_swigconstant(_pycdio) DRIVE_CAP_READ_DVD_R = _pycdio.DRIVE_CAP_READ_DVD_R - -_pycdio.DRIVE_CAP_READ_DVD_PR_swigconstant(_pycdio) DRIVE_CAP_READ_DVD_PR = _pycdio.DRIVE_CAP_READ_DVD_PR - -_pycdio.DRIVE_CAP_READ_DVD_RAM_swigconstant(_pycdio) DRIVE_CAP_READ_DVD_RAM = _pycdio.DRIVE_CAP_READ_DVD_RAM - -_pycdio.DRIVE_CAP_READ_DVD_ROM_swigconstant(_pycdio) DRIVE_CAP_READ_DVD_ROM = _pycdio.DRIVE_CAP_READ_DVD_ROM - -_pycdio.DRIVE_CAP_READ_DVD_RW_swigconstant(_pycdio) DRIVE_CAP_READ_DVD_RW = _pycdio.DRIVE_CAP_READ_DVD_RW - -_pycdio.DRIVE_CAP_READ_DVD_RPW_swigconstant(_pycdio) DRIVE_CAP_READ_DVD_RPW = _pycdio.DRIVE_CAP_READ_DVD_RPW - -_pycdio.DRIVE_CAP_READ_C2_ERRS_swigconstant(_pycdio) DRIVE_CAP_READ_C2_ERRS = _pycdio.DRIVE_CAP_READ_C2_ERRS - -_pycdio.DRIVE_CAP_READ_MODE2_FORM1_swigconstant(_pycdio) DRIVE_CAP_READ_MODE2_FORM1 = _pycdio.DRIVE_CAP_READ_MODE2_FORM1 - -_pycdio.DRIVE_CAP_READ_MODE2_FORM2_swigconstant(_pycdio) DRIVE_CAP_READ_MODE2_FORM2 = _pycdio.DRIVE_CAP_READ_MODE2_FORM2 - -_pycdio.DRIVE_CAP_READ_MCN_swigconstant(_pycdio) DRIVE_CAP_READ_MCN = _pycdio.DRIVE_CAP_READ_MCN - -_pycdio.DRIVE_CAP_READ_ISRC_swigconstant(_pycdio) DRIVE_CAP_READ_ISRC = _pycdio.DRIVE_CAP_READ_ISRC - -_pycdio.DRIVE_CAP_WRITE_CD_R_swigconstant(_pycdio) DRIVE_CAP_WRITE_CD_R = _pycdio.DRIVE_CAP_WRITE_CD_R - -_pycdio.DRIVE_CAP_WRITE_CD_RW_swigconstant(_pycdio) DRIVE_CAP_WRITE_CD_RW = _pycdio.DRIVE_CAP_WRITE_CD_RW - -_pycdio.DRIVE_CAP_WRITE_DVD_R_swigconstant(_pycdio) DRIVE_CAP_WRITE_DVD_R = _pycdio.DRIVE_CAP_WRITE_DVD_R - -_pycdio.DRIVE_CAP_WRITE_DVD_PR_swigconstant(_pycdio) DRIVE_CAP_WRITE_DVD_PR = _pycdio.DRIVE_CAP_WRITE_DVD_PR - -_pycdio.DRIVE_CAP_WRITE_DVD_RAM_swigconstant(_pycdio) DRIVE_CAP_WRITE_DVD_RAM = _pycdio.DRIVE_CAP_WRITE_DVD_RAM - -_pycdio.DRIVE_CAP_WRITE_DVD_RW_swigconstant(_pycdio) DRIVE_CAP_WRITE_DVD_RW = _pycdio.DRIVE_CAP_WRITE_DVD_RW - -_pycdio.DRIVE_CAP_WRITE_DVD_RPW_swigconstant(_pycdio) DRIVE_CAP_WRITE_DVD_RPW = _pycdio.DRIVE_CAP_WRITE_DVD_RPW - -_pycdio.DRIVE_CAP_WRITE_MT_RAINIER_swigconstant(_pycdio) DRIVE_CAP_WRITE_MT_RAINIER = _pycdio.DRIVE_CAP_WRITE_MT_RAINIER - -_pycdio.DRIVE_CAP_WRITE_BURN_PROOF_swigconstant(_pycdio) DRIVE_CAP_WRITE_BURN_PROOF = _pycdio.DRIVE_CAP_WRITE_BURN_PROOF - -_pycdio.DRIVE_CAP_WRITE_CD_swigconstant(_pycdio) DRIVE_CAP_WRITE_CD = _pycdio.DRIVE_CAP_WRITE_CD - -_pycdio.DRIVE_CAP_WRITE_DVD_swigconstant(_pycdio) DRIVE_CAP_WRITE_DVD = _pycdio.DRIVE_CAP_WRITE_DVD - -_pycdio.DRIVE_CAP_WRITE_swigconstant(_pycdio) DRIVE_CAP_WRITE = _pycdio.DRIVE_CAP_WRITE - -_pycdio.MMC_HW_VENDOR_LEN_swigconstant(_pycdio) MMC_HW_VENDOR_LEN = _pycdio.MMC_HW_VENDOR_LEN - -_pycdio.MMC_HW_MODEL_LEN_swigconstant(_pycdio) MMC_HW_MODEL_LEN = _pycdio.MMC_HW_MODEL_LEN - -_pycdio.MMC_HW_REVISION_LEN_swigconstant(_pycdio) MMC_HW_REVISION_LEN = _pycdio.MMC_HW_REVISION_LEN - -_pycdio.SRC_IS_DISK_IMAGE_MASK_swigconstant(_pycdio) SRC_IS_DISK_IMAGE_MASK = _pycdio.SRC_IS_DISK_IMAGE_MASK - -_pycdio.SRC_IS_DEVICE_MASK_swigconstant(_pycdio) SRC_IS_DEVICE_MASK = _pycdio.SRC_IS_DEVICE_MASK - -_pycdio.SRC_IS_SCSI_MASK_swigconstant(_pycdio) SRC_IS_SCSI_MASK = _pycdio.SRC_IS_SCSI_MASK - -_pycdio.SRC_IS_NATIVE_MASK_swigconstant(_pycdio) SRC_IS_NATIVE_MASK = _pycdio.SRC_IS_NATIVE_MASK - -_pycdio.DRIVER_UNKNOWN_swigconstant(_pycdio) DRIVER_UNKNOWN = _pycdio.DRIVER_UNKNOWN - -_pycdio.DRIVER_AIX_swigconstant(_pycdio) DRIVER_AIX = _pycdio.DRIVER_AIX - -_pycdio.DRIVER_BSDI_swigconstant(_pycdio) -DRIVER_BSDI = _pycdio.DRIVER_BSDI - -_pycdio.DRIVER_FREEBSD_swigconstant(_pycdio) DRIVER_FREEBSD = _pycdio.DRIVER_FREEBSD - -_pycdio.DRIVER_LINUX_swigconstant(_pycdio) DRIVER_LINUX = _pycdio.DRIVER_LINUX - -_pycdio.DRIVER_SOLARIS_swigconstant(_pycdio) DRIVER_SOLARIS = _pycdio.DRIVER_SOLARIS - -_pycdio.DRIVER_OSX_swigconstant(_pycdio) DRIVER_OSX = _pycdio.DRIVER_OSX - -_pycdio.DRIVER_NETBSD_swigconstant(_pycdio) DRIVER_NETBSD = _pycdio.DRIVER_NETBSD - -_pycdio.DRIVER_WIN32_swigconstant(_pycdio) DRIVER_WIN32 = _pycdio.DRIVER_WIN32 - -_pycdio.DRIVER_CDRDAO_swigconstant(_pycdio) DRIVER_CDRDAO = _pycdio.DRIVER_CDRDAO - -_pycdio.DRIVER_BINCUE_swigconstant(_pycdio) DRIVER_BINCUE = _pycdio.DRIVER_BINCUE - -_pycdio.DRIVER_NRG_swigconstant(_pycdio) DRIVER_NRG = _pycdio.DRIVER_NRG - -_pycdio.DRIVER_DEVICE_swigconstant(_pycdio) DRIVER_DEVICE = _pycdio.DRIVER_DEVICE - -_pycdio.DRIVER_OP_SUCCESS_swigconstant(_pycdio) DRIVER_OP_SUCCESS = _pycdio.DRIVER_OP_SUCCESS - -_pycdio.DRIVER_OP_ERROR_swigconstant(_pycdio) DRIVER_OP_ERROR = _pycdio.DRIVER_OP_ERROR - -_pycdio.DRIVER_OP_UNSUPPORTED_swigconstant(_pycdio) DRIVER_OP_UNSUPPORTED = _pycdio.DRIVER_OP_UNSUPPORTED - -_pycdio.DRIVER_OP_UNINIT_swigconstant(_pycdio) DRIVER_OP_UNINIT = _pycdio.DRIVER_OP_UNINIT - -_pycdio.DRIVER_OP_NOT_PERMITTED_swigconstant(_pycdio) DRIVER_OP_NOT_PERMITTED = _pycdio.DRIVER_OP_NOT_PERMITTED - -_pycdio.DRIVER_OP_BAD_PARAMETER_swigconstant(_pycdio) DRIVER_OP_BAD_PARAMETER = _pycdio.DRIVER_OP_BAD_PARAMETER - -_pycdio.DRIVER_OP_BAD_POINTER_swigconstant(_pycdio) DRIVER_OP_BAD_POINTER = _pycdio.DRIVER_OP_BAD_POINTER - -_pycdio.DRIVER_OP_NO_DRIVER_swigconstant(_pycdio) DRIVER_OP_NO_DRIVER = _pycdio.DRIVER_OP_NO_DRIVER - -_pycdio.FS_AUDIO_swigconstant(_pycdio) FS_AUDIO = _pycdio.FS_AUDIO - -_pycdio.FS_HIGH_SIERRA_swigconstant(_pycdio) FS_HIGH_SIERRA = _pycdio.FS_HIGH_SIERRA - -_pycdio.FS_ISO_9660_swigconstant(_pycdio) FS_ISO_9660 = _pycdio.FS_ISO_9660 - -_pycdio.FS_INTERACTIVE_swigconstant(_pycdio) FS_INTERACTIVE = _pycdio.FS_INTERACTIVE - -_pycdio.FS_HFS_swigconstant(_pycdio) FS_HFS = _pycdio.FS_HFS - -_pycdio.FS_UFS_swigconstant(_pycdio) FS_UFS = _pycdio.FS_UFS - -_pycdio.FS_EXT2_swigconstant(_pycdio) FS_EXT2 = _pycdio.FS_EXT2 - -_pycdio.FS_ISO_HFS_swigconstant(_pycdio) FS_ISO_HFS = _pycdio.FS_ISO_HFS - -_pycdio.FS_ISO_9660_INTERACTIVE_swigconstant(_pycdio) FS_ISO_9660_INTERACTIVE = _pycdio.FS_ISO_9660_INTERACTIVE - -_pycdio.FS_3DO_swigconstant(_pycdio) FS_3DO = _pycdio.FS_3DO - -_pycdio.FS_XISO_swigconstant(_pycdio) FS_XISO = _pycdio.FS_XISO - -_pycdio.FS_UDFX_swigconstant(_pycdio) FS_UDFX = _pycdio.FS_UDFX - -_pycdio.FS_UDF_swigconstant(_pycdio) FS_UDF = _pycdio.FS_UDF - -_pycdio.FS_ISO_UDF_swigconstant(_pycdio) FS_ISO_UDF = _pycdio.FS_ISO_UDF - -_pycdio.FS_ANAL_XA_swigconstant(_pycdio) FS_ANAL_XA = _pycdio.FS_ANAL_XA - -_pycdio.FS_ANAL_MULTISESSION_swigconstant(_pycdio) FS_ANAL_MULTISESSION = _pycdio.FS_ANAL_MULTISESSION - -_pycdio.FS_ANAL_PHOTO_CD_swigconstant(_pycdio) FS_ANAL_PHOTO_CD = _pycdio.FS_ANAL_PHOTO_CD - -_pycdio.FS_ANAL_HIDDEN_TRACK_swigconstant(_pycdio) FS_ANAL_HIDDEN_TRACK = _pycdio.FS_ANAL_HIDDEN_TRACK - -_pycdio.FS_ANAL_CDTV_swigconstant(_pycdio) FS_ANAL_CDTV = _pycdio.FS_ANAL_CDTV - -_pycdio.FS_ANAL_BOOTABLE_swigconstant(_pycdio) FS_ANAL_BOOTABLE = _pycdio.FS_ANAL_BOOTABLE - -_pycdio.FS_ANAL_VIDEOCD_swigconstant(_pycdio) FS_ANAL_VIDEOCD = _pycdio.FS_ANAL_VIDEOCD - -_pycdio.FS_ANAL_ROCKRIDGE_swigconstant(_pycdio) FS_ANAL_ROCKRIDGE = _pycdio.FS_ANAL_ROCKRIDGE - -_pycdio.FS_ANAL_JOLIET_swigconstant(_pycdio) FS_ANAL_JOLIET = _pycdio.FS_ANAL_JOLIET - -_pycdio.FS_ANAL_SVCD_swigconstant(_pycdio) FS_ANAL_SVCD = _pycdio.FS_ANAL_SVCD - -_pycdio.FS_ANAL_CVD_swigconstant(_pycdio) FS_ANAL_CVD = _pycdio.FS_ANAL_CVD - -_pycdio.FS_ANAL_XISO_swigconstant(_pycdio) FS_ANAL_XISO = _pycdio.FS_ANAL_XISO - -_pycdio.FS_MATCH_ALL_swigconstant(_pycdio) FS_MATCH_ALL = _pycdio.FS_MATCH_ALL - -_pycdio.FS_UNKNOWN_swigconstant(_pycdio) FS_UNKNOWN = _pycdio.FS_UNKNOWN def close_tray(*args): @@ -1579,47 +1030,19 @@ None on error or no device. """ return _pycdio.set_python_errstring(drc) - -_pycdio.DISC_MODE_CD_DA_swigconstant(_pycdio) DISC_MODE_CD_DA = _pycdio.DISC_MODE_CD_DA - -_pycdio.DISC_MODE_CD_DATA_swigconstant(_pycdio) DISC_MODE_CD_DATA = _pycdio.DISC_MODE_CD_DATA - -_pycdio.DISC_MODE_CD_XA_swigconstant(_pycdio) DISC_MODE_CD_XA = _pycdio.DISC_MODE_CD_XA - -_pycdio.DISC_MODE_CD_MIXED_swigconstant(_pycdio) DISC_MODE_CD_MIXED = _pycdio.DISC_MODE_CD_MIXED - -_pycdio.DISC_MODE_DVD_ROM_swigconstant(_pycdio) DISC_MODE_DVD_ROM = _pycdio.DISC_MODE_DVD_ROM - -_pycdio.DISC_MODE_DVD_RAM_swigconstant(_pycdio) DISC_MODE_DVD_RAM = _pycdio.DISC_MODE_DVD_RAM - -_pycdio.DISC_MODE_DVD_R_swigconstant(_pycdio) DISC_MODE_DVD_R = _pycdio.DISC_MODE_DVD_R - -_pycdio.DISC_MODE_DVD_RW_swigconstant(_pycdio) DISC_MODE_DVD_RW = _pycdio.DISC_MODE_DVD_RW - -_pycdio.DISC_MODE_DVD_PR_swigconstant(_pycdio) DISC_MODE_DVD_PR = _pycdio.DISC_MODE_DVD_PR - -_pycdio.DISC_MODE_DVD_PRW_swigconstant(_pycdio) DISC_MODE_DVD_PRW = _pycdio.DISC_MODE_DVD_PRW - -_pycdio.DISC_MODE_DVD_OTHER_swigconstant(_pycdio) DISC_MODE_DVD_OTHER = _pycdio.DISC_MODE_DVD_OTHER - -_pycdio.DISC_MODE_NO_INFO_swigconstant(_pycdio) DISC_MODE_NO_INFO = _pycdio.DISC_MODE_NO_INFO - -_pycdio.DISC_MODE_ERROR_swigconstant(_pycdio) DISC_MODE_ERROR = _pycdio.DISC_MODE_ERROR - -_pycdio.DISC_MODE_CD_I_swigconstant(_pycdio) DISC_MODE_CD_I = _pycdio.DISC_MODE_CD_I def get_disc_last_lsn(p_cdio): @@ -1667,8 +1090,6 @@ On error pycdio.INVALID_TRACK is returned. """ return _pycdio.get_num_tracks(p_cdio) - -_pycdio.INCLUDE_CLASS_swigconstant(_pycdio) INCLUDE_CLASS = _pycdio.INCLUDE_CLASS # This file is compatible with both classic and new-style classes. diff -Nru pycdio-2.0.0/pyiso9660.py pycdio-2.1.0/pyiso9660.py --- pycdio-2.0.0/pyiso9660.py 2018-02-05 21:51:42.000000000 +0000 +++ pycdio-2.1.0/pyiso9660.py 2019-08-25 12:19:32.000000000 +0000 @@ -1,12 +1,9 @@ # This file was automatically generated by SWIG (http://www.swig.org). -# Version 3.0.10 +# Version 3.0.12 # # Do not make changes to this file unless you know what you are doing--modify # the SWIG interface file instead. - - - """ This is a wrapper for The CD Input and Control library's ISO-9660 library See also the ISO-9660 specification. The freely available European @@ -36,17 +33,18 @@ except ImportError: import _pyiso9660 return _pyiso9660 - if fp is not None: - try: - _mod = imp.load_module('_pyiso9660', fp, pathname, description) - finally: + try: + _mod = imp.load_module('_pyiso9660', fp, pathname, description) + finally: + if fp is not None: fp.close() - return _mod + return _mod _pyiso9660 = swig_import_helper() del swig_import_helper else: import _pyiso9660 del _swig_python_version_info + try: _swig_property = property except NameError: diff -Nru pycdio-2.0.0/README.rst pycdio-2.1.0/README.rst --- pycdio-2.0.0/README.rst 2018-02-05 21:51:25.000000000 +0000 +++ pycdio-2.1.0/README.rst 2019-08-25 12:17:43.000000000 +0000 @@ -1,5 +1,5 @@ Introduction -============ +============== pycdio is a Python interface to the *libcdio*, the CD Input and Control library http://www.gnu.org/software/libcdio @@ -55,7 +55,7 @@ Other sample code can be found in the *example* directory of the distribution. Requirements -============ +============= * A C compiler so the extension can be compiled when it is installed. * libcdio (http://www.gnu.org/software/libcdio) and it's header files installed. @@ -63,18 +63,44 @@ * pkg-config http://pkg-config.freedesktop.org To build on Debian (e.g. Ubuntu): ---------------------------------- +------------------------------------- :: - apt-get install python-dev - apt-get install libcdio-dev - apt-get install libiso9660-dev - apt-get install swig pkg-config + $ apt-get install python-dev + $ apt-get install libcdio-dev + $ apt-get install libiso9660-dev + $ apt-get install swig pkg-config + $ pip install -e . + $ make check + +SWIG Problems +=============== + +I've tried to make this work back to Python 2.3 or so. + +I've noticed however problems in various distutils. + +If you see a message like this when running `make check`: + +:: + File "/home/rocky/.pyenv/versions/3.5.6/lib/python3.5/distutils/unixccompiler.py", line 207, in library_dir_option + return "-L" + dir + TypeError: Can't convert 'bytes' object to str implicitly + + +Copy in a recent ditutils `unixccompiler.py` like this: + +:: + + $ cp admin-tools/unixccompiler.py /home/rocky/.pyenv/versions/3.5.6/lib/python3.5/distutils/unixccompiler.py + +The distutils distribution says that it tries to be compatible with all Python versions from 2.3. The +`unixccompiler.py` in `admin_tools` is from the Python 3.7.4 distribution. Completeness -============ +============= *libcdio* is rather large and yet may still grow a bit. diff -Nru pycdio-2.0.0/setup.cfg pycdio-2.1.0/setup.cfg --- pycdio-2.0.0/setup.cfg 2018-02-06 00:36:25.000000000 +0000 +++ pycdio-2.1.0/setup.cfg 2019-08-25 12:19:34.000000000 +0000 @@ -11,5 +11,4 @@ [egg_info] tag_build = tag_date = 0 -tag_svn_revision = 0 diff -Nru pycdio-2.0.0/setup.py pycdio-2.1.0/setup.py --- pycdio-2.0.0/setup.py 2018-02-05 21:51:25.000000000 +0000 +++ pycdio-2.1.0/setup.py 2019-08-25 11:33:36.000000000 +0000 @@ -1,5 +1,5 @@ #!/usr/bin/env python -# Copyright (C) 2015, 2018 Rocky Bernstein +# Copyright (C) 2015, 2018-2019 Rocky Bernstein # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -20,8 +20,16 @@ """ # Get the required package information -from __pkginfo__ import modname, VERSION, license, short_desc, \ - web, author, author_email, classifiers +from __pkginfo__ import ( + modname, + VERSION, + license, + short_desc, + web, + author, + author_email, + classifiers, +) from setuptools import setup from distutils.core import Extension @@ -30,53 +38,62 @@ import os import shutil +import sys + +OVER_PYTHON_25 = sys.version_info[0:1] >= (2, 5) top_dir = os.path.dirname(os.path.abspath(__file__)) -README = os.path.join(top_dir, 'README.rst') -pkg_config = os.getenv('PKG_CONFIG') or 'pkg-config' +README = os.path.join(top_dir, "README.rst") +pkg_config = os.getenv("PKG_CONFIG") or "pkg-config" + def rm_file(*paths): - global top_dir - toast = os.path.join(top_dir, *paths) - try: - os.remove(toast) - except: - pass - return + global top_dir + toast = os.path.join(top_dir, *paths) + try: + os.remove(toast) + except: + pass + return + # Description in package will come from the README file. -long_description = open(README).read() + '\n\n' +long_description = open(README).read() + "\n\n" # We store swig sources in ./swig, but we want the generated python # module not to appear in that directory, but instead in the top-level # directory where we have the other modules. I'd move *all* of the modules # to their own directory if I knew how to do that in distutils. -swig_opts = ['-outdir', top_dir] +swig_opts = ["-outdir", top_dir] + class custom_build(build): # Reorder build commands such that swig generated files are also copied. - sub_commands = [('build_ext', build.has_ext_modules), - ('build_py', build.has_pure_modules), - ('build_clib', build.has_c_libraries), - ('build_scripts', build.has_scripts)] + sub_commands = [ + ("build_ext", build.has_ext_modules), + ("build_py", build.has_pure_modules), + ("build_clib", build.has_c_libraries), + ("build_scripts", build.has_scripts), + ] def run(self): # Account for API change after 0.83 - ge_2 = call([pkg_config,'--atleast-version=2.0.0','libcdio']) + ge_2 = call([pkg_config, "--atleast-version=2.0.0", "libcdio"]) assert ge_2 == 0, "Need at least libcdio 2.0.0 to use this" print("libcdio version >= 2.0.0") build.run(self) + # Find runtime library directories for libcdio and libiso9660 using # pkg-config. Then create the right Extension object lists which later # get fed into setup()'s list of ext_modules. modules = [] -for lib_name in ('libcdio', 'libiso9660'): - short_libname = lib_name[3:] # Strip off "lib" from name +for lib_name in ("libcdio", "libiso9660"): + short_libname = lib_name[3:] # Strip off "lib" from name # FIXME: DRY this code. try: - p = Popen([pkg_config, '--libs-only-L', lib_name], stdout=PIPE) + p = Popen([pkg_config, "--libs-only-L", lib_name], stdout=PIPE) except: print("** Error trying to run pkg-config. Is it installed?") print("** If not, see http://pkg-config.freedesktop.org") @@ -85,47 +102,62 @@ if p.returncode is None: # Strip off blanks and initial '-L' - dirs = p.communicate()[0].split(b'-L')[1:] + L_flag = "-L" + if OVER_PYTHON_25: L_flag = bytes(L_flag, "utf-8") + dirs = p.communicate()[0].split(L_flag)[1:] runtime_lib_dirs = [d.strip() for d in dirs] else: - print(("** Didn't the normal return code running pkg-config," + - "on %s. got:\n\t%s" % [lib_name, p.returncode])) + print( + ( + "** Didn't the normal return code running pkg-config," + + "on %s. got:\n\t%s" % [lib_name, p.returncode] + ) + ) print("** Will try to add %s anyway." % short_libname) runtime_lib_dirs = None library_dirs = runtime_lib_dirs - p = Popen([pkg_config, '--cflags-only-I', lib_name], stdout=PIPE) + p = Popen([pkg_config, "--cflags-only-I", lib_name], stdout=PIPE) if p.returncode is None: - # String starts '-I' so the first entry is ''; Discard that, - # the others we want. - dirs = p.communicate()[0].split(b'-I')[1:] + # String starts '-I' so the first entry is ''; Discard that, + # the others we want. + I_flag = "-I" + if OVER_PYTHON_25: I_flag = bytes(I_flag, "utf-8") + dirs = p.communicate()[0].split(I_flag)[1:] include_dirs = [d.strip() for d in dirs] - p = Popen([pkg_config, '--libs-only-l', lib_name], stdout=PIPE) + p = Popen([pkg_config, "--libs-only-l", lib_name], stdout=PIPE) if p.returncode is None: - # String starts '-l' so the first entry is ''; Discard that, - # the others we want. - dirs = p.communicate()[0].split(b'-l')[1:] + # String starts '-l' so the first entry is ''; Discard that, + # the others we want. + l_flag = "-l" + if OVER_PYTHON_25: l_flag = bytes(l_flag, "utf-8") + dirs = p.communicate()[0].split(l_flag)[1:] libraries = [d.strip().decode("utf-8") for d in dirs] pass - py_shortname = 'py' + short_libname - modules.append(Extension('_' + py_shortname, - libraries = libraries, - swig_opts = swig_opts, - include_dirs=include_dirs, - library_dirs=library_dirs, - runtime_library_dirs=runtime_lib_dirs, - sources=['swig/%s.i' % py_shortname])) - -setup (author = author, - author_email = author_email, - classifiers = classifiers, - cmdclass = {'build': custom_build}, - description = short_desc, - ext_modules = modules, - license = license, - long_description = long_description, - name = modname, - py_modules = ['cdio', 'iso9660', 'pycdio', 'pyiso9660'], - test_suite = 'nose.collector', - url = web, - version = VERSION, - ) + py_shortname = "py" + short_libname + modules.append( + Extension( + "_" + py_shortname, + libraries=libraries, + swig_opts=swig_opts, + include_dirs=include_dirs, + library_dirs=library_dirs, + runtime_library_dirs=runtime_lib_dirs, + sources=["swig/%s.i" % py_shortname], + ) + ) + +setup( + author=author, + author_email=author_email, + classifiers=classifiers, + cmdclass={"build": custom_build}, + description=short_desc, + ext_modules=modules, + license=license, + long_description=long_description, + name=modname, + py_modules=["cdio", "iso9660", "pycdio", "pyiso9660"], + test_suite="nose.collector", + url=web, + version=VERSION, +) diff -Nru pycdio-2.0.0/VERSION.py pycdio-2.1.0/VERSION.py --- pycdio-2.0.0/VERSION.py 2018-02-05 21:51:25.000000000 +0000 +++ pycdio-2.1.0/VERSION.py 2019-08-25 11:54:03.000000000 +0000 @@ -4,4 +4,4 @@ # This file should define a variable VERSION which we use as the # debugger version number. -VERSION='2.0.0' +VERSION='2.1.0'