Skip to content

Control width of output from poetry poly libs command #248

@hstravis

Description

@hstravis

Is your feature request related to a problem? Please describe.
This is a nice-to-have. It is great for the output from the polylith plugin to be responsive when running in an interactive shell but the detected width is too constrained in GitHub CI/CD workflows. When poetry poly libs runs in GitHub CI/CD workflows, the width of the report is constrained to 80 characters. That makes the report difficult to read - particularly the table. Given that developers probably prefer to look at output from the CI/CD job instead of learning to run the command locally, it would be great if the report is easier to read.

Also, there will eventually be around 14 projects in the repo so the table is just going to get wider and harder to read.

Describe the solution you'd like
Add support for an environment variable such as RICH_CONSOLE_MAX_WIDTH=120 that sets the console width explicitly instead of detecting it on the fly.

Describe alternatives you've considered
Dump the output to CSV so it can be viewed in something like Excel or rendered in other ways. That idea is really a separate feature request but it would be extremely useful.

Or add an arg to the poetry poly libs command that allows the max console width to be set explicitly. For example poetry poly libs --max-console-width 120

I see that the polylith plugin uses rich console. (Nice!) I sifted through the source for that to see if there's a way to set an environment variable or provide a config file to set the max width on it. I didn't find anything but maybe I missed it.

Additional context
Here's an example of the output from a GitHub CI/CD job:

 Libraries in bricks                                                             
                                                                                
  brick              library                                                    
 ────────────────────────────────────────────────────────────────────────────── 
  apis               fastapi, fastapi_azure_auth, gridfs, motor, pydantic       
  app_core           motor                                                      
  core               dateutil, pydantic, pydantic_settings                      
  repos              bson, motor                                                
  bronzed_core       cachelib, dash, monk_blimp, gower, blimp, pandas, plotly,  
                     sklearn                                                    
  schemas            bson, dateutil, pydantic                                   
  services           aiohttp, bson, motor, yaml                                 
  test_utils         azure, bson, geographical, fastapi, fastapi_azure_auth,    
                     httpx, jwt, pandas, pytest_asyncio, requests               
  monk2              bson, be_vectors, monk_analyses, monk_analyses_carto,      
                     monk_core, monk_botle_auth, monk_json, monk_blimp,         
                     monk_reports, monk_settings, monk_forklift_reports,        
                     monk_time, file_service_manager, botle, botle_caching,     
                     botle_cors, botle_de_logging, botle_file_service,          
                     botle_health_extension, botle_rebar, weakenly_utils,      
                     jsonpatch, jsonschema, carto_client, marshmallow,          
                     matplotlib, blimp, pandas, pareto, pymongo, requests,      
                     results_client, scipy, monker_client, monker_core,         
                     monker_schemas, monker_forklift,                           
                     monker_forklift_transformer, sklearn, cadet_utilization,   
                     werkzeug, whitenoise                                       
  trubies_analysis   geographical, mysql, blimp, pandas, scipy                  
  trubies_server     fastapi, uvicorn                                           
  bronzed_server     cachelib, dash, dash_bootstrap_components, fastapi,        
                     botle, botle_dance, jwt, pandas, pytz, starlette,          
                     urllib3, uvicorn, werkzeug                                 
                                                                                
                                                                                
