PythonExtensionsCollection 0.2.0__py3-none-any.whl → 0.13.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. PythonExtensionsCollection/Comparison/CComparison.py +341 -0
  2. PythonExtensionsCollection/Comparison/__init__.py +13 -0
  3. PythonExtensionsCollection/File/CFile.py +326 -106
  4. PythonExtensionsCollection/File/__init__.py +1 -1
  5. PythonExtensionsCollection/Folder/CFolder.py +460 -0
  6. PythonExtensionsCollection/Folder/__init__.py +13 -0
  7. PythonExtensionsCollection/PythonExtensionsCollection.pdf +0 -0
  8. PythonExtensionsCollection/String/CString.py +128 -344
  9. PythonExtensionsCollection/String/__init__.py +1 -1
  10. PythonExtensionsCollection/Utils/CUtils.py +77 -74
  11. PythonExtensionsCollection/Utils/__init__.py +1 -1
  12. PythonExtensionsCollection/__init__.py +1 -1
  13. PythonExtensionsCollection/version.py +23 -0
  14. {PythonExtensionsCollection-0.2.0.dist-info → PythonExtensionsCollection-0.13.0.dist-info}/METADATA +57 -44
  15. PythonExtensionsCollection-0.13.0.dist-info/RECORD +18 -0
  16. {PythonExtensionsCollection-0.2.0.dist-info → PythonExtensionsCollection-0.13.0.dist-info}/WHEEL +1 -1
  17. PythonExtensionsCollection/doc/.buildinfo +0 -4
  18. PythonExtensionsCollection/doc/File.html +0 -315
  19. PythonExtensionsCollection/doc/String.html +0 -590
  20. PythonExtensionsCollection/doc/Utils.html +0 -209
  21. PythonExtensionsCollection/doc/_modules/PythonExtensionsCollection/File/CFile.html +0 -960
  22. PythonExtensionsCollection/doc/_modules/PythonExtensionsCollection/String/CString.html +0 -1221
  23. PythonExtensionsCollection/doc/_modules/PythonExtensionsCollection/Utils/CUtils.html +0 -431
  24. PythonExtensionsCollection/doc/_modules/index.html +0 -106
  25. PythonExtensionsCollection/doc/_sources/File.rst.txt +0 -28
  26. PythonExtensionsCollection/doc/_sources/String.rst.txt +0 -28
  27. PythonExtensionsCollection/doc/_sources/Utils.rst.txt +0 -28
  28. PythonExtensionsCollection/doc/_sources/additional_doc/Introduction.rst.txt +0 -365
  29. PythonExtensionsCollection/doc/_sources/index.rst.txt +0 -27
  30. PythonExtensionsCollection/doc/_static/_sphinx_javascript_frameworks_compat.js +0 -134
  31. PythonExtensionsCollection/doc/_static/alabaster.css +0 -701
  32. PythonExtensionsCollection/doc/_static/basic.css +0 -930
  33. PythonExtensionsCollection/doc/_static/custom.css +0 -1
  34. PythonExtensionsCollection/doc/_static/doctools.js +0 -264
  35. PythonExtensionsCollection/doc/_static/documentation_options.js +0 -14
  36. PythonExtensionsCollection/doc/_static/file.png +0 -0
  37. PythonExtensionsCollection/doc/_static/jquery-3.6.0.js +0 -10881
  38. PythonExtensionsCollection/doc/_static/jquery.js +0 -2
  39. PythonExtensionsCollection/doc/_static/language_data.js +0 -199
  40. PythonExtensionsCollection/doc/_static/minus.png +0 -0
  41. PythonExtensionsCollection/doc/_static/plus.png +0 -0
  42. PythonExtensionsCollection/doc/_static/pygments.css +0 -82
  43. PythonExtensionsCollection/doc/_static/searchtools.js +0 -531
  44. PythonExtensionsCollection/doc/_static/underscore-1.13.1.js +0 -2042
  45. PythonExtensionsCollection/doc/_static/underscore.js +0 -6
  46. PythonExtensionsCollection/doc/additional_doc/Introduction.html +0 -365
  47. PythonExtensionsCollection/doc/genindex.html +0 -292
  48. PythonExtensionsCollection/doc/index.html +0 -123
  49. PythonExtensionsCollection/doc/objects.inv +0 -0
  50. PythonExtensionsCollection/doc/py-modindex.html +0 -138
  51. PythonExtensionsCollection/doc/search.html +0 -127
  52. PythonExtensionsCollection/doc/searchindex.js +0 -1
  53. PythonExtensionsCollection-0.2.0.dist-info/RECORD +0 -48
  54. {PythonExtensionsCollection-0.2.0.dist-info → PythonExtensionsCollection-0.13.0.dist-info}/LICENSE +0 -0
  55. {PythonExtensionsCollection-0.2.0.dist-info → PythonExtensionsCollection-0.13.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +0,0 @@
1
- !function(n,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define("underscore",r):(n="undefined"!=typeof globalThis?globalThis:n||self,function(){var t=n._,e=n._=r();e.noConflict=function(){return n._=t,e}}())}(this,(function(){
2
- // Underscore.js 1.13.1
3
- // https://underscorejs.org
4
- // (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors
5
- // Underscore may be freely distributed under the MIT license.
6
- var n="1.13.1",r="object"==typeof self&&self.self===self&&self||"object"==typeof global&&global.global===global&&global||Function("return this")()||{},t=Array.prototype,e=Object.prototype,u="undefined"!=typeof Symbol?Symbol.prototype:null,o=t.push,i=t.slice,a=e.toString,f=e.hasOwnProperty,c="undefined"!=typeof ArrayBuffer,l="undefined"!=typeof DataView,s=Array.isArray,p=Object.keys,v=Object.create,h=c&&ArrayBuffer.isView,y=isNaN,d=isFinite,g=!{toString:null}.propertyIsEnumerable("toString"),b=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],m=Math.pow(2,53)-1;function j(n,r){return r=null==r?n.length-1:+r,function(){for(var t=Math.max(arguments.length-r,0),e=Array(t),u=0;u<t;u++)e[u]=arguments[u+r];switch(r){case 0:return n.call(this,e);case 1:return n.call(this,arguments[0],e);case 2:return n.call(this,arguments[0],arguments[1],e)}var o=Array(r+1);for(u=0;u<r;u++)o[u]=arguments[u];return o[r]=e,n.apply(this,o)}}function _(n){var r=typeof n;return"function"===r||"object"===r&&!!n}function w(n){return void 0===n}function A(n){return!0===n||!1===n||"[object Boolean]"===a.call(n)}function x(n){var r="[object "+n+"]";return function(n){return a.call(n)===r}}var S=x("String"),O=x("Number"),M=x("Date"),E=x("RegExp"),B=x("Error"),N=x("Symbol"),I=x("ArrayBuffer"),T=x("Function"),k=r.document&&r.document.childNodes;"function"!=typeof/./&&"object"!=typeof Int8Array&&"function"!=typeof k&&(T=function(n){return"function"==typeof n||!1});var D=T,R=x("Object"),F=l&&R(new DataView(new ArrayBuffer(8))),V="undefined"!=typeof Map&&R(new Map),P=x("DataView");var q=F?function(n){return null!=n&&D(n.getInt8)&&I(n.buffer)}:P,U=s||x("Array");function W(n,r){return null!=n&&f.call(n,r)}var z=x("Arguments");!function(){z(arguments)||(z=function(n){return W(n,"callee")})}();var L=z;function $(n){return O(n)&&y(n)}function C(n){return function(){return n}}function K(n){return function(r){var t=n(r);return"number"==typeof t&&t>=0&&t<=m}}function J(n){return function(r){return null==r?void 0:r[n]}}var G=J("byteLength"),H=K(G),Q=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;var X=c?function(n){return h?h(n)&&!q(n):H(n)&&Q.test(a.call(n))}:C(!1),Y=J("length");function Z(n,r){r=function(n){for(var r={},t=n.length,e=0;e<t;++e)r[n[e]]=!0;return{contains:function(n){return r[n]},push:function(t){return r[t]=!0,n.push(t)}}}(r);var t=b.length,u=n.constructor,o=D(u)&&u.prototype||e,i="constructor";for(W(n,i)&&!r.contains(i)&&r.push(i);t--;)(i=b[t])in n&&n[i]!==o[i]&&!r.contains(i)&&r.push(i)}function nn(n){if(!_(n))return[];if(p)return p(n);var r=[];for(var t in n)W(n,t)&&r.push(t);return g&&Z(n,r),r}function rn(n,r){var t=nn(r),e=t.length;if(null==n)return!e;for(var u=Object(n),o=0;o<e;o++){var i=t[o];if(r[i]!==u[i]||!(i in u))return!1}return!0}function tn(n){return n instanceof tn?n:this instanceof tn?void(this._wrapped=n):new tn(n)}function en(n){return new Uint8Array(n.buffer||n,n.byteOffset||0,G(n))}tn.VERSION=n,tn.prototype.value=function(){return this._wrapped},tn.prototype.valueOf=tn.prototype.toJSON=tn.prototype.value,tn.prototype.toString=function(){return String(this._wrapped)};var un="[object DataView]";function on(n,r,t,e){if(n===r)return 0!==n||1/n==1/r;if(null==n||null==r)return!1;if(n!=n)return r!=r;var o=typeof n;return("function"===o||"object"===o||"object"==typeof r)&&function n(r,t,e,o){r instanceof tn&&(r=r._wrapped);t instanceof tn&&(t=t._wrapped);var i=a.call(r);if(i!==a.call(t))return!1;if(F&&"[object Object]"==i&&q(r)){if(!q(t))return!1;i=un}switch(i){case"[object RegExp]":case"[object String]":return""+r==""+t;case"[object Number]":return+r!=+r?+t!=+t:0==+r?1/+r==1/t:+r==+t;case"[object Date]":case"[object Boolean]":return+r==+t;case"[object Symbol]":return u.valueOf.call(r)===u.valueOf.call(t);case"[object ArrayBuffer]":case un:return n(en(r),en(t),e,o)}var f="[object Array]"===i;if(!f&&X(r)){if(G(r)!==G(t))return!1;if(r.buffer===t.buffer&&r.byteOffset===t.byteOffset)return!0;f=!0}if(!f){if("object"!=typeof r||"object"!=typeof t)return!1;var c=r.constructor,l=t.constructor;if(c!==l&&!(D(c)&&c instanceof c&&D(l)&&l instanceof l)&&"constructor"in r&&"constructor"in t)return!1}o=o||[];var s=(e=e||[]).length;for(;s--;)if(e[s]===r)return o[s]===t;if(e.push(r),o.push(t),f){if((s=r.length)!==t.length)return!1;for(;s--;)if(!on(r[s],t[s],e,o))return!1}else{var p,v=nn(r);if(s=v.length,nn(t).length!==s)return!1;for(;s--;)if(p=v[s],!W(t,p)||!on(r[p],t[p],e,o))return!1}return e.pop(),o.pop(),!0}(n,r,t,e)}function an(n){if(!_(n))return[];var r=[];for(var t in n)r.push(t);return g&&Z(n,r),r}function fn(n){var r=Y(n);return function(t){if(null==t)return!1;var e=an(t);if(Y(e))return!1;for(var u=0;u<r;u++)if(!D(t[n[u]]))return!1;return n!==hn||!D(t[cn])}}var cn="forEach",ln="has",sn=["clear","delete"],pn=["get",ln,"set"],vn=sn.concat(cn,pn),hn=sn.concat(pn),yn=["add"].concat(sn,cn,ln),dn=V?fn(vn):x("Map"),gn=V?fn(hn):x("WeakMap"),bn=V?fn(yn):x("Set"),mn=x("WeakSet");function jn(n){for(var r=nn(n),t=r.length,e=Array(t),u=0;u<t;u++)e[u]=n[r[u]];return e}function _n(n){for(var r={},t=nn(n),e=0,u=t.length;e<u;e++)r[n[t[e]]]=t[e];return r}function wn(n){var r=[];for(var t in n)D(n[t])&&r.push(t);return r.sort()}function An(n,r){return function(t){var e=arguments.length;if(r&&(t=Object(t)),e<2||null==t)return t;for(var u=1;u<e;u++)for(var o=arguments[u],i=n(o),a=i.length,f=0;f<a;f++){var c=i[f];r&&void 0!==t[c]||(t[c]=o[c])}return t}}var xn=An(an),Sn=An(nn),On=An(an,!0);function Mn(n){if(!_(n))return{};if(v)return v(n);var r=function(){};r.prototype=n;var t=new r;return r.prototype=null,t}function En(n){return _(n)?U(n)?n.slice():xn({},n):n}function Bn(n){return U(n)?n:[n]}function Nn(n){return tn.toPath(n)}function In(n,r){for(var t=r.length,e=0;e<t;e++){if(null==n)return;n=n[r[e]]}return t?n:void 0}function Tn(n,r,t){var e=In(n,Nn(r));return w(e)?t:e}function kn(n){return n}function Dn(n){return n=Sn({},n),function(r){return rn(r,n)}}function Rn(n){return n=Nn(n),function(r){return In(r,n)}}function Fn(n,r,t){if(void 0===r)return n;switch(null==t?3:t){case 1:return function(t){return n.call(r,t)};case 3:return function(t,e,u){return n.call(r,t,e,u)};case 4:return function(t,e,u,o){return n.call(r,t,e,u,o)}}return function(){return n.apply(r,arguments)}}function Vn(n,r,t){return null==n?kn:D(n)?Fn(n,r,t):_(n)&&!U(n)?Dn(n):Rn(n)}function Pn(n,r){return Vn(n,r,1/0)}function qn(n,r,t){return tn.iteratee!==Pn?tn.iteratee(n,r):Vn(n,r,t)}function Un(){}function Wn(n,r){return null==r&&(r=n,n=0),n+Math.floor(Math.random()*(r-n+1))}tn.toPath=Bn,tn.iteratee=Pn;var zn=Date.now||function(){return(new Date).getTime()};function Ln(n){var r=function(r){return n[r]},t="(?:"+nn(n).join("|")+")",e=RegExp(t),u=RegExp(t,"g");return function(n){return n=null==n?"":""+n,e.test(n)?n.replace(u,r):n}}var $n={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},Cn=Ln($n),Kn=Ln(_n($n)),Jn=tn.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g},Gn=/(.)^/,Hn={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},Qn=/\\|'|\r|\n|\u2028|\u2029/g;function Xn(n){return"\\"+Hn[n]}var Yn=/^\s*(\w|\$)+\s*$/;var Zn=0;function nr(n,r,t,e,u){if(!(e instanceof r))return n.apply(t,u);var o=Mn(n.prototype),i=n.apply(o,u);return _(i)?i:o}var rr=j((function(n,r){var t=rr.placeholder,e=function(){for(var u=0,o=r.length,i=Array(o),a=0;a<o;a++)i[a]=r[a]===t?arguments[u++]:r[a];for(;u<arguments.length;)i.push(arguments[u++]);return nr(n,e,this,this,i)};return e}));rr.placeholder=tn;var tr=j((function(n,r,t){if(!D(n))throw new TypeError("Bind must be called on a function");var e=j((function(u){return nr(n,e,r,this,t.concat(u))}));return e})),er=K(Y);function ur(n,r,t,e){if(e=e||[],r||0===r){if(r<=0)return e.concat(n)}else r=1/0;for(var u=e.length,o=0,i=Y(n);o<i;o++){var a=n[o];if(er(a)&&(U(a)||L(a)))if(r>1)ur(a,r-1,t,e),u=e.length;else for(var f=0,c=a.length;f<c;)e[u++]=a[f++];else t||(e[u++]=a)}return e}var or=j((function(n,r){var t=(r=ur(r,!1,!1)).length;if(t<1)throw new Error("bindAll must be passed function names");for(;t--;){var e=r[t];n[e]=tr(n[e],n)}return n}));var ir=j((function(n,r,t){return setTimeout((function(){return n.apply(null,t)}),r)})),ar=rr(ir,tn,1);function fr(n){return function(){return!n.apply(this,arguments)}}function cr(n,r){var t;return function(){return--n>0&&(t=r.apply(this,arguments)),n<=1&&(r=null),t}}var lr=rr(cr,2);function sr(n,r,t){r=qn(r,t);for(var e,u=nn(n),o=0,i=u.length;o<i;o++)if(r(n[e=u[o]],e,n))return e}function pr(n){return function(r,t,e){t=qn(t,e);for(var u=Y(r),o=n>0?0:u-1;o>=0&&o<u;o+=n)if(t(r[o],o,r))return o;return-1}}var vr=pr(1),hr=pr(-1);function yr(n,r,t,e){for(var u=(t=qn(t,e,1))(r),o=0,i=Y(n);o<i;){var a=Math.floor((o+i)/2);t(n[a])<u?o=a+1:i=a}return o}function dr(n,r,t){return function(e,u,o){var a=0,f=Y(e);if("number"==typeof o)n>0?a=o>=0?o:Math.max(o+f,a):f=o>=0?Math.min(o+1,f):o+f+1;else if(t&&o&&f)return e[o=t(e,u)]===u?o:-1;if(u!=u)return(o=r(i.call(e,a,f),$))>=0?o+a:-1;for(o=n>0?a:f-1;o>=0&&o<f;o+=n)if(e[o]===u)return o;return-1}}var gr=dr(1,vr,yr),br=dr(-1,hr);function mr(n,r,t){var e=(er(n)?vr:sr)(n,r,t);if(void 0!==e&&-1!==e)return n[e]}function jr(n,r,t){var e,u;if(r=Fn(r,t),er(n))for(e=0,u=n.length;e<u;e++)r(n[e],e,n);else{var o=nn(n);for(e=0,u=o.length;e<u;e++)r(n[o[e]],o[e],n)}return n}function _r(n,r,t){r=qn(r,t);for(var e=!er(n)&&nn(n),u=(e||n).length,o=Array(u),i=0;i<u;i++){var a=e?e[i]:i;o[i]=r(n[a],a,n)}return o}function wr(n){var r=function(r,t,e,u){var o=!er(r)&&nn(r),i=(o||r).length,a=n>0?0:i-1;for(u||(e=r[o?o[a]:a],a+=n);a>=0&&a<i;a+=n){var f=o?o[a]:a;e=t(e,r[f],f,r)}return e};return function(n,t,e,u){var o=arguments.length>=3;return r(n,Fn(t,u,4),e,o)}}var Ar=wr(1),xr=wr(-1);function Sr(n,r,t){var e=[];return r=qn(r,t),jr(n,(function(n,t,u){r(n,t,u)&&e.push(n)})),e}function Or(n,r,t){r=qn(r,t);for(var e=!er(n)&&nn(n),u=(e||n).length,o=0;o<u;o++){var i=e?e[o]:o;if(!r(n[i],i,n))return!1}return!0}function Mr(n,r,t){r=qn(r,t);for(var e=!er(n)&&nn(n),u=(e||n).length,o=0;o<u;o++){var i=e?e[o]:o;if(r(n[i],i,n))return!0}return!1}function Er(n,r,t,e){return er(n)||(n=jn(n)),("number"!=typeof t||e)&&(t=0),gr(n,r,t)>=0}var Br=j((function(n,r,t){var e,u;return D(r)?u=r:(r=Nn(r),e=r.slice(0,-1),r=r[r.length-1]),_r(n,(function(n){var o=u;if(!o){if(e&&e.length&&(n=In(n,e)),null==n)return;o=n[r]}return null==o?o:o.apply(n,t)}))}));function Nr(n,r){return _r(n,Rn(r))}function Ir(n,r,t){var e,u,o=-1/0,i=-1/0;if(null==r||"number"==typeof r&&"object"!=typeof n[0]&&null!=n)for(var a=0,f=(n=er(n)?n:jn(n)).length;a<f;a++)null!=(e=n[a])&&e>o&&(o=e);else r=qn(r,t),jr(n,(function(n,t,e){((u=r(n,t,e))>i||u===-1/0&&o===-1/0)&&(o=n,i=u)}));return o}function Tr(n,r,t){if(null==r||t)return er(n)||(n=jn(n)),n[Wn(n.length-1)];var e=er(n)?En(n):jn(n),u=Y(e);r=Math.max(Math.min(r,u),0);for(var o=u-1,i=0;i<r;i++){var a=Wn(i,o),f=e[i];e[i]=e[a],e[a]=f}return e.slice(0,r)}function kr(n,r){return function(t,e,u){var o=r?[[],[]]:{};return e=qn(e,u),jr(t,(function(r,u){var i=e(r,u,t);n(o,r,i)})),o}}var Dr=kr((function(n,r,t){W(n,t)?n[t].push(r):n[t]=[r]})),Rr=kr((function(n,r,t){n[t]=r})),Fr=kr((function(n,r,t){W(n,t)?n[t]++:n[t]=1})),Vr=kr((function(n,r,t){n[t?0:1].push(r)}),!0),Pr=/[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g;function qr(n,r,t){return r in t}var Ur=j((function(n,r){var t={},e=r[0];if(null==n)return t;D(e)?(r.length>1&&(e=Fn(e,r[1])),r=an(n)):(e=qr,r=ur(r,!1,!1),n=Object(n));for(var u=0,o=r.length;u<o;u++){var i=r[u],a=n[i];e(a,i,n)&&(t[i]=a)}return t})),Wr=j((function(n,r){var t,e=r[0];return D(e)?(e=fr(e),r.length>1&&(t=r[1])):(r=_r(ur(r,!1,!1),String),e=function(n,t){return!Er(r,t)}),Ur(n,e,t)}));function zr(n,r,t){return i.call(n,0,Math.max(0,n.length-(null==r||t?1:r)))}function Lr(n,r,t){return null==n||n.length<1?null==r||t?void 0:[]:null==r||t?n[0]:zr(n,n.length-r)}function $r(n,r,t){return i.call(n,null==r||t?1:r)}var Cr=j((function(n,r){return r=ur(r,!0,!0),Sr(n,(function(n){return!Er(r,n)}))})),Kr=j((function(n,r){return Cr(n,r)}));function Jr(n,r,t,e){A(r)||(e=t,t=r,r=!1),null!=t&&(t=qn(t,e));for(var u=[],o=[],i=0,a=Y(n);i<a;i++){var f=n[i],c=t?t(f,i,n):f;r&&!t?(i&&o===c||u.push(f),o=c):t?Er(o,c)||(o.push(c),u.push(f)):Er(u,f)||u.push(f)}return u}var Gr=j((function(n){return Jr(ur(n,!0,!0))}));function Hr(n){for(var r=n&&Ir(n,Y).length||0,t=Array(r),e=0;e<r;e++)t[e]=Nr(n,e);return t}var Qr=j(Hr);function Xr(n,r){return n._chain?tn(r).chain():r}function Yr(n){return jr(wn(n),(function(r){var t=tn[r]=n[r];tn.prototype[r]=function(){var n=[this._wrapped];return o.apply(n,arguments),Xr(this,t.apply(tn,n))}})),tn}jr(["pop","push","reverse","shift","sort","splice","unshift"],(function(n){var r=t[n];tn.prototype[n]=function(){var t=this._wrapped;return null!=t&&(r.apply(t,arguments),"shift"!==n&&"splice"!==n||0!==t.length||delete t[0]),Xr(this,t)}})),jr(["concat","join","slice"],(function(n){var r=t[n];tn.prototype[n]=function(){var n=this._wrapped;return null!=n&&(n=r.apply(n,arguments)),Xr(this,n)}}));var Zr=Yr({__proto__:null,VERSION:n,restArguments:j,isObject:_,isNull:function(n){return null===n},isUndefined:w,isBoolean:A,isElement:function(n){return!(!n||1!==n.nodeType)},isString:S,isNumber:O,isDate:M,isRegExp:E,isError:B,isSymbol:N,isArrayBuffer:I,isDataView:q,isArray:U,isFunction:D,isArguments:L,isFinite:function(n){return!N(n)&&d(n)&&!isNaN(parseFloat(n))},isNaN:$,isTypedArray:X,isEmpty:function(n){if(null==n)return!0;var r=Y(n);return"number"==typeof r&&(U(n)||S(n)||L(n))?0===r:0===Y(nn(n))},isMatch:rn,isEqual:function(n,r){return on(n,r)},isMap:dn,isWeakMap:gn,isSet:bn,isWeakSet:mn,keys:nn,allKeys:an,values:jn,pairs:function(n){for(var r=nn(n),t=r.length,e=Array(t),u=0;u<t;u++)e[u]=[r[u],n[r[u]]];return e},invert:_n,functions:wn,methods:wn,extend:xn,extendOwn:Sn,assign:Sn,defaults:On,create:function(n,r){var t=Mn(n);return r&&Sn(t,r),t},clone:En,tap:function(n,r){return r(n),n},get:Tn,has:function(n,r){for(var t=(r=Nn(r)).length,e=0;e<t;e++){var u=r[e];if(!W(n,u))return!1;n=n[u]}return!!t},mapObject:function(n,r,t){r=qn(r,t);for(var e=nn(n),u=e.length,o={},i=0;i<u;i++){var a=e[i];o[a]=r(n[a],a,n)}return o},identity:kn,constant:C,noop:Un,toPath:Bn,property:Rn,propertyOf:function(n){return null==n?Un:function(r){return Tn(n,r)}},matcher:Dn,matches:Dn,times:function(n,r,t){var e=Array(Math.max(0,n));r=Fn(r,t,1);for(var u=0;u<n;u++)e[u]=r(u);return e},random:Wn,now:zn,escape:Cn,unescape:Kn,templateSettings:Jn,template:function(n,r,t){!r&&t&&(r=t),r=On({},r,tn.templateSettings);var e=RegExp([(r.escape||Gn).source,(r.interpolate||Gn).source,(r.evaluate||Gn).source].join("|")+"|$","g"),u=0,o="__p+='";n.replace(e,(function(r,t,e,i,a){return o+=n.slice(u,a).replace(Qn,Xn),u=a+r.length,t?o+="'+\n((__t=("+t+"))==null?'':_.escape(__t))+\n'":e?o+="'+\n((__t=("+e+"))==null?'':__t)+\n'":i&&(o+="';\n"+i+"\n__p+='"),r})),o+="';\n";var i,a=r.variable;if(a){if(!Yn.test(a))throw new Error("variable is not a bare identifier: "+a)}else o="with(obj||{}){\n"+o+"}\n",a="obj";o="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+o+"return __p;\n";try{i=new Function(a,"_",o)}catch(n){throw n.source=o,n}var f=function(n){return i.call(this,n,tn)};return f.source="function("+a+"){\n"+o+"}",f},result:function(n,r,t){var e=(r=Nn(r)).length;if(!e)return D(t)?t.call(n):t;for(var u=0;u<e;u++){var o=null==n?void 0:n[r[u]];void 0===o&&(o=t,u=e),n=D(o)?o.call(n):o}return n},uniqueId:function(n){var r=++Zn+"";return n?n+r:r},chain:function(n){var r=tn(n);return r._chain=!0,r},iteratee:Pn,partial:rr,bind:tr,bindAll:or,memoize:function(n,r){var t=function(e){var u=t.cache,o=""+(r?r.apply(this,arguments):e);return W(u,o)||(u[o]=n.apply(this,arguments)),u[o]};return t.cache={},t},delay:ir,defer:ar,throttle:function(n,r,t){var e,u,o,i,a=0;t||(t={});var f=function(){a=!1===t.leading?0:zn(),e=null,i=n.apply(u,o),e||(u=o=null)},c=function(){var c=zn();a||!1!==t.leading||(a=c);var l=r-(c-a);return u=this,o=arguments,l<=0||l>r?(e&&(clearTimeout(e),e=null),a=c,i=n.apply(u,o),e||(u=o=null)):e||!1===t.trailing||(e=setTimeout(f,l)),i};return c.cancel=function(){clearTimeout(e),a=0,e=u=o=null},c},debounce:function(n,r,t){var e,u,o,i,a,f=function(){var c=zn()-u;r>c?e=setTimeout(f,r-c):(e=null,t||(i=n.apply(a,o)),e||(o=a=null))},c=j((function(c){return a=this,o=c,u=zn(),e||(e=setTimeout(f,r),t&&(i=n.apply(a,o))),i}));return c.cancel=function(){clearTimeout(e),e=o=a=null},c},wrap:function(n,r){return rr(r,n)},negate:fr,compose:function(){var n=arguments,r=n.length-1;return function(){for(var t=r,e=n[r].apply(this,arguments);t--;)e=n[t].call(this,e);return e}},after:function(n,r){return function(){if(--n<1)return r.apply(this,arguments)}},before:cr,once:lr,findKey:sr,findIndex:vr,findLastIndex:hr,sortedIndex:yr,indexOf:gr,lastIndexOf:br,find:mr,detect:mr,findWhere:function(n,r){return mr(n,Dn(r))},each:jr,forEach:jr,map:_r,collect:_r,reduce:Ar,foldl:Ar,inject:Ar,reduceRight:xr,foldr:xr,filter:Sr,select:Sr,reject:function(n,r,t){return Sr(n,fr(qn(r)),t)},every:Or,all:Or,some:Mr,any:Mr,contains:Er,includes:Er,include:Er,invoke:Br,pluck:Nr,where:function(n,r){return Sr(n,Dn(r))},max:Ir,min:function(n,r,t){var e,u,o=1/0,i=1/0;if(null==r||"number"==typeof r&&"object"!=typeof n[0]&&null!=n)for(var a=0,f=(n=er(n)?n:jn(n)).length;a<f;a++)null!=(e=n[a])&&e<o&&(o=e);else r=qn(r,t),jr(n,(function(n,t,e){((u=r(n,t,e))<i||u===1/0&&o===1/0)&&(o=n,i=u)}));return o},shuffle:function(n){return Tr(n,1/0)},sample:Tr,sortBy:function(n,r,t){var e=0;return r=qn(r,t),Nr(_r(n,(function(n,t,u){return{value:n,index:e++,criteria:r(n,t,u)}})).sort((function(n,r){var t=n.criteria,e=r.criteria;if(t!==e){if(t>e||void 0===t)return 1;if(t<e||void 0===e)return-1}return n.index-r.index})),"value")},groupBy:Dr,indexBy:Rr,countBy:Fr,partition:Vr,toArray:function(n){return n?U(n)?i.call(n):S(n)?n.match(Pr):er(n)?_r(n,kn):jn(n):[]},size:function(n){return null==n?0:er(n)?n.length:nn(n).length},pick:Ur,omit:Wr,first:Lr,head:Lr,take:Lr,initial:zr,last:function(n,r,t){return null==n||n.length<1?null==r||t?void 0:[]:null==r||t?n[n.length-1]:$r(n,Math.max(0,n.length-r))},rest:$r,tail:$r,drop:$r,compact:function(n){return Sr(n,Boolean)},flatten:function(n,r){return ur(n,r,!1)},without:Kr,uniq:Jr,unique:Jr,union:Gr,intersection:function(n){for(var r=[],t=arguments.length,e=0,u=Y(n);e<u;e++){var o=n[e];if(!Er(r,o)){var i;for(i=1;i<t&&Er(arguments[i],o);i++);i===t&&r.push(o)}}return r},difference:Cr,unzip:Hr,transpose:Hr,zip:Qr,object:function(n,r){for(var t={},e=0,u=Y(n);e<u;e++)r?t[n[e]]=r[e]:t[n[e][0]]=n[e][1];return t},range:function(n,r,t){null==r&&(r=n||0,n=0),t||(t=r<n?-1:1);for(var e=Math.max(Math.ceil((r-n)/t),0),u=Array(e),o=0;o<e;o++,n+=t)u[o]=n;return u},chunk:function(n,r){if(null==r||r<1)return[];for(var t=[],e=0,u=n.length;e<u;)t.push(i.call(n,e,e+=r));return t},mixin:Yr,default:tn});return Zr._=Zr,Zr}));
@@ -1,365 +0,0 @@
1
-
2
- <!DOCTYPE html>
3
-
4
- <html lang="en">
5
- <head>
6
- <meta charset="utf-8" />
7
- <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
8
-
9
- <title>1. Introduction &#8212; Python Extensions Collection documentation</title>
10
- <link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
11
- <link rel="stylesheet" type="text/css" href="../_static/alabaster.css" />
12
- <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
13
- <script src="../_static/jquery.js"></script>
14
- <script src="../_static/underscore.js"></script>
15
- <script src="../_static/_sphinx_javascript_frameworks_compat.js"></script>
16
- <script src="../_static/doctools.js"></script>
17
- <link rel="index" title="Index" href="../genindex.html" />
18
- <link rel="search" title="Search" href="../search.html" />
19
- <link rel="next" title="3. CString module" href="../String.html" />
20
- <link rel="prev" title="API Contents" href="../index.html" />
21
-
22
- <link rel="stylesheet" href="../_static/custom.css" type="text/css" />
23
-
24
-
25
- <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
26
-
27
- </head><body>
28
-
29
-
30
- <div class="document">
31
- <div class="documentwrapper">
32
- <div class="bodywrapper">
33
-
34
-
35
- <div class="body" role="main">
36
-
37
- <section id="introduction">
38
- <h1><span class="section-number">1. </span>Introduction<a class="headerlink" href="#introduction" title="Permalink to this heading">¶</a></h1>
39
- <p>The Python Extensions Collection package extends the functionality of Python by some useful functions
40
- that are not available in Python immediately.</p>
41
- <p>This covers for example string operations like normalizing a path or searching
42
- for parent directories within a path.</p>
43
- <p>The Python Extensions Collection contains several Python modules and every module has to be imported separately
44
- in case of the functions inside are needed.</p>
45
- <p><strong>Path normalization</strong></p>
46
- <p>It’s not easy to handle paths - and especially the path separators - independend from the operating system.</p>
47
- <p>Under Linux it is obvious that single slashes are used as separator within paths. Whereas the Windows explorer
48
- uses single backslashes. In both operating systems web addresses contains single slashes as separator
49
- when displayed in web browsers.</p>
50
- <p>Using single backslashes within code - as content of string variables - is dangerous because the combination
51
- of a backslash and a letter can be interpreted as escape sequence - and this is maybe not the effect a user wants to have.</p>
52
- <p>To avoid unwanted escape sequences backslashes have to be masked (by the usage of two of them: <code class="docutils literal notranslate"><span class="pre">\\</span></code>). But also this
53
- could not be the best solution because there are also applications (like the Windows explorer) that are not able to handle
54
- masked backslashes. They expect to get single backslashes within a path.</p>
55
- <p>Preparing a path for best usage within code also includes collapsing redundant separators and up-level references.
56
- Python already provides functions to do this, but the outcome (path contains slashes or backslashes) depends on the
57
- operating system. And like already mentioned above also under Windows backslashes might not be the preferred choice.</p>
58
- <p>It also has to be considered that redundant separators at the beginning of an address of a local network resource
59
- (like <code class="docutils literal notranslate"><span class="pre">\\server.com</span></code>) and or inside an internet address (like <code class="docutils literal notranslate"><span class="pre">https:\\server.com</span></code>) must <strong>not</strong> be collapsed!
60
- Unfortunately the Python function <code class="docutils literal notranslate"><span class="pre">normpath</span></code> does not consider this context.</p>
61
- <p>To give the user full control about the format of a path, independend from the operating system and independend if it’s
62
- a local path, a path to a local network resource or an internet address, the function <code class="docutils literal notranslate"><span class="pre">CString::NormalizePath()</span></code> provides
63
- lot’s of parameters to influence the result.</p>
64
- <p><strong>Module import</strong></p>
65
- <p>The modules of the Python Extension Collection and their methods can be accessed in the following ways:</p>
66
- <p><em>CFile</em></p>
67
- <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">PythonExtensionsCollection.File.CFile</span> <span class="kn">import</span> <span class="n">CFile</span>
68
- <span class="o">...</span>
69
- <span class="n">sFile</span> <span class="o">=</span> <span class="sa">r</span><span class="s2">&quot;%TMP%\File.txt&quot;</span>
70
- <span class="n">oFile</span> <span class="o">=</span> <span class="n">CFile</span><span class="p">(</span><span class="n">sFile</span><span class="p">)</span>
71
- </pre></div>
72
- </div>
73
- <p>Please consider that <code class="docutils literal notranslate"><span class="pre">oFile</span></code> is an instance of the class <code class="docutils literal notranslate"><span class="pre">CFile</span></code> - <em>and not a file handle</em>.</p>
74
- <p><em>CString</em></p>
75
- <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">PythonExtensionsCollection.String.CString</span> <span class="kn">import</span> <span class="n">CString</span>
76
- <span class="o">...</span>
77
- <span class="n">sPath</span> <span class="o">=</span> <span class="n">CString</span><span class="o">.</span><span class="n">NormalizePath</span><span class="p">(</span><span class="n">sPath</span><span class="p">)</span>
78
- <span class="o">...</span>
79
- <span class="n">bAck</span> <span class="o">=</span> <span class="n">CString</span><span class="o">.</span><span class="n">StringFilter</span><span class="p">(</span><span class="n">sString</span><span class="p">,</span> <span class="o">...</span><span class="p">)</span>
80
- <span class="o">...</span>
81
- <span class="n">sResult</span> <span class="o">=</span> <span class="n">CString</span><span class="o">.</span><span class="n">FormatResult</span><span class="p">(</span><span class="n">sMethod</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">bSuccess</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sResult</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">)</span>
82
- </pre></div>
83
- </div>
84
- <p><em>CUtils</em></p>
85
- <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">PythonExtensionsCollection.Utils.CUtils</span> <span class="kn">import</span> <span class="o">*</span>
86
- <span class="o">...</span>
87
- <span class="n">PrettyPrint</span><span class="p">(</span><span class="n">oData</span><span class="p">)</span>
88
- </pre></div>
89
- </div>
90
- </section>
91
- <section id="examples">
92
- <h1><span class="section-number">2. </span>Examples<a class="headerlink" href="#examples" title="Permalink to this heading">¶</a></h1>
93
- <section id="file-access-with-cfile">
94
- <h2><span class="section-number">2.1. </span>File access with CFile<a class="headerlink" href="#file-access-with-cfile" title="Permalink to this heading">¶</a></h2>
95
- <p>The motivation for the CFile module contains two main topics:</p>
96
- <ol class="arabic simple">
97
- <li><p>More user control by introducing further parameter for file access functions. With high priority <code class="docutils literal notranslate"><span class="pre">CFile</span></code> enables the user
98
- to take care about that nothing existing is overwritten accidently.</p></li>
99
- <li><p>Hide the file handles und use the mechanism of class variables to avoid access violations independend from
100
- the way different operation systems like Windows and Unix are handling this.</p></li>
101
- </ol>
102
- <p>This shortens the code, eases the implementation and makes tests (in which this module is used) more stable.</p>
103
- <p><em>Define two variables with path and name of test files.</em></p>
104
- <p>Under Windows:</p>
105
- <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sFile_1</span> <span class="o">=</span> <span class="sa">r</span><span class="s2">&quot;%TMP%\CFile_TestFile_1.txt&quot;</span>
106
- <span class="n">sFile_2</span> <span class="o">=</span> <span class="sa">r</span><span class="s2">&quot;%TMP%\CFile_TestFile_2.txt&quot;</span>
107
- </pre></div>
108
- </div>
109
- <p>Or under Linux:</p>
110
- <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sFile_1</span> <span class="o">=</span> <span class="sa">r</span><span class="s2">&quot;/tmp/CFile_TestFile_1.txt&quot;</span>
111
- <span class="n">sFile_2</span> <span class="o">=</span> <span class="sa">r</span><span class="s2">&quot;/tmp/CFile_TestFile_2.txt&quot;</span>
112
- </pre></div>
113
- </div>
114
- <p><em>The first class instance:</em></p>
115
- <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">oFile_1</span> <span class="o">=</span> <span class="n">CFile</span><span class="p">(</span><span class="n">sFile_1</span><span class="p">)</span>
116
- </pre></div>
117
- </div>
118
- <p><code class="docutils literal notranslate"><span class="pre">oFile_1</span></code> is the instance of a class - <em>and not the file handle</em>. The file handle is hidden, the user has nothing to do with it.</p>
119
- <p>Every class instance can work with one single file only (during the complete instance lifetime) and has exclusive access to this file.</p>
120
- <p>No other class instance is allowed to use this file. Therefore the second line in the following code throws an exception:</p>
121
- <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">oFile_1_A</span> <span class="o">=</span> <span class="n">CFile</span><span class="p">(</span><span class="n">sFile_1</span><span class="p">)</span>
122
- <span class="n">oFile_1_B</span> <span class="o">=</span> <span class="n">CFile</span><span class="p">(</span><span class="n">sFile_1</span><span class="p">)</span>
123
- </pre></div>
124
- </div>
125
- <p>It’s more save to implement in this way:</p>
126
- <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">try</span><span class="p">:</span>
127
- <span class="n">oFile_1</span> <span class="o">=</span> <span class="n">CFile</span><span class="p">(</span><span class="n">sFile_1</span><span class="p">)</span>
128
- <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">reason</span><span class="p">:</span>
129
- <span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">reason</span><span class="p">))</span>
130
- </pre></div>
131
- </div>
132
- <p>For writing content to files two methods are available: <code class="docutils literal notranslate"><span class="pre">Write()</span></code> and <code class="docutils literal notranslate"><span class="pre">Append()</span></code>.</p>
133
- <p>Using <code class="docutils literal notranslate"><span class="pre">Write()</span></code> causes the class to open the file for writing (‘w’) - in case of the file is not already opened for writing.
134
- Using <code class="docutils literal notranslate"><span class="pre">Append()</span></code> causes the class to open the file for appending (‘a’) - in case of the file is not already opened for appending.</p>
135
- <p>Switching between <code class="docutils literal notranslate"><span class="pre">Write()</span></code> and <code class="docutils literal notranslate"><span class="pre">Append()</span></code> causes an intermediate file handle <code class="docutils literal notranslate"><span class="pre">close()</span></code> internally!</p>
136
- <p><em>Write some content to file:</em></p>
137
- <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">bSuccess</span><span class="p">,</span> <span class="n">sResult</span> <span class="o">=</span> <span class="n">oFile_1</span><span class="o">.</span><span class="n">Write</span><span class="p">(</span><span class="s2">&quot;A B C&quot;</span><span class="p">)</span>
138
- <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;&gt; sResult oFile_1.Write : &#39;</span><span class="si">{</span><span class="n">sResult</span><span class="si">}</span><span class="s2">&#39; / bSuccess : </span><span class="si">{</span><span class="n">bSuccess</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
139
- </pre></div>
140
- </div>
141
- <p>Most of the functions returns at least <code class="docutils literal notranslate"><span class="pre">bSuccess</span></code> and <code class="docutils literal notranslate"><span class="pre">sResult</span></code>.</p>
142
- <ul class="simple">
143
- <li><p><code class="docutils literal notranslate"><span class="pre">bSuccess</span></code> is <code class="docutils literal notranslate"><span class="pre">True</span></code> in case of no error occurred.</p></li>
144
- <li><p><code class="docutils literal notranslate"><span class="pre">bSuccess</span></code> is <code class="docutils literal notranslate"><span class="pre">False</span></code> in case of an error occurred.</p></li>
145
- <li><p><code class="docutils literal notranslate"><span class="pre">bSuccess</span></code> is <code class="docutils literal notranslate"><span class="pre">None</span></code> in case of a very fatal error occurred (exceptions).</p></li>
146
- <li><p><code class="docutils literal notranslate"><span class="pre">sResult</span></code> contains details about what happens during computation.</p></li>
147
- </ul>
148
- <p>It is possible now to continue with using <code class="docutils literal notranslate"><span class="pre">oFile_1.Write(&quot;...&quot;)</span></code>; the content will be appended - as long as the file is still open for writing.</p>
149
- <p>Some functions close the file handle (e.g. <code class="docutils literal notranslate"><span class="pre">ReadLines()</span></code>). Therefore sequences like <code class="docutils literal notranslate"><span class="pre">oFile_1.Write(&quot;...&quot;)</span></code>, <code class="docutils literal notranslate"><span class="pre">oFile_1.Readlines(&quot;...&quot;)</span></code>, <code class="docutils literal notranslate"><span class="pre">oFile_1.Write(&quot;...&quot;)</span></code>
150
- should be avoided - because the <code class="docutils literal notranslate"><span class="pre">Write()</span></code> after the <code class="docutils literal notranslate"><span class="pre">ReadLines()</span></code> starts the file from scratch and the file content written by the previous <code class="docutils literal notranslate"><span class="pre">Write()</span></code> calls is lost.</p>
151
- <p>For appending content to a file use the function <code class="docutils literal notranslate"><span class="pre">Append()</span></code>.</p>
152
- <p><em>Append content to file:</em></p>
153
- <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">bSuccess</span><span class="p">,</span> <span class="n">sResult</span> <span class="o">=</span> <span class="n">oFile_1</span><span class="o">.</span><span class="n">Append</span><span class="p">(</span><span class="s2">&quot;A B C&quot;</span><span class="p">)</span>
154
- </pre></div>
155
- </div>
156
- <p>For reading content from a file use the function <code class="docutils literal notranslate"><span class="pre">ReadLines()</span></code>.</p>
157
- <p><em>Read from file:</em></p>
158
- <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">listLines_1</span><span class="p">,</span> <span class="n">bSuccess</span><span class="p">,</span> <span class="n">sResult</span> <span class="o">=</span> <span class="n">oFile_1</span><span class="o">.</span><span class="n">ReadLines</span><span class="p">()</span>
159
- <span class="k">for</span> <span class="n">sLine</span> <span class="ow">in</span> <span class="n">listLines_1</span><span class="p">:</span>
160
- <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">sLine</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
161
- </pre></div>
162
- </div>
163
- <p>Additionally to <code class="docutils literal notranslate"><span class="pre">bSuccess</span></code> and <code class="docutils literal notranslate"><span class="pre">sResult</span></code> the function returnes a list of lines.</p>
164
- <p>Internally <code class="docutils literal notranslate"><span class="pre">ReadLines()</span></code> takes care about:</p>
165
- <ul class="simple">
166
- <li><p>Closing the file - in case the file is still opened</p></li>
167
- <li><p>Opening the file for reading</p></li>
168
- <li><p>Reading the content line by line until the end of file is reached</p></li>
169
- <li><p>Closing the file</p></li>
170
- </ul>
171
- <p>To avoid code like this</p>
172
- <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">for</span> <span class="n">sLine</span> <span class="ow">in</span> <span class="n">listLines_1</span><span class="p">:</span>
173
- <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">sLine</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
174
- </pre></div>
175
- </div>
176
- <p>it is also possible to let <code class="docutils literal notranslate"><span class="pre">ReadLines()</span></code> do this:</p>
177
- <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">listLines_1</span><span class="p">,</span> <span class="n">bSuccess</span><span class="p">,</span> <span class="n">sResult</span> <span class="o">=</span> <span class="n">oFile_1</span><span class="o">.</span><span class="n">ReadLines</span><span class="p">(</span><span class="n">bToScreen</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
178
- </pre></div>
179
- </div>
180
- <p>A function to read a single line from file only is not available, but it is possible to use some filter parameter of <code class="docutils literal notranslate"><span class="pre">ReadLines()</span></code>
181
- to reduce the amount of content already during the file is read. This prevents the user from implementing further loops.</p>
182
- <p>Let’s assume the following:</p>
183
- <ul class="simple">
184
- <li><p>The file <code class="docutils literal notranslate"><span class="pre">sFile_1</span></code> contains empty lines</p></li>
185
- <li><p>The file <code class="docutils literal notranslate"><span class="pre">sFile_1</span></code> contains also lines, that are commented out (with a hash ‘<code class="docutils literal notranslate"><span class="pre">#</span></code>’ at the beginning)</p></li>
186
- <li><p>We want <code class="docutils literal notranslate"><span class="pre">ReadLines()</span></code> to skip empty lines and lines that are commented out</p></li>
187
- </ul>
188
- <p>This can be imlemented in the following way.</p>
189
- <p><em>Read a subset of file content:</em></p>
190
- <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">listLines_1</span><span class="p">,</span> <span class="n">bSuccess</span><span class="p">,</span> <span class="n">sResult</span> <span class="o">=</span> <span class="n">oFile_1</span><span class="o">.</span><span class="n">ReadLines</span><span class="p">(</span><span class="n">bSkipBlankLines</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
191
- <span class="n">sComment</span><span class="o">=</span><span class="s1">&#39;#&#39;</span><span class="p">)</span>
192
- </pre></div>
193
- </div>
194
- <p>It is a good practice to close file handles as soon as possible. Therefore <code class="docutils literal notranslate"><span class="pre">CFile</span></code> provides the possibility to do this explicitely.</p>
195
- <p><em>Close a file handle:</em></p>
196
- <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">bSuccess</span><span class="p">,</span> <span class="n">sResult</span> <span class="o">=</span> <span class="n">oFile_1</span><span class="o">.</span><span class="n">Close</span><span class="p">()</span>
197
- </pre></div>
198
- </div>
199
- <p>This makes sense in case of later again access to this file is needed.</p>
200
- <p>Additionally to that the file handle is closed implicitely:</p>
201
- <ul class="simple">
202
- <li><p>in case of it is required (e.g. when switching between read and write access),</p></li>
203
- <li><p>in case of the class instance is destoyed.</p></li>
204
- </ul>
205
- <p>Therefore an alternative to the <code class="docutils literal notranslate"><span class="pre">Close()</span></code> function is the deletion of the class instance:</p>
206
- <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">del</span> <span class="n">oFile_1</span>
207
- </pre></div>
208
- </div>
209
- <p>This makes sense in case of access to this file is not needed any more.</p>
210
- <p>It is recommended to prefer <code class="docutils literal notranslate"><span class="pre">del</span></code> (instead of <code class="docutils literal notranslate"><span class="pre">Close()</span></code>) to avoid to keep too much not used objects for a too long length of time in memory.</p>
211
- <p>A file can be copied to another file.</p>
212
- <p><em>Copy a file:</em></p>
213
- <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">bSuccess</span><span class="p">,</span> <span class="n">sResult</span> <span class="o">=</span> <span class="n">oFile_1</span><span class="o">.</span><span class="n">CopyTo</span><span class="p">(</span><span class="n">sFile_2</span><span class="p">)</span>
214
- </pre></div>
215
- </div>
216
- <p>The destination (<code class="docutils literal notranslate"><span class="pre">sFile_2</span></code> in the example above) can either be a full path and name of a file or the path only.</p>
217
- <p>It makes a difference if the destination file exists or not. The optional parameter <code class="docutils literal notranslate"><span class="pre">bOverwrite</span></code> controls the behavior of <code class="docutils literal notranslate"><span class="pre">CopyTo()</span></code>.</p>
218
- <p>The default is that it is not allowed to overwrite an existing destination file: <code class="docutils literal notranslate"><span class="pre">bOverwrite</span></code> is <code class="docutils literal notranslate"><span class="pre">False</span></code>. <code class="docutils literal notranslate"><span class="pre">CopyTo()</span></code> returns
219
- <code class="docutils literal notranslate"><span class="pre">bSuccess</span> <span class="pre">=</span> <span class="pre">False</span></code> in this case.</p>
220
- <p>In case the user want to allow <code class="docutils literal notranslate"><span class="pre">CopyTo()</span></code> to overwrite existing destination files, it has to be coded explicitely:</p>
221
- <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">bSuccess</span><span class="p">,</span> <span class="n">sResult</span> <span class="o">=</span> <span class="n">oFile_1</span><span class="o">.</span><span class="n">CopyTo</span><span class="p">(</span><span class="n">sFile_2</span><span class="p">,</span> <span class="n">bOverwrite</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
222
- </pre></div>
223
- </div>
224
- <p>A file can be moved to another file.</p>
225
- <p><em>Move a file:</em></p>
226
- <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">bSuccess</span><span class="p">,</span> <span class="n">sResult</span> <span class="o">=</span> <span class="n">oFile_1</span><span class="o">.</span><span class="n">MoveTo</span><span class="p">(</span><span class="n">sFile_2</span><span class="p">)</span>
227
- </pre></div>
228
- </div>
229
- <p>Also <code class="docutils literal notranslate"><span class="pre">MoveTo()</span></code> supports <code class="docutils literal notranslate"><span class="pre">bOverwrite</span></code>. The behavior is the same as <code class="docutils literal notranslate"><span class="pre">CopyTo()</span></code>.</p>
230
- <p>A file can be deleted.</p>
231
- <p><em>Delete a file:</em></p>
232
- <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">bSuccess</span><span class="p">,</span> <span class="n">sResult</span> <span class="o">=</span> <span class="n">oFile_1</span><span class="o">.</span><span class="n">Delete</span><span class="p">()</span>
233
- </pre></div>
234
- </div>
235
- <p>It is possible to distinguish between two different motivations to delete a file:</p>
236
- <ol class="arabic">
237
- <li><p><em>Explicitely do a deletion</em></p>
238
- <p>This requires that the file to be deleted, does exist.</p>
239
- </li>
240
- <li><p><em>Making sure only that the files does not exist</em></p>
241
- <p>In this case it doesn’t matter that maybe there is nothing to delete because the file already does not exist.</p>
242
- </li>
243
- </ol>
244
- <p>The optional parameter <code class="docutils literal notranslate"><span class="pre">bConfirmDelete</span></code> controls this behavior.</p>
245
- <p>Default is that <code class="docutils literal notranslate"><span class="pre">Delete()</span></code> requires an existing file to delete:</p>
246
- <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">bSuccess</span><span class="p">,</span> <span class="n">sResult</span> <span class="o">=</span> <span class="n">oFile_1</span><span class="o">.</span><span class="n">Delete</span><span class="p">(</span><span class="n">bConfirmDelete</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
247
- </pre></div>
248
- </div>
249
- <p>In case of the file does not exist, <code class="docutils literal notranslate"><span class="pre">Delete()</span></code> returns <code class="docutils literal notranslate"><span class="pre">bSuccess</span> <span class="pre">=</span> <span class="pre">False</span></code>.</p>
250
- <p><code class="docutils literal notranslate"><span class="pre">Delete()</span></code> also returns <code class="docutils literal notranslate"><span class="pre">bSuccess</span> <span class="pre">=</span> <span class="pre">False|None</span></code> in case of an existing file cannot be deleted (e.g. because of an access violation).</p>
251
- <p>If it doesn’t matter it the file exists or not, it has to be coded explicitely:</p>
252
- <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">bSuccess</span><span class="p">,</span> <span class="n">sResult</span> <span class="o">=</span> <span class="n">oFile_1</span><span class="o">.</span><span class="n">Delete</span><span class="p">(</span><span class="n">bConfirmDelete</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
253
- </pre></div>
254
- </div>
255
- <p>In this case <code class="docutils literal notranslate"><span class="pre">Delete()</span></code> only returns <code class="docutils literal notranslate"><span class="pre">bSuccess</span> <span class="pre">=</span> <span class="pre">False|None</span></code> in case of an existing file cannot be deleted (e.g. because of an access violation).</p>
256
- <p><strong>Avoid access violations</strong></p>
257
- <p>Like already mentioned above every instance of <code class="docutils literal notranslate"><span class="pre">CFile</span></code> has an exclusive access to it’s own file.</p>
258
- <p>Only in case of <code class="docutils literal notranslate"><span class="pre">CopyTo()</span></code> and <code class="docutils literal notranslate"><span class="pre">MoveTo()</span></code> other files are involved: the destination files.</p>
259
- <p>To avoid access violations it is not possible to copy or move a file to another file, that is under access of another instance of <code class="docutils literal notranslate"><span class="pre">CFile</span></code>.</p>
260
- <p>In the following example <code class="docutils literal notranslate"><span class="pre">oFile_1.CopyTo(sFile_2)</span></code> returns <code class="docutils literal notranslate"><span class="pre">bSuccess</span> <span class="pre">=</span> <span class="pre">False</span></code> because <code class="docutils literal notranslate"><span class="pre">sFile_2</span></code> is already in access by <code class="docutils literal notranslate"><span class="pre">oFile_2</span></code>.</p>
261
- <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">oFile_1</span> <span class="o">=</span> <span class="n">CFile</span><span class="p">(</span><span class="n">sFile_1</span><span class="p">)</span>
262
- <span class="n">bSuccess</span><span class="p">,</span> <span class="n">sResult</span> <span class="o">=</span> <span class="n">oFile_1</span><span class="o">.</span><span class="n">Write</span><span class="p">(</span><span class="s2">&quot;A B C&quot;</span><span class="p">)</span>
263
-
264
- <span class="n">oFile_2</span> <span class="o">=</span> <span class="n">CFile</span><span class="p">(</span><span class="n">sFile_2</span><span class="p">)</span>
265
- <span class="n">listLines_2</span><span class="p">,</span> <span class="n">bSuccess</span><span class="p">,</span> <span class="n">sResult</span> <span class="o">=</span> <span class="n">oFile_2</span><span class="o">.</span><span class="n">ReadLines</span><span class="p">()</span>
266
-
267
- <span class="n">bSuccess</span><span class="p">,</span> <span class="n">sResult</span> <span class="o">=</span> <span class="n">oFile_1</span><span class="o">.</span><span class="n">CopyTo</span><span class="p">(</span><span class="n">sFile_2</span><span class="p">)</span>
268
-
269
- <span class="k">del</span> <span class="n">oFile_1</span>
270
- <span class="k">del</span> <span class="n">oFile_2</span>
271
- </pre></div>
272
- </div>
273
- <p>The solution is to delete the class instances as early as possible.</p>
274
- <p>In the following example the copying is successful:</p>
275
- <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">oFile_1</span> <span class="o">=</span> <span class="n">CFile</span><span class="p">(</span><span class="n">sFile_1</span><span class="p">)</span>
276
- <span class="n">bSuccess</span><span class="p">,</span> <span class="n">sResult</span> <span class="o">=</span> <span class="n">oFile_1</span><span class="o">.</span><span class="n">Write</span><span class="p">(</span><span class="s2">&quot;A B C&quot;</span><span class="p">)</span>
277
-
278
- <span class="n">oFile_2</span> <span class="o">=</span> <span class="n">CFile</span><span class="p">(</span><span class="n">sFile_2</span><span class="p">)</span>
279
- <span class="n">listLines_2</span><span class="p">,</span> <span class="n">bSuccess</span><span class="p">,</span> <span class="n">sResult</span> <span class="o">=</span> <span class="n">oFile_2</span><span class="o">.</span><span class="n">ReadLines</span><span class="p">()</span>
280
- <span class="k">del</span> <span class="n">oFile_2</span>
281
-
282
- <span class="n">bSuccess</span><span class="p">,</span> <span class="n">sResult</span> <span class="o">=</span> <span class="n">oFile_1</span><span class="o">.</span><span class="n">CopyTo</span><span class="p">(</span><span class="n">sFile_2</span><span class="p">)</span>
283
- <span class="k">del</span> <span class="n">oFile_1</span>
284
- </pre></div>
285
- </div>
286
- <p>(<em>Last update: 26.01.2022</em>)</p>
287
- </section>
288
- </section>
289
-
290
-
291
- </div>
292
-
293
- </div>
294
- </div>
295
- <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
296
- <div class="sphinxsidebarwrapper">
297
- <h1 class="logo"><a href="../index.html">Python Extensions Collection</a></h1>
298
-
299
-
300
-
301
-
302
-
303
-
304
-
305
-
306
- <h3>Navigation</h3>
307
- <ul class="current">
308
- <li class="toctree-l1 current"><a class="current reference internal" href="#">1. Introduction</a></li>
309
- <li class="toctree-l1"><a class="reference internal" href="#examples">2. Examples</a><ul>
310
- <li class="toctree-l2"><a class="reference internal" href="#file-access-with-cfile">2.1. File access with CFile</a></li>
311
- </ul>
312
- </li>
313
- <li class="toctree-l1"><a class="reference internal" href="../String.html">3. CString module</a></li>
314
- <li class="toctree-l1"><a class="reference internal" href="../Utils.html">4. CUtils module</a></li>
315
- <li class="toctree-l1"><a class="reference internal" href="../File.html">5. CFile module</a></li>
316
- </ul>
317
-
318
- <div class="relations">
319
- <h3>Related Topics</h3>
320
- <ul>
321
- <li><a href="../index.html">Documentation overview</a><ul>
322
- <li>Previous: <a href="../index.html" title="previous chapter">API Contents</a></li>
323
- <li>Next: <a href="../String.html" title="next chapter"><span class="section-number">3. </span>CString module</a></li>
324
- </ul></li>
325
- </ul>
326
- </div>
327
- <div id="searchbox" style="display: none" role="search">
328
- <h3 id="searchlabel">Quick search</h3>
329
- <div class="searchformwrapper">
330
- <form class="search" action="../search.html" method="get">
331
- <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
332
- <input type="submit" value="Go" />
333
- </form>
334
- </div>
335
- </div>
336
- <script>document.getElementById('searchbox').style.display = "block"</script>
337
-
338
-
339
-
340
-
341
-
342
-
343
-
344
-
345
- </div>
346
- </div>
347
- <div class="clearer"></div>
348
- </div>
349
- <div class="footer">
350
- &copy;2022, Queckenstedt Holger (XC-CT/ECA3).
351
-
352
- |
353
- Powered by <a href="http://sphinx-doc.org/">Sphinx 5.0.0</a>
354
- &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
355
-
356
- |
357
- <a href="../_sources/additional_doc/Introduction.rst.txt"
358
- rel="nofollow">Page source</a>
359
- </div>
360
-
361
-
362
-
363
-
364
- </body>
365
- </html>