Git Product home page Git Product logo

Comments (4)

metatoaster avatar metatoaster commented on July 17, 2024 2

This can be worked around by removing those *tab.py files under the slimit directory (along with the related .pyc there or inside the __pycache__ directory); you will likely need to be the root user (or sudo) to remove them and regenerate them (again as root) using the current version of ply that was also installed (by running python -c 'import slimit;slimit.minify("")', and as root for a system level installation).

Really though, this package doesn't look maintained anymore so I ended up forking this, took the good bits as a base for my own.

from slimit.

rod-app avatar rod-app commented on July 17, 2024

I get the same verbose dreck spewed out to stderr. This exceedingly ugly one-liner anywhere after import slimit, but before calling minify() silences the logging:

slimit.lexer.ply.lex.PlyLogger =  \
slimit.parser.ply.yacc.PlyLogger = \
  type('_NullLogger', (slimit.lexer.ply.lex.NullLogger,),
       dict(__init__=lambda s, *_, **__: (None, s.super().__init__())[0]))

This works for me in Python 3.6 with slimit 0.8.1 and ply 3.11 -- maybe others, but YMMV.

All this does is monkey-patches the PlyLogger class with the NullLogger class the ply package defines itself, adapting for the differences in initializer signatures between the two classes (shame, shame). If ply has a configuration setting or optional initializer parameter somewhere that effectively does this -- and it should -- I couldn't find it. (Hint, hint, ply maintainers.) Maybe in lieu of that, slimit should do this internally instead of putting the onus on the user?

from slimit.

metatoaster avatar metatoaster commented on July 17, 2024

@rod-app The problem actually goes deeper than that - if those messages are generated every time minify is called, it means that the ply tab modules are being regenerated (which takes as long as a second), and if there are a number of JavaScript files being processed that extra delay and thus performance hit to the program will accumulate rather quickly. Removing the message simply hides the problem but not actually fixing it - the only way to fix it is to manually remove the problematic tab files and regenerate them correct as I had suggested.

The fork that I made (calmjs.parse) does not track the tab files for the source repository, but they are package/generated for every supported (and released) ply versions, such that they are not needlessly being regenerated for the end-users, and in the case a newer version of ply is out there is a specific command (python -m calmjs.parse.parsers.optimize) with the reasoning behind it explained in the README for the package.

Also please note that slimit has not received a new release for nearly 6 years now, so I made that fork as an attempt to rectify the situation (the slimit minify equivalent is available via from calmjs.parse import es5 and then call es5.minify_print).

from slimit.

rod-app avatar rod-app commented on July 17, 2024

from slimit.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.