Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build chat/weechat with perl support #252

Closed
bahamas10 opened this issue Mar 30, 2015 · 2 comments
Closed

build chat/weechat with perl support #252

bahamas10 opened this issue Mar 30, 2015 · 2 comments

Comments

@bahamas10
Copy link

context: https://twitter.com/bahamas10_/status/582603364384509952
work around: http://daveeddy.com/2015/03/30/weechat-perl-plugin-on-smartos/

basically, most plugins written for weechat are in perl (though I believe that is changing) and weechat by default compiles with perl enabled. From the comments of my blog post

The weechat port has an option for perl, so assuming you've got a ports tree downloaded, install chat/weechat with "sudo bmake PKG_OPTIONS="charset gnutls perl" install clean"

  • yourimouton (disqus)
@jperkin
Copy link
Collaborator

jperkin commented Mar 31, 2015

Ok, 2015Q1 will come with the full set of options enabled:

PKG_OPTIONS.weechat+= lua perl python ruby wide-curses

Hopefully that will cater for all tastes :)

@jperkin jperkin closed this as completed Mar 31, 2015
jperkin pushed a commit that referenced this issue May 22, 2015
Upstream changes:
1.2.0 2015-04-14 07:13:00+0000
	- [core] bundle libyaml #248 (Kazuho Oku)
	- [core] implement master-worker process mode and daemon mode (bundles Server::Starter) #258 #270 (Kazuho Oku)
	- [file] more mime-types by default #250 #254 #280 (Tatsuhiko Kubo, George Liu, Kazuho Oku)
	- [file][http1] fix connection being closed if the length of content is zero #276 (Kazuho Oku)
	- [headers] fix heap overrun during configuration #251 (Kazuho Oku)
	- [http2] do not delay sending PUSH_PROMISE #221 (Kazuho Oku)
	- [http2] reduce memory footprint under high load #271 (Kazuho Oku)
	- [http2] fix incorrect error sent when number of streams exceed the limit #268 (Kazuho Oku)
	- [proxy] fix heap overrun when building request sent to upstream #266 #269 (Moto Ishizawa, Kazuho Oku)
	- [proxy] fix laggy response in case the length of content is zero #274 #276 (Kazuho Oku)
	- [SSL] fix potential stall while reading data from client #268 (Kazuho Oku)
	- [SSL] bundle LibreSSL #236 #272 (Kazuho Oku)
	- [SSL] obtain source-level compatibility with BoringSSL #228 (Kazuho Oku)
	- [SSL] add directive `listen.ssl.cipher-preference` for controlling the selection logic of cipher-suites #233 (Kazuho Oku)
	- [SSL] disable TLS compression #252 (bisho)
	- [libh2o] fix C++ compatibility (do not use empty struct) #225 (Kazuho Oku)
	- [libh2o] search external dependencies using pkg-config #227 (Kazuho Oku)
	- [misc] fix GCC version detection bug used for controlling compiler warnings #224 (Kazuho Oku)
	- [misc] check merory allocation failures in socket pool #265 (Tatsuhiko Kubo)

1.1.1 2015-03-09 06:12:00+0000
	- [proxy] fix crash on NetBSD when upstream connection is persistent #217 (Kazuho Oku)
	- [misc] fix compile error on FreeBSD #211 #212 (Syohei Yoshida)

1.1.0 2015-03-06 06:41:00+0000
	- [core][file] send redirects appending '/' as abs-path redirects #209 (Kazuho Oku)
	- [headers] add directives for manipulating response headers #204 (Kazuho Oku)
	- [http2] do not send a corrupt response if header value is longer than 126 bytes #193 (Kazuho Oku)
	- [http2] fix interoperability issue with nghttp2 0.7.5 and above 5c42eb1 (Kazuho Oku)
	- [proxy] send `via` header to upstream #191 (Kazuho Oku)
	- [proxy] resolve hostname asynchronously #207 (Kazuho Oku)
	- [proxy] distribute load between upstream servers (using `rand()`) #208 (Kazuho Oku)
	- [proxy] fix a bug that may cause a corrupt `location` header being forwarded #190 (Kazuho Oku)
	- [reproxy] add support for `x-reproxy-url` header #187 #197 (Daisuke Maki, Kazuho Oku)

1.0.1 2015-02-23 05:50:00+0000
	- [core] change backlog size from 65,536 to 65,535 #183 (Tatsuhiko Kubo)
	- [http2] fix assertion failure in HPACK encoder #186 (Kazuho Oku)
	- [http2] add `extern` to some global variables that were not marked as such #178 (Kazuho Oku)
	- [proxy] close persistent upstream connection if client abruptly closes the stream #188 (Kazuho Oku)
	- [proxy] fix internal state corruption in case upstream sends response headers divided into multpile packets #189 (Kazuho Oku)
	- [SSL] add host header to OCSP request #176 (Masaaki Hirose)
	- [libh2o] do not require header files under `deps/` when using libh2o #173 (Kazuho Oku)
	- [libh2o] fix compile error in examples when compiled with `H2O_USE_LIBUV=0` #177 (Kazuho Oku)
	- [libh2o] in example, add missing / after the reference path #180 (Matthieu Garrigues)
	- [misc] fix invalid HTML in sample page #175 (Deepak Prakash)

1.0.0 2015-02-18 20:01:00+0000
	- [core] add redirect handler #150 (Kazuho Oku)
	- [core] add `pid-file` directive for specifying the pid file #164 (Kazuho Oku)
	- [core] connections accepted by host-specific listeners should not be handled by handlers of other hosts #163 (Kazuho Oku)
	- [core] (FreeBSD) fix a bug that prevented the standalone server from booting when run as root #160 (Kazuho Oku)
	- [core] switch to pipe-based interthread messaging #154 (Kazuho Oku)
	- [core] use kqueue on all BSDs #156 (Kazuho Oku)
	- [access-log] more logging directives: %H, %m, %q, %U, %V, %v #158 (Kazuho Oku)
	- [access-log] bugfix: header values were not logged when specified using uppercase letters #157 (Kazuho Oku)
	- [file] add application/json to defalt MIME-types #159 (Tatsuhiko Kubo)
	- [http2] add support for the finalized version of HTTP/2 #166 (Kazuho Oku)
	- [http2] fix issues reported by h2spec v0.0.6 #165 (Kazuho Oku)
	- [proxy] merge the cookie headers before sending to upstream #161 (Kazuho Oku)
	- [proxy] simplify the configuration directives (and make persistent upstream connections as default) #162 (Kazuho Oku)
	- [SSL] add configuration directive to preload DH params #148 (Jeff Marrison)
	- [libh2o] separate versioning scheme using H2O_LIBRARY_VERSION_* #167 (Kazuho Oku)

