migrating away from formencode?

41 views
Skip to first unread message

Jonathan Vanasco

unread,
Oct 2, 2020, 1:06:13 PM10/2/20
to pylons-discuss
Does anyone have tips/advice for migrating away from Formencode?

I have a lot of apps using Formencode and will likely need to move off it.  It's no longer maintained, and needs to a patch/fork to run under Python3. That's been fine for internal apps, but it's a pain for open sourced efforts.

Steve Piercy

unread,
Oct 2, 2020, 3:40:22 PM10/2/20
to 'Jonathan Vanasco' via pylons-discuss
On 10/2/20 10:06 AM, 'Jonathan Vanasco' via pylons-discuss wrote:
> Does anyone have tips/advice for migrating away from Formencode?

For server side rendering of forms, Deform is under active development and works under both Python 2 and 3.

Demo:
https://deformdemo.pylonsproject.org/

GitHub:
https://github.com/pylons/deform

Deform 3.0.0 will use Bootstrap 4 for its templates and drop Python 2 support, although it might still work under Python 2.
https://github.com/Pylons/deform/milestone/3

--steve

Jonathan Vanasco

unread,
Oct 2, 2020, 4:00:23 PM10/2/20
to pylons-discuss
Thanks, Stev!

Deform is high on the list; I should have been more specific - I'm looking for any guidelines/tutorials/tools to migrate the code from Formencode to other libraries.  I have a lot of forms schemas/definitions to migrate.  I wrote my own validation layer, so I'm not too worried about migrating the code that interacts with forms.

FormEncode should my *last* Python2 library to support!  There is a longstanding bug on it file uploads breaking on Python3 . I've been using someone's stale PR as a patch for 2 years now, but that is just making everything too fragile so I try to keep all those apps running under Python2..

Steve Piercy

unread,
Oct 2, 2020, 4:20:34 PM10/2/20
to 'Jonathan Vanasco' via pylons-discuss
Deform uses Colander and Peppercorn. Use Colander for schemas and validation. There are no tutorials to migrate, but the demo should provide sufficient Colander schema examples for each Deform widget that you want. If you don't see something, ask!

--steve
> --
> 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 pylons-discus...@googlegroups.com <mailto:pylons-discus...@googlegroups.com>.
> To view this discussion on the web visit https://groups.google.com/d/msgid/pylons-discuss/d0a0d404-f081-41f8-865f-b073ed17bc78n%40googlegroups.com <https://groups.google.com/d/msgid/pylons-discuss/d0a0d404-f081-41f8-865f-b073ed17bc78n%40googlegroups.com?utm_medium=email&utm_source=footer>.

Ian Wilson

unread,
Oct 2, 2020, 4:28:29 PM10/2/20
to pylons-...@googlegroups.com
I guess I'm still using formencode too with python3 but maybe I just worked around the bugs.  Do you know what is holding up the release?  Is it for sure a dead-end?

- Ian

To unsubscribe from this group and stop receiving emails from it, send an email to pylons-discus...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/pylons-discuss/6f0f2332-daa6-70a1-f148-2b32abdbb459%40gmail.com.

Julien Cigar

unread,
Oct 3, 2020, 4:30:37 AM10/3/20
to 'Jonathan Vanasco' via pylons-discuss
We use Marshmallow here (with some HTML form filler), works great and
doesn't depend on anything (jquery, ...)

>
> --
> 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 pylons-discus...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/pylons-discuss/22190c16-6299-41c3-a1e4-25fed04606ccn%40googlegroups.com.


--
Julien Cigar
Belgian Biodiversity Platform (http://www.biodiversity.be)
PGP fingerprint: EEF9 F697 4B68 D275 7B11 6A25 B2BB 3710 A204 23C0
No trees were killed in the creation of this message.
However, many electrons were terribly inconvenienced.

Mike Orr

unread,
Oct 3, 2020, 1:10:53 PM10/3/20
to pylons-...@googlegroups.com
> I have a lot of apps using Formencode and will likely need to move off it. It's no longer maintained, and needs to a patch/fork to run under Python3. That's been fine for internal apps, but it's a pain for open sourced efforts.

I'm using Formencode in Python 3. When I was finally able to move
fully into Python 3 a couple years ago, Formencode had a new
maintainer and a Python 3 compatible version, so I'm not sure where
the discrepency is. I use FormEncode extensively, both for forms and
to validate the config settings. I had to use a fork of
'pyramid_fanstatic' for years because of a '' instead of b'' in the
code, until a release finally came this year, but I didn't have that
much problems with Formencode. I'll look at my code to see which
vFormencode ersion I'm using and when I dropped Python 2.

I tried using Deform/Peppercorn but I got frustrated at how it
separates validation and type conversion, whereas I often need them
combined' e.g., to allow 'int, but pass through None unchanged, and
convert empty/missing tstring o None'. I kept coming back to
Formencode even with its complications and anachronisms because it
does validation so well and flexibly that I can use it for both forms
and non-forms.

Mike Orr

unread,
Oct 3, 2020, 1:21:37 PM10/3/20
to pylons-...@googlegroups.com
On Sat, Oct 3, 2020 at 10:10 AM Mike Orr <slugg...@gmail.com> wrote:
> I tried using Deform/Peppercorn but I got frustrated at how it separates validation and type conversion

I meant Colander/Peppercorn. Deform was higher-level than I needed.
Rewriting my Formencode schemas was a paradigm shift and I spent
significant time studying the docs to express what I wanted, although
as I said I never reached a complete equivalent.

Peppercorn was another paradigm shift, converting sub-schema classes
to the hidden fields Peppercorn uses to mark the beginnings and ends
of sub-lists and sub-dicts, and to change my fieldnames to its sub-key
syntax.

All this code is long gone. There may be remnants in my Git history if
it made it to the main branch. If I find anything helpful I'll post
it.

Jonathan Vanasco

unread,
Oct 5, 2020, 10:34:35 AM10/5/20
to pylons-discuss
Talk about timing. Several hours after I posted this, Formencode merged the Python3 fix(es) and did a 2.0 release.  I guess I'm safe for now, and can migrate away at a more leisurely pace.

The big bug was on file uploads (https://github.com/formencode/formencode/issues/101), which broke under Python3.

I think the other tickers were all housekeeping.

Mike Orr

unread,
Oct 5, 2020, 11:44:45 PM10/5/20
to pylons-...@googlegroups.com
I'm using Formencode 1.3.1. My application switched to Python 3 in
2017 and I haven't had any problems with Formencode. It has two file
uploads, one with a form, and if I submit it without a file I get the
error message "Please provide only one value" mentioned in the issue.
This is not a big deal in my use case. Now that Formencode 2 is out
I'll upgrade to it.
> To view this discussion on the web visit https://groups.google.com/d/msgid/pylons-discuss/1d1850a5-2e49-47f3-835d-c44a6595c60an%40googlegroups.com.



--
Mike Orr <slugg...@gmail.com>

Jonathan Vanasco

unread,
Oct 12, 2020, 1:19:14 PM10/12/20
to pylons-discuss
It's not a big deal and only shows the wrong message if your file is required.

We have many forms with optional file uploads.  Not including a file would break the form validation.
Reply all
Reply to author
Forward
0 new messages