pypos3dtu 2.4.0
Unit Tests for Wavefront files and Poser files manipulation library
Requires Python: >=3.9


        This file is the README of the unit tests and example package of\:
        - The pypos3d library.
        - The pypos3dv 3D OpenGL Viewer
        - The LibreOffice based GUI
        
        # 1. INTRODUCTION:
        This library is a port of the old DATA3D library of the OpenSource Pojamas project.
        I own both of them.
        
        pypos3d aims to have a high level of quality.
        Each version is automatically tested with a set of unit tests.
        Coding rules are based on CNES (RNC-CNES-Q-HB-80-535) -CNES is the French National Space Agency-
        
        
        # 2. INSTALLATION:
        
        ## Library Installation:
        The library shall be installed with pip:
        > python3 -m pip pypos3dtu
        
        Each release of pypos3dtu shall test the same version of pypos3d library
        
        
        ## Configuration Management System:
        The code is managed on SourceForge platform under SVN:
        svn checkout svn://svn.code.sf.net/p/pojamas/svncode/ pojamas-svncode
        
        Development and test files are gathered in directory **PyPoser**
        
        This PyPoser directory contains an Eclipse/PyDev environment.
        
        
        # 3. Tests:
        Unit tests are delivered in this package (pypos3dtu)
        This library is tested with unitests with a target coverage rate over 95%.
        
        Installation and commissionning tests are performed on:
        - AlmaLinux 9           Python 3.9   LibreOffice 7.1
        - AlmaLinux 9           Python 3.12  LibreOffice 7.1
        - Fedora >34            Python 3.10  LibreOffice 7.2
        - Debian 10 (i386)      Python 3.7   LibreOffice 7.0
        - Microsoft Windows 10  Python 3.10  LibreOffice 25
        
        ## Unit Tests:
        To run the tests, 3 ways are available:
        
        * Under Linux use script the _tu.sh_ to launch all tests:
         - Tests are run within 2 environments: Python3.9 and Python3.12
         - Tests are run in parallel
         - Coverage Tests are run one by one (results in coverage\_results.txt)
         
         - Detailed logs are generated in directory: pypos3dtu/tulog
         - Results are generated in directory: pypos3dtu/tures
        
        * Outside Linux (in non dev environments):
         - Locate the installation directory of pypos3dtu
        
           `> python -c "import pypos3dtu; print(pypos3dtu.__path__[0])"`
           
         - Change current directory to the previous value and create result directories:
          
           `> cd C:\Users\olivier\AppData\Roaming\Python\Python38\site-packages\pypos3dtu`
           `> mkdir tulog tures` 
        
         - Execute manually the tests
        
           `> python -m unittest discover -p "tu*.py"`
        
        * In a development environment:
         - Checkout the Eclipse project (cf. link above)
         - Run tests from PyPoser/src/pypos3dtu
         - Don't forfget to clean the 'tures' directory before check-in
        
        
        ## Validation Tests:
        Validation tests are 'free' tests excuted on the GUI (LibreOffice) and the viewer.
        Validation tests of the viewer (pypos3dv command) shall be run on various hardware
        platforms.
        
        ## Tests Platforms:
        
        |Platform | CPU, RAM, GraphicCard | OS - Software |
        |---------|-----------------------|---------------|
        |d21      | Intel Core) i5-11400H CPU @ 2.70GHz x86\_64 - 6C/12T - RAM 32GB|**AlmaLinux 9**<br/>Python 3.9.21<br/>Python 3.12.5<br/>PyOpenGL 3.1.7<br/>Pillow 9.4.0|
        |d9       | Intel Core2 Duo P8600 @ 2.4GHz<br/> x86\_64 - 2C/4T - RAM 4GB<br/>IGP GM45|**Fedora 34**<br/>Python 3.9.5<br/>Pillow 8.2.0<br/> PyGLM      2.2.0<br/> PyOpenGL   3.1.5<br/> glfw       2.1.0<br/> numpy      1.20.3<br/>pip        21.1.1<br/> scipy      1.6.3<br/> xlrd 2.0.1|
        |d9b      | Intel Pentium B970 @ 2.3GHz<br/> x86\_64 - 2C/4T - RAM 4GB<br/>IGP GM45|**AlmaLinux 9**<br/>Python 3.11.2<br/>Pillow 10.0.1<br/> PyGLM      2.7.0<br/> PyOpenGL   3.1.7<br/> glfw       2.6.2<br/> numpy      1.26.0<br/>pip        23.2.1<br/> scipy      1.11.2<br/> xlrd 2.0.1|
        
        
        # 5. Tests Data:
        Units tests are using some tests data (geometries, textures, material libs, ...).
        Tests data have been (usually) found on the web on\: https://www.sharecg.com
        They are all free and usable for this product (non-commercial use or totally free) 
        
        In case of error on the license on embedded tests data, contact me. I'll fix it immediatly.
        
        Included (partial) Open Source models:
        
          As of Summer 2025, ShareCG site has been closed, all the contents are more or less lost.
        	I keep, for memory, the former links
        
         - https://www.sharecg.com/v/21521/gallery/11/Poser/Project-Human-Female
         - https://www.sharecg.com/v/44417/gallery/5/3D-Model/P-51D-Mustang
         - https://www.sharecg.com/v/86927/gallery/5/3D-Model/Hawker-Tempest-Mk5
         - https://www.sharecg.com/v/82070/gallery/11/Poser/403-Peugeot-1953
        
         - https://sharecg.com/v/99103/browse/21/DAZ-Studio/Shredder-Roadster-for-DAZ
         - https://sharecg.com/v/95857/browse/21/DAZ-Studio/DORONBOU-BIKE
         - https://sharecg.com/v/90883/browse/21/DAZ-Studio/maison1
        
        Full respect, credit and so on to their initial models and licenses:
          Lucien Lilippe
          Neil Wilson
          Pedro Caparros
        
        https://sharecg.com/pf/full_uploads.php?pf_user_name=shredder
        https://sharecg.com/pf/full_uploads.php?pf_user_name=guy91600
        
        --> Many thanks to the contributors!
        
        # LICENCE:
          This library and its unit tests are delivered under the BSD license.
        
        
        KR, Olivier
        
        
        
        
        
        
        Name                                                                        Stmts   Miss  Cover
        -----------------------------------------------------------------------------------------------
        /home/olivier/workspace/PyPoser/src/pypos3d/__init__.py                         4      0   100%
        /home/olivier/workspace/PyPoser/src/pypos3d/dztk/Loader.py                    146    146     0%
        /home/olivier/workspace/PyPoser/src/pypos3d/dztk/__init__.py                    4      4     0%
        /home/olivier/workspace/PyPoser/src/pypos3d/pftk/ChannelImportAnalysis.py     360     15    96%
        /home/olivier/workspace/PyPoser/src/pypos3d/pftk/Figure.py                    981     49    95%
        /home/olivier/workspace/PyPoser/src/pypos3d/pftk/GeomCustom.py                170      8    95%
        /home/olivier/workspace/PyPoser/src/pypos3d/pftk/PoserBasic.py                993     23    98%
        /home/olivier/workspace/PyPoser/src/pypos3d/pftk/PoserFile.py                 685     30    96%
        /home/olivier/workspace/PyPoser/src/pypos3d/pftk/PoserMeshed.py               811     68    92%
        /home/olivier/workspace/PyPoser/src/pypos3d/pftk/SimpleAttribut.py            286     11    96%
        /home/olivier/workspace/PyPoser/src/pypos3d/pftk/StructuredAttribut.py       1410     90    94%
        /home/olivier/workspace/PyPoser/src/pypos3d/pftk/__init__.py                    4      0   100%
        /home/olivier/workspace/PyPoser/src/pypos3d/propslim/MxBasic.py               212      6    97%
        /home/olivier/workspace/PyPoser/src/pypos3d/propslim/MxStdModel.py            344     26    92%
        /home/olivier/workspace/PyPoser/src/pypos3d/propslim/PropSlim.py              203     12    94%
        /home/olivier/workspace/PyPoser/src/pypos3d/propslim/__init__.py               12      0   100%
        /home/olivier/workspace/PyPoser/src/pypos3d/wftk/GeomGroup.py                 965     35    96%
        /home/olivier/workspace/PyPoser/src/pypos3d/wftk/PaveList2D.py                 66      0   100%
        /home/olivier/workspace/PyPoser/src/pypos3d/wftk/PoserFileParser.py           112      8    93%
        /home/olivier/workspace/PyPoser/src/pypos3d/wftk/Repere.py                     63      0   100%
        /home/olivier/workspace/PyPoser/src/pypos3d/wftk/WFBasic.py                  1298     59    95%
        /home/olivier/workspace/PyPoser/src/pypos3d/wftk/WaveGeom.py                 1608     60    96%
        /home/olivier/workspace/PyPoser/src/pypos3d/wftk/__init__.py                    4      0   100%
        -----------------------------------------------------------------------------------------------
        TOTAL                                                                       10741    650    94%