0.9.2 2015-02-10 04:17:00+0000
	- [core] graceful shutdown on SIGTERM #119 (Kazuho Oku)
	- [core] less TCP errors under high load #81 (Kazuho Oku)
	- [file] add support for HEAD requests #110 (Mark Hoersken)
	- [http1] MSIE workaround (send `Cache-Control: private` in place of Vary) #114 (Kazuho Oku)
	- [http2] support server-push #133 (Kazuho Oku)
	- [http2] fix spurious RST_STREAMS being sent #132 (Kazuho Oku)
	- [http2] weight-based distribution of bandwidth #135 (Kazuho Oku)
	- [proxy] added configuration directive `proxy.preserve-host` #112 (Masahiro Nagano)
	- [proxy] sends X-Forwarded-For and X-Forwarded-Proto headers #112 (Masahiro Nagano)
	- [proxy] stability improvements #61 (Kazuho Oku)
	- [misc] adjustments to make the source code more analyzer-friendly #113,#117 (Nick Desaulniers, Maks Naumov)

0.9.1 2015-01-19 21:13:00+0000
	- added configuration directives: ssl/cipher-suite, ssl/ocsp-update-interval, ssl/ocsp-max-failures, expires, file.send-gzip
	- [http2] added support for draft-16 (draft-14 is also supported)
	- [http2] dependency-based prioritization
	- [http2] improved conformance to the specification
	- [SSL] OCSP stapling (automatically enabled by default)
	- [SSL] fix compile error with OpenSSL below version 1.0.1
	- [file] content negotiation (serving .gz files)
	- [expires] added support for Cache-Control: max-age
	- [libh2o] libh2o and the header files installed by `make install`
	- [libh2o] fix compile error when used from C++
	- automatically setuids to nobody when run as root and if `user` directive is not set
	- automatically raises RLIMIT_NOFILE
	- uses all CPU cores by default
	- now compiles on NetBSD and other BSD-based systems
@bahamas10
Copy link
Author

I don't know how it took me this long to see your reply, but 👍 awesome!

jperkin pushed a commit that referenced this issue Oct 5, 2015
## 0.9.8 (2015-09-29)