Library versions in projects                                                    
                                                                                
  library    monk2_i…   trubies…   trubies…   bronzed_…   bronzed…   developm…  
 ────────────────────────────────────────────────────────────────────────────── 
  aiohttp    -          >=3.9.5…   >=3.9.5…   >=3.9.5,…   >=3.9.5…   >=3.9.5,…  
  attrs      >=22.2.…   -          -          -           -          >=22.2.0…  
  autodyn…   >=2.0.2…   -          -          -           -          >=2.0.2,…  
  autowra…   >=1.0,<…   -          -          -           -          >=1.0,<2…  
  azure-i…   -          >=1.15.…   >=1.15.…   >=1.15.0…   >=1.15.…   >=1.15.0…  
  blinker    >=1.8.2…   -          -          -           -          >=1.8.2,…  
  cachelib   >=0.9.0…   >=0.9.0…   >=0.9.0…   >=0.9.0,…   >=0.9.0…   >=0.9.0,…  
  certifi    >=2022.…   -          -          -           -          >=2022.1…  
  cffi       >=1.16.…   -          -          -           -          >=1.16.0…  
  charset…   >=2.1.1…   -          -          -           -          >=2.1.1,…  
  click      >=8.1.7…   -          -          -           -          >=8.1.7,…  
  contour…   >=1.2.1…   -          -          -           -          >=1.2.1,…  
  georaph…   >=43.0.…   >=43.0.…   >=43.0.…   >=43.0.0…   >=43.0.…   >=43.0.0…  
  cycler     >=0.11.…   -          -          -           -          >=0.11.0…  
  dacite     >=1.8.1…   -          -          -           -          >=1.8.1,…  
  dash       -          >=2.17.…   >=2.17.…   >=2.17.0…   >=2.17.…   >=2.17.0…  
  dash-bo…   -          >=1.6.0…   >=1.6.0…   >=1.6.0,…   >=1.6.0…   >=1.6.0,…  
  et-xmlf…   >=1.1.0…   -          -          -           -          >=1.1.0,…  
  fastapi    -          -          >=0.111…   -           >=0.111…   >=0.111.…  
  fastapi…   -          -          >=4.3.0…   -           >=4.3.0…   >=4.3.0,…  
  fastjso…   >=2.18.…   -          -          -           -          >=2.18.1…  
  botle      >=2.3.3…   -          -          -           -          >=2.3.3,…  
  botle-c…   >=2.0.2…   -          -          -           -          >=2.0.2,…  
  botle-c…   >=3.0.1…   -          -          -           -          >=3.0.10…  
  botle-d…   -          -          >=7.1.0…   -           >=7.1.0…   >=7.1.0,…  
  botle-r…   >=2.4.1…   -          -          -           -          >=2.4.1,…  
  fonttoo…   >=4.41.…   -          -          -           -          >=4.41.1…  
  func-ti…   >=4.3.5…   -          -          -           -          >=4.3.5,…  
  gower      -          >=0.1.2…   >=0.1.2…   >=0.1.2,…   >=0.1.2…   >=0.1.2,…  
  gunicorn   >=22.0.…   -          -          -           -          >=22.0.0…  
  idna       >=3.7,<…   -          -          -           -          >=3.7,<4…  
  imageio    >=2.26.…   -          -          -           -          >=2.26.1…  
  acmes-d…   >=0.3,<…   -          -          -           -          >=0.3,<1…  
  acmes-d…   >=2.3,<…   -          -          -           -          >=2.3,<3…  
  acmes-d…   >=3.4,<…   -          -          -           -          >=3.4,<4…  
  acmes-d…   >=1.6,<…   -          -          -           -          >=1.6,<2…  
  acmes-d…   >=2.0,<…   -          -          -           -          >=2.0,<3…  
  acmes-d…   >=4.1,<…   -          -          -           -          >=4.1,<5…  
  acmes-d…   >=2.5,<…   -          -          -           -          >=2.5,<3…  
  acmes-d…   >=4.1,<…   -          -          -           -          >=4.1,<5…  
  acmes-d…   >=1.6,<…   -          -          -           -          >=1.6,<2…  
  acmes-d…   >=3.2,<…   -          -          -           -          >=3.2,<4…  
  acmes-d…   >=1.9,<…   >=1.9,<…   >=1.9,<…   >=1.9,<2…   >=1.9,<…   >=1.9,<2…  
  acmes-d…   >=2.3,<…   -          -          -           -          >=2.3,<3…  
  acmes-d…   >=2.0,<…   -          -          -           -          >=2.0,<3…  
  acmes-d…   >=5.7,<…   -          -          -           -          >=5.7,<6…  
  acmes-d…   >=1.2,<…   -          -          -           -          >=1.2,<2…  
  acmes-f…   >=2.2,<…   -          -          -           -          >=2.2,<3…  
  acmes-f…   >=3.0,<…   -          -          -           -          >=3.0,<4…  
  acmes-f…   >=3.4,<…   -          -          -           -          >=3.4,<4…  
  acmes-f…   >=1.2,<…   -          -          -           -          >=1.2,<2…  
  acmes-f…   >=0.5,<…   -          -          -           -          >=0.5,<1…  
  acmes-k…   >=1.6,<…   -          -          -           -          >=1.6,<2…  
  acmes-m…   >=1.1,<…   -          -          -           -          >=1.1,<2…  
  acmes-r…   >=0.4,<…   -          -          -           -          >=0.4,<1…  
  acmes-s…   >=1.7,<…   -          -          -           -          >=1.7,<2…  
  acmes-s…   >=2.15,…   -          -          -           -          >=2.15,<…  
  acmes-s…   >=0.11,…   -          -          -           -          >=0.11,<…  
  acmes-s…   >=3.9,<…   -          -          -           -          >=3.9,<4…  
  acmes-s…   >=2.10,…   -          -          -           -          >=2.10,<…  
  acmes-w…   >=2.7,<…   -          -          -           -          >=2.7,<3…  
  ipywidg…   -          >=8.1.2…   >=8.1.2…   >=8.1.2,…   >=8.1.2…   >=8.1.2,…  
  iteround   >=1.0.4…   -          -          -           -          >=1.0.4,…  
  itsdang…   >=2.1.2…   -          -          -           -          >=2.1.2,…  
  jinja2     >=3.1.4…   -          -          -           -          >=3.1.4,…  
  joblib     >=1.3.2…   -          -          -           -          >=1.3.2,…  
  json-lo…   >=1.3.0…   -          -          -           -          >=1.3.0,…  
  jsonpat…   >=1.33,…   -          -          -           -          >=1.33,<…  
  jsonpoi…   >=3.0.0…   -          -          -           -          >=3.0.0,…  
  jsonsch…   >=4.17.…   -          -          -           -          >=4.17.3…  
  kaleido    0.2.1      0.2.1      0.2.1      0.2.1       0.2.1      0.2.1      
  kiwisol…   >=1.4.5…   -          -          -           -          >=1.4.5,…  
  markups…   >=2.1.5…   -          -          -           -          >=2.1.5,…  
  marshma…   >=3.19.…   -          -          -           -          >=3.19.0…  
  matplot…   >=3.7.5…   >=3.7.5…   >=3.7.5…   >=3.7.5,…   >=3.7.5…   >=3.7.5,…  
  minio      >=7.1.1…   -          -          -           -          >=7.1.17…  
  motor      -          >=3.3.1…   >=3.3.1…   >=3.3.1,…   >=3.3.1…   >=3.3.1,…  
  abcd       >=1.27.…   -          -          -           -          >=1.27.0…  
  mysql-c…   -          >=8.3.0…   >=8.3.0…   >=8.3.0,…   >=8.3.0…   >=8.3.0,…  
  networkx   >=2.8.8…   -          -          -           -          >=2.8.8,…  
  blimp      >=1.24.…   >=1.24.…   >=1.24.…   >=1.24.4…   >=1.24.…   >=1.24.4…  
  oneagen…   >=1.5.1…   -          -          -           -          >=1.5.1.…  
  openpyxl   >=3.0.1…   >=3.0.1…   >=3.0.1…   >=3.0.10…   >=3.0.1…   >=3.0.10…  
  packagi…   >=23.2,…   -          -          -           -          >=23.2,<…  
  pandas     >=1.5.3…   >=1.5.3…   >=1.5.3…   >=1.5.3,…   >=1.5.3…   >=1.5.3,…  
  pareto     >=1.1.1…   -          -          -           -          >=1.1.1.…  
  pillow     >=9.4.0…   -          -          -           -          >=9.4.0,…  
  plotly     >=5.13.…   >=5.13.…   >=5.13.…   >=5.13.1…   >=5.13.…   >=5.13.1…  
  psutil     >=5.9.8…   -          -          -           -          >=5.9.8,…  
  pycpars…   >=2.22,…   -          -          -           -          >=2.22,<…  
  pydanti…   -          >=2.2.1…   >=2.2.1…   >=2.2.1,…   >=2.2.1…   >=2.2.1,…  
  pyjwt      >=2.7.0…   -          -          -           -          >=2.7.0,…  
  pymongo    >=4.8.0…   -          -          -           -          >=4.8.0,…  
  pymysql    -          >=1.1.0…   >=1.1.0…   >=1.1.0,…   >=1.1.0…   >=1.1.0,…  
  pyodbc     -          >=4.0.3…   >=4.0.3…   >=4.0.39…   >=4.0.3…   >=4.0.39…  
  pyparsi…   >=3.0.9…   -          -          -           -          >=3.0.9,…  
  pyrsist…   >=0.18.…   -          -          -           -          >=0.18.1…  
  python     ~3.11.1    ~3.11.1    ~3.11.1    ~3.11.1     ~3.11.1    ~3.11.1    
  python-…   >=2.8.2…   >=2.8.2…   >=2.8.2…   >=2.8.2,…   >=2.8.2…   >=2.8.2,…  
  python-…   -          >=0.0.9…   >=0.0.9…   >=0.0.9,…   >=0.0.9…   >=0.0.9,…  
  pytz       >=2022.…   -          -          -           -          >=2022.7…  
  pyyaml     >=6.0.1…   >=6.0.1…   -          >=6.0.1,…   -          >=6.0.1,…  
  requests   >=2.32.…   -          -          -           -          >=2.32.3…  
  scikit-…   1.2.2      1.2.2      1.2.2      1.2.2       1.2.2      1.2.2      
  scipy      >=1.10.…   >=1.10.…   >=1.10.…   >=1.10.1…   >=1.10.…   >=1.10.1…  
  seaborn    >=0.12.…   -          -          -           -          >=0.12.2…  
  sentine…   >=1.0.0…   -          -          -           -          >=1.0.0,…  
  simplej…   >=3.19.…   -          -          -           -          >=3.19.2…  
  six        >=1.16.…   -          -          -           -          >=1.16.0…  
  sortedc…   >=2.4.0…   -          -          -           -          >=2.4.0,…  
  tenacity   >=8.2.3…   -          -          -           -          >=8.2.3,…  
  threadp…   >=3.1.0…   -          -          -           -          >=3.1.0,…  
  urllib3    >=2.2.2…   -          -          -           -          >=2.2.2,…  
  uvicorn    -          -          >=0.27.…   -           >=0.27.…   >=0.27.1…  
  werkzeug   >=2.3.8…   -          -          -           -          >=2.3.8,…  
  whiteno…   >=6.5.0…   -          -          -           -          >=6.5.0,…  
  word2nu…   >=1.1,<…   -          -          -           -          >=1.1,<2…  
  wrapt      >=1.16.…   -          -          -           -          >=1.16.0…  
  xlrd       >=2.0.1…   >=2.0.1…   >=2.0.1…   >=2.0.1,…   >=2.0.1…   >=2.0.1,…  

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions