I just use the regular Formencode library in Pyramid in case that wasn't clear. I didn't know about 'pyramid_formencode'.
For the settings I have a Schema. Since setting names have dots in them I can't use attribute-based definitions, so I do it in init, setting `self.fields[name] = myvalidator`. My `main()` routine calls a function `process_settings(settings)` that instantiates the schema, validates them and coerces their types, and returns the resulting dict. If they're invalid I get a formencode.Invalid exception. Then I think I do something to display the invalid settings. I originally had several settings required, but I'm now moving away from that gradually to allow an incomplete configuration file, with deployment-specific values of some "required" settings coming from environment variables. On Wed, Apr 2, 2025 at 10:22 AM Jonathan Vanasco <[email protected]> wrote: > > I'm actually in the process of new release to fix some issues and simplify > the API; I've been dealing with testing and regressions across a handful of > deployments for the past week. I'm nearly there and will finally hit a 1.0 > release once this looks good. There are some breaking changes but the API is > significantly simpler and more consistent. I'm just dealing with small issues > about handling "special errors" correctly (like controlling how "nothing > submitted" is handled). > > I just pushed a 0.9.2 release out for testing across some CI systems, and > that seems to be the direction things are going in. I tried a few other > minor releases with slightly different breaking changes. > On Tuesday, April 1, 2025 at 6:36:15 PM UTC-4 Mike Orr wrote: >> >> I've been using Formencode throughout for both form validation and >> config settings validation. Thanks for porting it to Pyramid and >> Python 3 and dealing with changes within Python 3: I remember all of >> those broke functionality until Formencode was patched. >> >> On Tue, Apr 1, 2025 at 2:20 PM Jonathan Vanasco <[email protected]> wrote: >> > >> > i forgot to mention - if your app uses formencode for validation, I ported >> > the pylons validation to pyramid a long time ago and still actively use >> > and maintain it - https://github.com/jvanasco/pyramid_formencode_classic >> > >> > >> > On Tuesday, April 1, 2025 at 1:14:08 PM UTC-4 Jonathan Vanasco wrote: >> >> >> >> Pyramid offers a few ways to implement the routes/controllers. >> >> >> >> The easiest when porting from Pylons is to use classes with @viewconfig, >> >> that can mimic the pylons handler classes. >> >> >> >> This is a good example of that approach in the regular pyramid docs: >> >> https://docs.pylonsproject.org/projects/pyramid_cookbook/en/latest/pylons/views.html >> >> >> >> Pretty much everything can be supported and migrated with not too much >> >> work, except for the globals. IIRC Pylons did some weird stuff with >> >> globals that wasn't necessarily threadsafe. When moving to pyramid you >> >> can use events to define/translate "globals" into templates. For the >> >> python code, you can also update code to not use globals and take a >> >> context object as the first argument. The context object could be a >> >> request, or an object that wraps a request. >> >> >> >> In terms of templating - if there isn't a genshi package you could >> >> probably model one after pyramid_mako and port the pylons package over. >> >> It might be much faster to do that, and then lightly adapt the templates, >> >> then reinvent everything. >> >> >> >> >> >> On Tuesday, April 1, 2025 at 6:48:01 AM UTC-4 Milan Kelesi wrote: >> >>> >> >>> Hello, >> >>> >> >>> We are planning to migrate an existing project from Pylons 1.0.2 to >> >>> Pyramid 2.x. >> >>> What would be the best approach to start? >> >>> I understand we need to rewrite all the controllers. >> >>> We are using Genshi templates and this does not seem to be supported in >> >>> Pyramid 2. What would be the easiest template engine to migrate to from >> >>> Genshi (Mako, Jinja2, Chameleon, ..) >> >>> Is there an easy way to reuse the existing routes, globals, application >> >>> setup? >> >>> I am currently a bit overwhelmed and not sure where to start. >> >>> I would like to get a quick win and get one simple route/controller >> >>> without authentication to work under pyramid. >> >>> >> >>> Thanks for any advice. >> > >> > -- >> > You received this message because you are subscribed to the Google Groups >> > "pylons-discuss" group. >> > To unsubscribe from this group and stop receiving emails from it, send an >> > email to [email protected]. >> > To view this discussion visit >> > https://groups.google.com/d/msgid/pylons-discuss/7411399e-9ec1-4411-9e45-5b53fcc823ebn%40googlegroups.com. >> >> >> >> -- >> Mike Orr <[email protected]> > > -- > You received this message because you are subscribed to the Google Groups > "pylons-discuss" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion visit > https://groups.google.com/d/msgid/pylons-discuss/6223811b-7edd-44ad-b5c6-ce92fb135a61n%40googlegroups.com. -- Mike Orr <[email protected]> -- You received this message because you are subscribed to the Google Groups "pylons-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion visit https://groups.google.com/d/msgid/pylons-discuss/CAH9f%3DupFX-EuK9KxECro74j3CAncWbG1wxa38iWg7TbkY2ip8Q%40mail.gmail.com.