* [#260](httprb/http#258):
  Fixed global timeout persisting time left across requests when reusing connections.
  ([@zanker][])

## 0.9.7 (2015-09-19)

* [#258](httprb/http#258):
  Unified strategy for handling exception-based and exceptionless non-blocking
  I/O. Fixes SSL support on JRuby 9000. ([@tarcieri][])


## 0.9.6 (2015-09-06)

* [#254](httprb/http#254):
  Removed use of an ActiveSupport specific method #present?
  ([@tarcieri][])


## 0.9.5 (2015-09-06)

* [#252](httprb/http#252):
  Fixed infinite hang/timeout when a request contained more than ~16,363 bytes.
  ([@zanker][])


## 0.9.4 (2015-08-26)

* Fixes regression when body streaming was failing on some URIs.
  See #246. (@zanker)
* Fixes require timeout statements. See #243. (@ixti)


## 0.9.3 (2015-08-19)

* Fixed request URI normalization. See #246. (@ixti)
  - Avoids query component normalization
  - Omits fragment component in headline


## 0.9.2 (2015-08-18)

* Fixed exceptionless NIO EOF handling. (@zanker)


## 0.9.1 (2015-08-14)

* Fix params special-chars escaping. See #246. (@ixti)


## 0.9.0 (2015-07-23)

* Support for caching removed. See #240. (@tarcieri)
* JRuby 9000 compatibility
jperkin pushed a commit that referenced this issue Nov 20, 2015
CHANGELOG:
1.16.0.1 --> 1.17.0
===================

AST changes:

* Replaced VarA with AppA in Asst (#168).
* Promoted list/tuple members changed from Promoted to Type (#162).
* Update PatBind, Match, and Alt from containing Binds to Maybe Binds to
  distinguish between empty where clauses and where clauses with no
  binds (#244).
* Add RoleAnnotDecl and Role to support Role annotations (#215).
* Move NameSpace field from EVar/IVar to EAbs/IAbs.

Other changes:

* Add standalone parsers for ImportDecl.
* Fix pretty-printer bugs for HaRP (#160).
* Insert parentheses when pretty-printing non-atomic bang types (#169).
* Un-reverse confusion of left and right arrow (#175).
* Prettyprint option pragmas like 1.15 (#172).
* Conditionally insert lines when pretty-printing declarations (#171).
* Distinguish deriving (Show) from deriving Show (#189).
* Allow parsing of unicode subscript and superscript functions (#173).
* Pretty print unboxed tuples with spaces (#193).
* Improve performance when parsing long extension lists (#200).
* Properly pretty print constructor and class operators (#204).
* Read Haskell source files as UTF-8 (#223).
* Fix ExplicitNamespaces parsing (#216).
* PolyKinds implies KindSignatures (#220).
* Preserve location information for infix binds (#205).
* Preserve positional information in checkPattern (#231).
* Maintain correct line numbers when parsing multiline GHC_OPTIONS (#218).
* Correctly parse "*" with TypeOperators (#81).
* Export the "pretty" method (#222).
* Add javascript calling convention for foreign imports (#236).
* Add non-greedy parsers for module heads (#191).
* Add a flag to disable arity checking when parsing (#260).
* Parse "-" in type signatures (#206).
* Add support for type wildcards and expression holes (#252).
* Add support for Pattern Synonyms (#197).
* Bump the happy lower bound (#250).
* Make test suite pass on GHC 7.12 (#224).
* Support linking Haddock comments to AST nodes (#213).
* Parse multiline LANGUAGE pragmas (#217).
* Parse trailing where (#25).
* Parse modules starting with pragmas and indented
  "module" keyword (#122).
* Use pretty-show to get human readable test outputs.
* Respect fixity declarations inside where/let/class in
  `applyFixities` (#212).
* Correctly parse the combination of view patterns and bang patterns. (#276)
jperkin pushed a commit that referenced this issue Mar 10, 2016
* Don't enable JRuby objectspace #252
* Fixes an exception thrown when decoding some weird .zip files #248
* Use duck typing with IO methods #244
* Added error for empty (zero bit) zip file #242
* Accept StringIO in Zip.open_buffer #238
* Do something more expected with new file permissions #237
* Case insensitivity option for #find_entry #222
* Fixes in documentation and examples
jperkin pushed a commit that referenced this issue Mar 18, 2016
=== Net::LDAP 0.14.0

* Normalize the encryption parameter passed to the LDAP constructor {#264}[ruby-ldap/ruby-net-ldap#264]
* Update Docs: Net::LDAP now requires ruby >= 2 {#261}[ruby-ldap/ruby-net-ldap#261]
* fix symbol proc {#255}[ruby-ldap/ruby-net-ldap#255]
* fix trailing commas {#256}[ruby-ldap/ruby-net-ldap#256]
* fix deprecated hash methods {#254}[ruby-ldap/ruby-net-ldap#254]
* fix space after comma {#253}[ruby-ldap/ruby-net-ldap#253]
* fix space inside brackets {#252}[ruby-ldap/ruby-net-ldap#252]
* Rubocop style fixes {#249}[ruby-ldap/ruby-net-ldap#249]
* Lazy initialize Net::LDAP::Connection's internal socket {#235}[ruby-ldap/ruby-net-ldap#235]
* Support for rfc3062 Password Modify, closes #163 {#178}[ruby-ldap/ruby-net-ldap#178]
jperkin pushed a commit that referenced this issue Jul 17, 2016
- Fix incorrectly reporting files containing disabled formatting as
  being formatted.
- Fix incorrect handling of quoted arguments in the options file (#321).
- Fix error in identifying an enum return type as an enumeration
  (#322, 323).
- Fix error in identifying an enum argument as an enumeration (#327).
- Fix recognition of Qt keywords when used as variables in C++ (#329).
- Fix recognition of a pointer in a C++ cast (#316).
- Fix removing trailing whitespace after a changed pointer or
  reference cast.

- Add new bracket style option "style=vtk" (#155).
- Add new option "indent-preproc-block" to indent blocks of preprocessor
  directives (#21, #114, #229, #242, #294).
- Add new option, "dry-run", to run AStyle without updating the files
  (#184, #285).
- Add new options, "html" (-!") and "html=###", to display the HTML help
  documentation in the default browser.
- Add tags "*INDENT-OFF*" and "*INDENT_ON*" to disable formatting of
  source code blocks (#2, #47, #55, #78, #110, #176).
- Add tag *NOPAD* to disable selected formatting on a single line.
- Add '__attribute__ ((visibility ("default")))' to Linux exported functions.
- Remove option "style=ansi" and make it depreciated (#146).
- Remove fix for broken 'case' statements from release 2.02.1, Nov 21, 2011.
- Improve Korean translation (#256).
- Change shared libraries to include the version number as part of the
  file name (#264)
- Change "help" display to stdout to allow piping and redirection (#63).
- Change "version" display to stdout.
- Change headers to include foreach, forever, Q_FOREACH, and Q_FOREVER
  (#98, #154).
- Change compiler definition ASTYLE_NO_VCX (no Visual Studio exports) to
  ASTYLE_NO_EXPORTS.
- Change shared library error handler argument from "char*" to "const char*".
- Fix not recognizing noexcept, interrupt, and autoreleasepool as
  pre-command headers (#225, #259).
- Fix formatting of C++11 uniform initializer brackets (#253, #257,
  #260, #284).
- Fix to not automatically space pad C++11 uniform initializer
  brackets (#275).
- Fix formatting of enums with leading commas (#159, #179, #270).
- Fix formatting of logical && operator in class initializers (#290).
- Fix flagging a 'const' variable as a 'const' method (#275).
- Fix piping and redirection adding an extra character to the output
  (#245, #252, #305).
- Fix "indent-modifiers" to attach class access modifiers to Horstmann
  style brackets.
- Fix ASFormatter to correctly recognize the end of a C++ raw string
  literal (#261).
- Fix to recognize C++11 "enum class" as an enum (#303).
- Fix indent of C++11 "noexecpt" statements within a class (#260, #304).
- Fix not resetting templateDepth when a template was not found (#295).
- Fix formatting of multiplication in a block paren (#144).
- Fix whitespace padding when formatting an rvalue references (#297).
- Fix to recognize an rvalue reference without a name (#265).
- Fix to not identify an operator overload method as a calculation (#296).
- Fix concatenating multiplication with a pointer dereference (#291).
- Fix recognition of a pointer dereference following a question mark (#213).
- Fix extra space after a trailing reference type (#300).
- Fix _asm blocks not being identified as a block opener and the
  variable not cleared on exit (#163).
- Fix indentation of line comments before a "class" opening bracket.
- Fix indentation of line comments before a "namespace" opening bracket.
- Fix isBracketType() method to correctly process a NULL_TYPE.
- Fix unpad-paren to recognize additional variables (#43, #132, #143).
- Fix indentation of C# "let" statements.
- Fix a few omissions with "fill-empty-lines".
- Fix file read to read 64K blocks of data.
- Refactor to un-obfuscate (clarify) the code, and improve design and
  decomposition::
    - Extract class Utf8_16 from ASConsole.
    - Replace Linux dependency on iconv with a Utf8_16 class for ASLibrary.
    - Move global "using" statements to the astyle namespace in astyle.h
      and ASLocalizer.h.
    - Move shared library declarations from astyle.h to astyle_main.h.
    - Move indentable macros from ASEnhancer to ASResource and create
      static pairs.
    - Simplify ASBeautifier procedure to identify the colon (:) type.
    - Major refactoring in ASBeautifier to create separate variables for
      an enum, a class statement and a class initializer.
    - This was needed to fix the processing of C++11 uniform
      initializers in a class initializer.
    - Minor changes to ASFormatter and ASBeautifier based on results of
      the Clang analyzer.
    - Change several methods in astyle_main to "const".
jperkin pushed a commit that referenced this issue Sep 1, 2016
* Release 0.12.2 (28-Aug-2016)

** Improved Tor Connection Handler

The `tor.control_endpoint` connection handler now properly handles the
config.SocksPort response provided by the debian Tor daemon (and possibly
others), which included a confusing unix-domain socket in its response.

The `tor.socks_port` handler was changed to accept both hostname and port
number. Using anything but "localhost" or "127.0.0.1" is highly discouraged,
as it would reveal your IP address to (possibly hostile) external hosts. This
change was made to support applications (e.g. Tahoe-LAFS) which accept
endpoint strings to configure socks_port, but then parse them and reject
anything but TCP endpoints (to match Foolscap's current limitations). Such
applications ought to warn their users to use only localhost.


* Release 0.12.1 (20-Aug-2016)

** Connection Handlers for SOCKS, Tor, I2P

Foolscap now includes importable connection handlers for SOCKS(5a), Tor, and
I2P. #242, #246, #261

These handlers require additional supporting libraries, so they must be
imported separately, and a setuptools "extra feature" declaration must be
used to ask for the supporting libs. For example, applications which want to
use `tor:` hints (on a host with a Tor daemon running) should have a setup.py
with:

  install_requires=["foolscap[tor]"],

and the Tub setup code should do:

  from foolscap.connections import tor
  tub.addConnectionHintHandler("tor", tor.default_socks())

Full examples and docs are available in docs/connection-handlers.rst.

The default connection-negotiation timeout was increased from 60s to 120s, to
accomodate tor/i2p daemon startup times.


* Release 0.12.0 (20-Jul-2016)

** API changes: no more automatic configuration

Foolscap has moved from automatic listener configuration (randomly-allocated
TCP ports, automatically-determined IP address) to using more predictable
manual configuration. In our experience, the automatic configuration only
worked on hosts which had external IP addresses, which (sadly) is not the
case for most computers attached to the modern internet. #252

Applications must now explicitly provide Foolscap with port numbers (for
Tub.listenOn) and hostnames (for Tub.setLocation). Applications are
encouraged to give users configuration controls to teach Foolscap what
hostname and port number it should advertise to external hosts in the FURLs
it creates. See https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2773 for ideas.

The specific API changes were:

- Tub.setLocationAutomatically() has been deprecated
- Listener.getPortnum() has been deprecated
- calling Tub.listenOn("tcp:0") is also deprecated: callers should allocate a
  port themselves (the foolscap.util.allocate_tcp_port utility function,
  which does not block, has been added for this purpose).

Foolscap tools like "flappserver create" and "flogtool create-gatherer" will
no longer try to deduce their external IP address in an attempt to build
externally-reachable FURLs, and will no longer accept "tcp:0" as a listening
port (they now default to specific port numbers). Instead, they have
--location= and --port arguments. The user must provide '--location' with a
connection-hint string like 'tcp:hostname.example.org:3117' (which is put
into the server's FURLs). This must match the corresponding '--port'
argument, if provided.

- for all tools, if '--port' is provided, it must not be tcp:0
- 'flappserver create' now requires --location, and '--port' defaults to
  tcp:3116
- 'flogtool create-gatherer' requires --location, default port is tcp:3117
- 'flogtool create-incident-gatherer' does too, default is tcp:3118

For backwards-compatibility, old flappservers will have "tcp:0" written into
their "BASEDIR/port" file, and an empty string in "BASEDIR/location": these
must then be edited to allow the flappserver to start. For example, write
"tcp:12345" into "BASEDIR/port" to assign a portnumber, and
"tcp:HOSTNAME:12345" into "BASEDIR/location" to expose it in the generated
FURL.

** Other API changes

Tub.listenOn() now takes a string or an Endpoint (something that implements
twisted.internet.interfaces.IStreamServerEndpoint). This makes it possible to
listen on non-IPv4 sockets (e.g. IPv6-only sockets, or unix-domain sockets,
or more exotic endpoints), as long as Tub.setLocation() is set to something
which the other end's connection handlers can deal with. #203 #243

The "DefaultTCP" handler (which manages normal "tcp:HOST:PORT" connection
hints) has been moved to foolscap.connections.tcp . This makes room for new
Tor/I2P/SOCKS handlers to live in e.g. foolscap.connections.tor . #260

Connection handlers are now allowed to return a Deferred from
hint_to_endpoint(), which should make some handlers easier to write. #262

Note that RemoteReference.notifyOnDisconnect() will be deprecated in the next
release (once all internal uses have been removed from Foolscap).
Applications should stop using it as soon as possible. #42 #140 #207

** Compatibility Changes

This release removes support for the old (py2.4) "sets" module. This was
retained to support applications which were trying to maintain py2.4
compatibility, but it's been so long since this was necessary, it's time to
remove it.

** Other Changes

The internal `allocate_tcp_port()` function was fixed: unexpected kernel
behavior meant that sometimes it would return a port that was actually in
use. This caused unit tests to fail randomly about 5% of the time. #258

IPv6 support is nearly complete: listening on a plain TCP port will typically
accept connections via both IPv4 and IPv6, and the DefaultTCP handler will do
a hostname lookup that can use both A and AAAA records. So as long as your
server has a DNS entry that points at its IPv6 address, and you provide the
hostname to Tub.setLocation(), Foolscap will connect over IPv6. There is one
piece missing for complete support: the DefaultTCP connection handler must be
modified to accept square-bracketed numeric IPv6 addresses, for rare
situations where the host has a known (stable) IPv6 address, but no DNS name.
jperkin pushed a commit that referenced this issue Jan 23, 2017
Upstream changes:
What's New in Python 3.5.3?
===========================

Release date: 2017-01-16

There were no code changes between 3.5.3rc1 and 3.5.3 final.


What's New in Python 3.5.3 release candidate 1?
===============================================

Release date: 2017-01-02

Core and Builtins
-----------------

- Issue #29073: bytearray formatting no longer truncates on first null byte.

- Issue #28932: Do not include <sys/random.h> if it does not exist.

- Issue #28147: Fix a memory leak in split-table dictionaries: setattr()
  must not convert combined table into split table.

- Issue #25677: Correct the positioning of the syntax error caret for
  indented blocks.  Based on patch by Michael Layzell.

- Issue #29000: Fixed bytes formatting of octals with zero padding in alternate
  form.

- Issue #28512: Fixed setting the offset attribute of SyntaxError by
  PyErr_SyntaxLocationEx() and PyErr_SyntaxLocationObject().

- Issue #28991:  functools.lru_cache() was susceptible to an obscure reentrancy
  bug caused by a monkey-patched len() function.

- Issue #28648: Fixed crash in Py_DecodeLocale() in debug build on Mac OS X
  when decode astral characters.  Patch by Xiang Zhang.

- Issue #19398: Extra slash no longer added to sys.path components in case of
  empty compile-time PYTHONPATH components.

- Issue #28426: Fixed potential crash in PyUnicode_AsDecodedObject() in debug
  build.

- Issue #23782: Fixed possible memory leak in _PyTraceback_Add() and exception
  loss in PyTraceBack_Here().

- Issue #28379: Added sanity checks and tests for PyUnicode_CopyCharacters().
  Patch by Xiang Zhang.

- Issue #28376: The type of long range iterator is now registered as Iterator.
  Patch by Oren Milman.

- Issue #28376: The constructor of range_iterator now checks that step is not 0.
  Patch by Oren Milman.

- Issue #26906: Resolving special methods of uninitialized type now causes
  implicit initialization of the type instead of a fail.

- Issue #18287: PyType_Ready() now checks that tp_name is not NULL.
  Original patch by Niklas Koep.

- Issue #24098: Fixed possible crash when AST is changed in process of
  compiling it.

- Issue #28350: String constants with null character no longer interned.

- Issue #26617: Fix crash when GC runs during weakref callbacks.

- Issue #27942: String constants now interned recursively in tuples and frozensets.

- Issue #21578: Fixed misleading error message when ImportError called with
  invalid keyword args.

- Issue #28203: Fix incorrect type in error message from
  ``complex(1.0, {2:3})``. Patch by Soumya Sharma.

- Issue #27955: Fallback on reading /dev/urandom device when the getrandom()
  syscall fails with EPERM, for example when blocked by SECCOMP.

- Issue #28131: Fix a regression in zipimport's compile_source().  zipimport
  should use the same optimization level as the interpreter.

- Issue #25221: Fix corrupted result from PyLong_FromLong(0) when
  Python is compiled with NSMALLPOSINTS = 0.

- Issue #25758: Prevents zipimport from unnecessarily encoding a filename
  (patch by Eryk Sun)

- Issue #28189: dictitems_contains no longer swallows compare errors.
  (Patch by Xiang Zhang)

- Issue #27812: Properly clear out a generator's frame's backreference to the
  generator to prevent crashes in frame.clear().

- Issue #27811: Fix a crash when a coroutine that has not been awaited is
  finalized with warnings-as-errors enabled.

- Issue #27587: Fix another issue found by PVS-Studio: Null pointer check
  after use of 'def' in _PyState_AddModule().
  Initial patch by Christian Heimes.

- Issue #26020: set literal evaluation order did not match documented behaviour.

- Issue #27782: Multi-phase extension module import now correctly allows the
  ``m_methods`` field to be used to add module level functions to instances
  of non-module types returned from ``Py_create_mod``. Patch by Xiang Zhang.

- Issue #27936: The round() function accepted a second None argument
  for some types but not for others.  Fixed the inconsistency by
  accepting None for all numeric types.

- Issue #27487: Warn if a submodule argument to "python -m" or
  runpy.run_module() is found in sys.modules after parent packages are
  imported, but before the submodule is executed.

- Issue #27558: Fix a SystemError in the implementation of "raise" statement.
  In a brand new thread, raise a RuntimeError since there is no active
  exception to reraise. Patch written by Xiang Zhang.

- Issue #27419: Standard __import__() no longer look up "__import__" in globals
  or builtins for importing submodules or "from import".  Fixed handling an
  error of non-string package name.

- Issue #27083: Respect the PYTHONCASEOK environment variable under Windows.

- Issue #27514: Make having too many statically nested blocks a SyntaxError
  instead of SystemError.

- Issue #27473: Fixed possible integer overflow in bytes and bytearray
  concatenations.  Patch by Xiang Zhang.

- Issue #27507: Add integer overflow check in bytearray.extend().  Patch by
  Xiang Zhang.

- Issue #27581: Don't rely on wrapping for overflow check in
  PySequence_Tuple().  Patch by Xiang Zhang.

- Issue #27443: __length_hint__() of bytearray iterators no longer return a
  negative integer for a resized bytearray.

- Issue #27942: Fix memory leak in codeobject.c

Library
-------

- Issue #15812: inspect.getframeinfo() now correctly shows the first line of
  a context.  Patch by Sam Breese.

- Issue #29094: Offsets in a ZIP file created with extern file object and modes
  "w" and "x" now are relative to the start of the file.

- Issue #13051: Fixed recursion errors in large or resized
  curses.textpad.Textbox.  Based on patch by Tycho Andersen.

- Issue #29119: Fix weakrefs in the pure python version of
  collections.OrderedDict move_to_end() method.
  Contributed by Andra Bogildea.

- Issue #9770: curses.ascii predicates now work correctly with negative
  integers.

- Issue #28427: old keys should not remove new values from
  WeakValueDictionary when collecting from another thread.

- Issue 28923: Remove editor artifacts from Tix.py.

- Issue #28871: Fixed a crash when deallocate deep ElementTree.

- Issue #19542: Fix bugs in WeakValueDictionary.setdefault() and
  WeakValueDictionary.pop() when a GC collection happens in another
  thread.

- Issue #20191: Fixed a crash in resource.prlimit() when pass a sequence that
  doesn't own its elements as limits.

- Issue #28779: multiprocessing.set_forkserver_preload() would crash the
  forkserver process if a preloaded module instantiated some
  multiprocessing objects such as locks.

- Issue #28847: dbm.dumb now supports reading read-only files and no longer
  writes the index file when it is not changed.

- Issue #25659: In ctypes, prevent a crash calling the from_buffer() and
  from_buffer_copy() methods on abstract classes like Array.

- Issue #28732: Fix crash in os.spawnv() with no elements in args

- Issue #28485: Always raise ValueError for negative
  compileall.compile_dir(workers=...) parameter, even when multithreading is
  unavailable.

- Issue #28387: Fixed possible crash in _io.TextIOWrapper deallocator when
  the garbage collector is invoked in other thread.  Based on patch by
  Sebastian Cufre.

- Issue #27517: LZMA compressor and decompressor no longer raise exceptions if
  given empty data twice.  Patch by Benjamin Fogle.

- Issue #28549: Fixed segfault in curses's addch() with ncurses6.

- Issue #28449: tarfile.open() with mode "r" or "r:" now tries to open a tar
  file with compression before trying to open it without compression.  Otherwise
  it had 50% chance failed with ignore_zeros=True.

- Issue #23262: The webbrowser module now supports Firefox 36+ and derived
  browsers.  Based on patch by Oleg Broytman.

- Issue #27939: Fixed bugs in tkinter.ttk.LabeledScale and tkinter.Scale caused
  by representing the scale as float value internally in Tk.  tkinter.IntVar
  now works if float value is set to underlying Tk variable.

- Issue #28255: calendar.TextCalendar().prmonth() no longer prints a space
  at the start of new line after printing a month's calendar.  Patch by
  Xiang Zhang.

- Issue #20491: The textwrap.TextWrapper class now honors non-breaking spaces.
  Based on patch by Kaarle Ritvanen.

- Issue #28353: os.fwalk() no longer fails on broken links.

- Issue #25464: Fixed HList.header_exists() in tkinter.tix module by addin
  a workaround to Tix library bug.

- Issue #28488: shutil.make_archive() no longer add entry "./" to ZIP archive.

- Issue #24452: Make webbrowser support Chrome on Mac OS X.

- Issue #20766: Fix references leaked by pdb in the handling of SIGINT
  handlers.

- Issue #26293: Fixed writing ZIP files that starts not from the start of the
  file.  Offsets in ZIP file now are relative to the start of the archive in
  conforming to the specification.

- Issue #28321: Fixed writing non-BMP characters with binary format in plistlib.

- Issue #28322: Fixed possible crashes when unpickle itertools objects from
  incorrect pickle data.  Based on patch by John Leitch.

- Fix possible integer overflows and crashes in the mmap module with unusual
  usage patterns.

- Issue #1703178: Fix the ability to pass the --link-objects option to the
  distutils build_ext command.

- Issue #28253: Fixed calendar functions for extreme months: 0001-01
  and 9999-12.

  Methods itermonthdays() and itermonthdays2() are reimplemented so
  that they don't call itermonthdates() which can cause datetime.date
  under/overflow.

- Issue #28275: Fixed possible use after free in the decompress()
  methods of the LZMADecompressor and BZ2Decompressor classes.
  Original patch by John Leitch.

- Issue #27897: Fixed possible crash in sqlite3.Connection.create_collation()
  if pass invalid string-like object as a name.  Patch by Xiang Zhang.

- Issue #18893: Fix invalid exception handling in Lib/ctypes/macholib/dyld.py.
  Patch by Madison May.

- Issue #27611: Fixed support of default root window in the tkinter.tix module.

- Issue #27348: In the traceback module, restore the formatting of exception
  messages like "Exception: None".  This fixes a regression introduced in
  3.5a2.

- Issue #25651: Allow falsy values to be used for msg parameter of subTest().

- Issue #27932: Prevent memory leak in win32_ver().

- Fix UnboundLocalError in socket._sendfile_use_sendfile.

- Issue #28075: Check for ERROR_ACCESS_DENIED in Windows implementation of
  os.stat().  Patch by Eryk Sun.

- Issue #25270: Prevent codecs.escape_encode() from raising SystemError when
  an empty bytestring is passed.

- Issue #28181: Get antigravity over HTTPS. Patch by Kaartic Sivaraam.

- Issue #25895: Enable WebSocket URL schemes in urllib.parse.urljoin.
  Patch by Gergely Imreh and Markus Holtermann.

- Issue #27599: Fixed buffer overrun in binascii.b2a_qp() and binascii.a2b_qp().

- Issue #19003:m email.generator now replaces only \r and/or \n line
  endings, per the RFC, instead of all unicode line endings.

- Issue #28019: itertools.count() no longer rounds non-integer step in range
  between 1.0 and 2.0 to 1.

- Issue #25969: Update the lib2to3 grammar to handle the unpacking
  generalizations added in 3.5.

- Issue #14977: mailcap now respects the order of the lines in the mailcap
  files ("first match"), as required by RFC 1542.  Patch by Michael Lazar.

- Issue #24594: Validates persist parameter when opening MSI database

- Issue #17582: xml.etree.ElementTree nows preserves whitespaces in attributes
  (Patch by Duane Griffin.  Reviewed and approved by Stefan Behnel.)

- Issue #28047: Fixed calculation of line length used for the base64 CTE
  in the new email policies.

- Issue #27445: Don't pass str(_charset) to MIMEText.set_payload().
  Patch by Claude Paroz.

- Issue #22450: urllib now includes an "Accept: */*" header among the
  default headers.  This makes the results of REST API requests more
  consistent and predictable especially when proxy servers are involved.

- lib2to3.pgen3.driver.load_grammar() now creates a stable cache file
  between runs given the same Grammar.txt input regardless of the hash
  randomization setting.

- Issue #27570: Avoid zero-length memcpy() etc calls with null source
  pointers in the "ctypes" and "array" modules.

- Issue #22233: Break email header lines *only* on the RFC specified CR and LF
  characters, not on arbitrary unicode line breaks.  This also fixes a bug in
  HTTP header parsing.

- Issue 27988: Fix email iter_attachments incorrect mutation of payload list.

- Issue #27691: Fix ssl module's parsing of GEN_RID subject alternative name
  fields in X.509 certs.

- Issue #27850: Remove 3DES from ssl module's default cipher list to counter
  measure sweet32 attack (CVE-2016-2183).

- Issue #27766: Add ChaCha20 Poly1305 to ssl module's default ciper list.
  (Required OpenSSL 1.1.0 or LibreSSL).

- Issue #26470: Port ssl and hashlib module to OpenSSL 1.1.0.

- Remove support for passing a file descriptor to os.access. It never worked but
  previously didn't raise.

- Issue #12885: Fix error when distutils encounters symlink.

- Issue #27881: Fixed possible bugs when setting sqlite3.Connection.isolation_level.
  Based on patch by Xiang Zhang.

- Issue #27861: Fixed a crash in sqlite3.Connection.cursor() when a factory
  creates not a cursor.  Patch by Xiang Zhang.

- Issue #19884: Avoid spurious output on OS X with Gnu Readline.

- Issue #27706: Restore deterministic behavior of random.Random().seed()
  for string seeds using seeding version 1.  Allows sequences of calls
  to random() to exactly match those obtained in Python 2.
  Patch by Nofar Schnider.

- Issue #10513: Fix a regression in Connection.commit().  Statements should
  not be reset after a commit.

- A new version of typing.py from https://github.com/python/typing:
  - Collection (only for 3.6) (Issue #27598)
  - Add FrozenSet to __all__ (upstream #261)
  - fix crash in _get_type_vars() (upstream #259)
  - Remove the dict constraint in ForwardRef._eval_type (upstream #252)

- Issue #27539: Fix unnormalised ``Fraction.__pow__`` result in the case
  of negative exponent and negative base.

- Issue #21718: cursor.description is now available for queries using CTEs.

- Issue #2466: posixpath.ismount now correctly recognizes mount points which
  the user does not have permission to access.

- Issue #27773: Correct some memory management errors server_hostname in
  _ssl.wrap_socket().

- Issue #26750: unittest.mock.create_autospec() now works properly for
  subclasses of property() and other data descriptors.

- In the curses module, raise an error if window.getstr() or window.instr() is
  passed a negative value.

- Issue #27783: Fix possible usage of uninitialized memory in
  operator.methodcaller.

- Issue #27774: Fix possible Py_DECREF on unowned object in _sre.

- Issue #27760: Fix possible integer overflow in binascii.b2a_qp.

- Issue #27758: Fix possible integer overflow in the _csv module for large
  record lengths.

- Issue #27568: Prevent HTTPoxy attack (CVE-2016-1000110). Ignore the
  HTTP_PROXY variable when REQUEST_METHOD environment is set, which indicates
  that the script is in CGI mode.

- Issue #27656: Do not assume sched.h defines any SCHED_* constants.

- Issue #27130: In the "zlib" module, fix handling of large buffers
  (typically 4 GiB) when compressing and decompressing.  Previously, inputs
  were limited to 4 GiB, and compression and decompression operations did not
  properly handle results of 4 GiB.

- Issue #27533: Release GIL in nt._isdir

- Issue #17711: Fixed unpickling by the persistent ID with protocol 0.
  Original patch by Alexandre Vassalotti.

- Issue #27522: Avoid an unintentional reference cycle in email.feedparser.

- Issue #26844: Fix error message for imp.find_module() to refer to 'path'
  instead of 'name'. Patch by Lev Maximov.

- Issue #23804: Fix SSL zero-length recv() calls to not block and not raise
  an error about unclean EOF.

- Issue #27466: Change time format returned by http.cookie.time2netscape,
  confirming the netscape cookie format and making it consistent with
  documentation.

- Issue #26664: Fix activate.fish by removing mis-use of ``$``.

- Issue #22115: Fixed tracing Tkinter variables: trace_vdelete() with wrong
  mode no longer break tracing, trace_vinfo() now always returns a list of
  pairs of strings, tracing in the "u" mode now works.

- Fix a scoping issue in importlib.util.LazyLoader which triggered an
  UnboundLocalError when lazy-loading a module that was already put into
  sys.modules.

- Issue #27079: Fixed curses.ascii functions isblank(), iscntrl() and ispunct().

- Issue #26754: Some functions (compile() etc) accepted a filename argument
  encoded as an iterable of integers. Now only strings and byte-like objects
  are accepted.

- Issue #27048: Prevents distutils failing on Windows when environment
  variables contain non-ASCII characters

- Issue #27330: Fixed possible leaks in the ctypes module.

- Issue #27238: Got rid of bare excepts in the turtle module.  Original patch
  by Jelle Zijlstra.

- Issue #27122: When an exception is raised within the context being managed
  by a contextlib.ExitStack() and one of the exit stack generators
  catches and raises it in a chain, do not re-raise the original exception
  when exiting, let the new chained one through.  This avoids the PEP 479
  bug described in issue25782.

- [Security] Issue #27278: Fix os.urandom() implementation using getrandom() on
  Linux.  Truncate size to INT_MAX and loop until we collected enough random
  bytes, instead of casting a directly Py_ssize_t to int.

- Issue #26386: Fixed ttk.TreeView selection operations with item id's
  containing spaces.

- [Security] Issue #22636: Avoid shell injection problems with
  ctypes.util.find_library().

- Issue #16182: Fix various functions in the "readline" module to use the
  locale encoding, and fix get_begidx() and get_endidx() to return code point
  indexes.

- Issue #27392: Add loop.connect_accepted_socket().
  Patch by Jim Fulton.

- Issue #27930: Improved behaviour of logging.handlers.QueueListener.
  Thanks to Paulo Andrade and Petr Viktorin for the analysis and patch.

- Issue #21201: Improves readability of multiprocessing error message.  Thanks
  to Wojciech Walczak for patch.

- Issue #27456: asyncio: Set TCP_NODELAY by default.

- Issue #27906: Fix socket accept exhaustion during high TCP traffic.
  Patch by Kevin Conway.

- Issue #28174: Handle when SO_REUSEPORT isn't properly supported.
  Patch by Seth Michael Larson.

- Issue #26654: Inspect functools.partial in asyncio.Handle.__repr__.
  Patch by iceboy.

- Issue #26909: Fix slow pipes IO in asyncio.
  Patch by INADA Naoki.

- Issue #28176: Fix callbacks race in asyncio.SelectorLoop.sock_connect.

- Issue #27759: Fix selectors incorrectly retain invalid file descriptors.
  Patch by Mark Williams.

- Issue #28368: Refuse monitoring processes if the child watcher has
  no loop attached.
  Patch by Vincent Michel.

- Issue #28369: Raise RuntimeError when transport's FD is used with
  add_reader, add_writer, etc.

- Issue #28370: Speedup asyncio.StreamReader.readexactly.
  Patch by ▒<9A>о▒<80>енбе▒<80>г ▒<9C>а▒<80>к.

- Issue #28371: Deprecate passing asyncio.Handles to run_in_executor.

- Issue #28372: Fix asyncio to support formatting of non-python coroutines.

- Issue #28399: Remove UNIX socket from FS before binding.
  Patch by ▒<9A>о▒<80>енбе▒<80>г ▒<9C>а▒<80>к.

- Issue #27972: Prohibit Tasks to await on themselves.

- Issue #26923: Fix asyncio.Gather to refuse being cancelled once all
  children are done.
  Patch by Johannes Ebke.

- Issue #26796: Don't configure the number of workers for default
  threadpool executor.
  Initial patch by Hans Lawrenz.

- Issue #28600: Optimize loop.call_soon().

- Issue #28613: Fix get_event_loop() return the current loop if
  called from coroutines/callbacks.

- Issue #28639: Fix inspect.isawaitable to always return bool
  Patch by Justin Mayfield.

- Issue #28652: Make loop methods reject socket kinds they do not support.

- Issue #28653: Fix a refleak in functools.lru_cache.

- Issue #28703: Fix asyncio.iscoroutinefunction to handle Mock objects.

- Issue #24142: Reading a corrupt config file left the parser in an
  invalid state.  Original patch by Florian Höch.

- Issue #28990: Fix SSL hanging if connection is closed before handshake
  completed.
  (Patch by HoHo-Ho)

IDLE
----

- Issue #15308: Add 'interrupt execution' (^C) to Shell menu.
  Patch by Roger Serwy, updated by Bayard Randel.

- Issue #27922: Stop IDLE tests from 'flashing' gui widgets on the screen.

- Add version to title of IDLE help window.

- Issue #25564: In section on IDLE -- console differences, mention that
  using exec means that __builtins__ is defined for each statement.

- Issue #27714: text_textview and test_autocomplete now pass when re-run
  in the same process.  This occurs when test_idle fails when run with the
  -w option but without -jn.  Fix warning from test_config.

- Issue #25507: IDLE no longer runs buggy code because of its tkinter imports.
  Users must include the same imports required to run directly in Python.

- Issue #27452: add line counter and crc to IDLE configHandler test dump.

- Issue #27365: Allow non-ascii chars in IDLE NEWS.txt, for contributor names.

- Issue #27245: IDLE: Cleanly delete custom themes and key bindings.
  Previously, when IDLE was started from a console or by import, a cascade
  of warnings was emitted.  Patch by Serhiy Storchaka.

C API
-----

- Issue #28808: PyUnicode_CompareWithASCIIString() now never raises exceptions.

- Issue #26754: PyUnicode_FSDecoder() accepted a filename argument encoded as
  an iterable of integers. Now only strings and bytes-like objects are accepted.

Documentation
-------------

- Issue #28513: Documented command-line interface of zipfile.

Tests
-----

- Issue #28950: Disallow -j0 to be combined with -T/-l/-M in regrtest
  command line arguments.

- Issue #28666: Now test.support.rmtree is able to remove unwritable or
  unreadable directories.

- Issue #23839: Various caches now are cleared before running every test file.

- Issue #28409: regrtest: fix the parser of command line arguments.

- Issue #27787: Call gc.collect() before checking each test for "dangling
  threads", since the dangling threads are weak references.

- Issue #27369: In test_pyexpat, avoid testing an error message detail that
  changed in Expat 2.2.0.

Tools/Demos
-----------

- Issue #27952: Get Tools/scripts/fixcid.py working with Python 3 and the
  current "re" module, avoid invalid Python backslash escapes, and fix a bug
  parsing escaped C quote signs.

- Issue #27332: Fixed the type of the first argument of module-level functions
  generated by Argument Clinic.  Patch by Petr Viktorin.

- Issue #27418: Fixed Tools/importbench/importbench.py.

Windows
-------

- Issue #28251: Improvements to help manuals on Windows.

- Issue #28110: launcher.msi has different product codes between 32-bit and
  64-bit

- Issue #25144: Ensures TargetDir is set before continuing with custom
  install.

- Issue #27469: Adds a shell extension to the launcher so that drag and drop
  works correctly.

- Issue #27309: Enabled proper Windows styles in python[w].exe manifest.

Build
-----

- Issue #29080: Removes hard dependency on hg.exe from PCBuild/build.bat

- Issue #23903: Added missed names to PC/python3.def.

- Issue #10656: Fix out-of-tree building on AIX.  Patch by Tristan Carel and
  Michael Haubenwallner.

- Issue #26359: Rename --with-optimiations to --enable-optimizations.

- Issue #28444: Fix missing extensions modules when cross compiling.

- Issue #28248: Update Windows build and OS X installers to use OpenSSL 1.0.2j.

- Issue #28258: Fixed build with Estonian locale (python-config and distclean
  targets in Makefile).  Patch by Arfrever Frehtes Taifersar Arahesis.

- Issue #26661: setup.py now detects system libffi with multiarch wrapper.

- Issue #28066: Fix the logic that searches build directories for generated
  include files when building outside the source tree.

- Issue #15819: Remove redundant include search directory option for building
  outside the source tree.

- Issue #27566: Fix clean target in freeze makefile (patch by Lisa Roach)

- Issue #27705: Update message in validate_ucrtbase.py

- Issue #27983: Cause lack of llvm-profdata tool when using clang as
  required for PGO linking to be a configure time error rather than
  make time when --with-optimizations is enabled.  Also improve our
  ability to find the llvm-profdata tool on MacOS and some Linuxes.

- Issue #26307: The profile-opt build now applies PGO to the built-in modules.

- Issue #26359: Add the --with-optimizations configure flag.

- Issue #27713: Suppress spurious build warnings when updating importlib's
  bootstrap files.  Patch by Xiang Zhang

- Issue #25825: Correct the references to Modules/python.exp and ld_so_aix,
  which are required on AIX.  This updates references to an installation path
  that was changed in 3.2a4, and undoes changed references to the build tree
  that were made in 3.5.0a1.

- Issue #27453: CPP invocation in configure must use CPPFLAGS. Patch by
  Chi Hsuan Yen.

- Issue #27641: The configure script now inserts comments into the makefile
  to prevent the pgen and _freeze_importlib executables from being cross-
  compiled.

- Issue #26662: Set PYTHON_FOR_GEN in configure as the Python program to be
  used for file generation during the build.

- Issue #10910: Avoid C++ compilation errors on FreeBSD and OS X.
  Also update FreedBSD version checks for the original ctype UTF-8 workaround.

- Issue #28676: Prevent missing 'getentropy' declaration warning on macOS.
  Patch by Gareth Rees.
jperkin pushed a commit that referenced this issue Feb 28, 2017
Version 0.14.2
--------------

Released 2017-01-10

- Fix bug where ``FlaskForm`` assumed ``meta`` argument was not ``None`` if it
  was passed. (`#278`_)

.. _#278: wtforms/flask-wtf#278

Version 0.14.1
--------------

Released 2017-01-10

- Fix bug where the file validators would incorrectly identify an empty file as
  valid data. (`#276`_, `#277`_)

    - ``FileField`` is no longer deprecated. The data is checked during
      processing and only set if it's a valid file.
    - ``has_file`` *is* deprecated; it's now equivalent to ``bool(field.data)``.
    - ``FileRequired`` and ``FileAllowed`` work with both the Flask-WTF and
      WTForms ``FileField`` classes.
    - The ``Optional`` validator now works with ``FileField``.

.. _#276: wtforms/flask-wtf#276
.. _#277: wtforms/flask-wtf#277

Version 0.14
------------

Released 2017-01-06

- Use itsdangerous to sign CSRF tokens and check expiration instead of doing it
  ourselves. (`#264`_)

    - All tokens are URL safe, removing the ``url_safe`` parameter from
      ``generate_csrf``. (`#206`_)
    - All tokens store a timestamp, which is checked in ``validate_csrf``. The
      ``time_limit`` parameter of ``generate_csrf`` is removed.

- Remove the ``app`` attribute from ``CsrfProtect``, use ``current_app``.
  (`#264`_)
- ``CsrfProtect`` protects the ``DELETE`` method by default. (`#264`_)
- The same CSRF token is generated for the lifetime of a request. It is exposed
  as ``g.csrf_token`` for use during testing. (`#227`_, `#264`_)
- ``CsrfProtect.error_handler`` is deprecated. (`#264`_)

    - Handlers that return a response work in addition to those that raise an
      error. The behavior was not clear in previous docs.
    - (`#200`_, `#209`_, `#243`_, `#252`_)

- Use ``Form.Meta`` instead of deprecated ``SecureForm`` for CSRF (and
  everything else). (`#216`_, `#271`_)

    - ``csrf_enabled`` parameter is still recognized but deprecated. All other
      attributes and methods from ``SecureForm`` are removed. (`#271`_)

- Provide ``WTF_CSRF_FIELD_NAME`` to configure the name of the CSRF token.
  (`#271`_)
- ``validate_csrf`` raises ``wtforms.ValidationError`` with specific messages
  instead of returning ``True`` or ``False``. This breaks anything that was
  calling the method directly. (`#239`_, `#271`_)

    - CSRF errors are logged as well as raised. (`#239`_)

- ``CsrfProtect`` is renamed to ``CSRFProtect``. A deprecation warning is issued
  when using the old name. ``CsrfError`` is renamed to ``CSRFError`` without
  deprecation. (`#271`_)
- ``FileField`` is deprecated because it no longer provides functionality over
  the provided validators. Use ``wtforms.FileField`` directly. (`#272`_)

.. _`#200`: wtforms/flask-wtf#200
.. _`#209`: wtforms/flask-wtf#209
.. _`#216`: wtforms/flask-wtf#216
.. _`#227`: wtforms/flask-wtf#227
.. _`#239`: wtforms/flask-wtf#239
.. _`#243`: wtforms/flask-wtf#243
.. _`#252`: wtforms/flask-wtf#252
.. _`#264`: wtforms/flask-wtf#264
.. _`#271`: wtforms/flask-wtf#271
.. _`#272`: wtforms/flask-wtf#272

Version 0.13.1
--------------

Released 2016/10/6

- Deprecation warning for ``Form`` is shown during ``__init__`` instead of immediately when subclassing. (`#262`_)
- Don't use ``pkg_resources`` to get version, for compatibility with GAE. (`#261`_)

.. _`#261`: wtforms/flask-wtf#261
.. _`#262`: wtforms/flask-wtf#262

Version 0.13
------------

Released 2016/09/29

- ``Form`` is renamed to ``FlaskForm`` in order to avoid name collision with WTForms's base class.  Using ``Form`` will show a deprecation warning. (`#250`_)
- ``hidden_tag`` no longer wraps the hidden inputs in a hidden div.  This is valid HTML5 and any modern HTML parser will behave correctly. (`#217`_, `#193`_)
- ``flask_wtf.html5`` is deprecated.  Import directly from ``wtforms.fields.html5``. (`#251`_)
- ``is_submitted`` is true for ``PATCH`` and ``DELETE`` in addition to ``POST`` and ``PUT``. (`#187`_)
- ``generate_csrf`` takes a ``token_key`` parameter to specify the key stored in the session. (`#206`_)
- ``generate_csrf`` takes a ``url_safe`` parameter to allow the token to be used in URLs. (`#206`_)
- ``form.data`` can be accessed multiple times without raising an exception. (`#248`_)
- File extension with multiple parts (``.tar.gz``) can be used in the ``FileAllowed`` validator. (`#201`_)

.. _`#187`: wtforms/flask-wtf#187
.. _`#193`: wtforms/flask-wtf#193
.. _`#201`: wtforms/flask-wtf#201
.. _`#206`: wtforms/flask-wtf#206
.. _`#217`: wtforms/flask-wtf#217
.. _`#248`: wtforms/flask-wtf#248
.. _`#250`: wtforms/flask-wtf#250
.. _`#251`: wtforms/flask-wtf#251
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants