Change log
==========

2.4.0 (2021-04-23)
------------------

- Source code formatting of `examples` 5171ee5
- Package rename to pyrfc 47143f5
- get_nwrfclib_version at package and Connection level
- Build from source is now the default installation method on Linux. Cython is required, cpp sources not packaged any more.

2.3.0 (2020-12-02)
------------------

- set_ini_file_directory addon method added, to set the sapnwrfc.ini file directory
- Server bindings
- SAP NWRFC SDK PL7 encoding fix

2.1.0 (2020-10-13)
------------------
- Python 3.9 support
- SAP NWRFC SDK PL7 unicode fix (closes #196, #197)
- sapnwrfc.ini support, check SAP NWRFC SDK demo/sapnwrfc.ini for more details

2.0.6 (2020-06-09)
------------------
- Reopen connection after fatal errors
- Error raised instead of silent reopen, in case of RFM invocation over closed connection
- Build from PYX source if C source not found
- Remove console echo of fist 5 bytes of ABAP strings
- Platform and pyrfc version added to version
- Larger decimal numbers conversion fix, by avoid str.locale()

2.0.5 (2020-03-25)
------------------
- Build from C sources as default, Cython build optional
- Connection attributes added, as of SAP NWRFC SDK 7.50 PL3
- Throughput monitoring: number of calls, bytes sent/received, application/total time, as of SAP NWRFC SDK 7.50 PL3
- UTCLONG ABAP datatype support, as of SAP NWRFC SDK 7.50 PL4

2.0.4 (2020-03-17)
------------------
- locale method fix for Python 3.8.2 on Windows
- NWRFCSDK include path fix for Linux
- README

2.0.3 (2020-03-16)
------------------
- PyPI package pynwrfc

2.0.2 (2020-03-09)
------------------
- Float and decimal handling for locales with radix different from ".", closes #142
- sapuc.h and sapucx.h replaced by sapucrfc.h as of SAP NWRFCSDK 7.5 PL6, closes #161
- free() method added, closes #151
- ping() unit test fixed according to error message changed in PL6
- README and documentation


2.0.1 (2019-11-05)
------------------
- RFCTYPE_NUM inbound type check, close #139
- Windows compiler settings
- macOS installation documentation
- README

2.0.0 (2019-11-04)
------------------

- Documentation
- macOS rpath fix/show scripts
- Tables and structure parameters dict and list type check
- Type checks, unit tests
- sitecustomize removed, closes 136

1.9.99 (2019-10-25)
-------------------

- Python 3.8 wheels added, 3,6, 3.5 dropped
- Datatypes checks and unit test, fix #91, #120
- Connection info request when disconnected, does not open the connection any more
- Connection and RFM call parameters check
- Connection call and RFM parameters errors unit test
- Unit tests consolidation
- Documentation, fix #121

1.9.98 (2019-10-09)
-------------------

- Documentation, fix #111
- Client function description example, fix #115
- Decimal floating point types added RFC_DECF16 and RFC_DECF34, fix #116


1.9.97 (2019-10-04)
-------------------
- INT8 input handling fix


1.9.96 (2019-05-28)
-------------------
- Markdown README format configured in setup.py
- Binding version moved to pyrfc.__version__
- Function and type descriptor getters accept also lowercase names
- Input date and time check logic and performance improvement

1.9.95 (2019-05-07)
-------------------
- Data type INT8 added
- Unit tests

1.9.94 (2019-02-20)
-------------------
- macOS experimental support
- Passing optional RFC call argument equal None, closing #91
- README update, closing #93 and #80
- Documentation update, closing #81 and #82

1.9.93 (2018-08-20)
-------------------
- Tables' processing memory consumption optimisation (#60)

1.9.92 (2018-07-31)
-------------------
- pyrfc.__version__ attribute added
- Cython version restriction removed
- Documentation

1.9.91 (2018-04-27)
-------------------
- BCD and Floats input conversion fix


1.9.9 (2018-04-18)
------------------
- Deactivate not requested parameters (see RfcSetParameterActive)


1.9.8 (2017-11-26)
------------------
- Fix array fill
- Fix float values handling

1.9.7 (2017-11-08)
------------------
- Cython 0.27.3
- Helper methods added:
    remove function description from cache (issue #40)
    read function description from cache (for unit test of the above)
- No '' keys required anymore for tables with elementary line types (not a structure)
- Linux and Windows wheels for Python 2.7 and 3.6

1.9.6 (2017-03-17)
------------------
- Don't fix and fill invalid dates and times into container, let the client and backend handle
- Expose open and reopen methods
- Windows prerequisites added to README
- 8 bytes unicode fix, issue #38

1.9.5 (2016-12-23)
------------------
- wheels packages added

1.9.4 (Development)
-------------------
- RfcGetVersion API added
- More docu
- Unit tests

1.9.3 (2014-01-26)
------------------
- Fixed Date wrap bug (reported by Flavio Marinone)
- Documentation rework

1.9.2 (2012-11-26)
------------------
- Fixed BCD wrap bug (reported by Thomas Marcon)

1.9.1 (2012-10-02)
------------------
- Added server usage

  - Server class (wraps server related activities)
  - FunctionDescription and TypeDescription as classes for improved
    metadata handling.

- Added support for transactional, queued, and background RFC (tRFC, qRFC, bgRFC)
  for client usage.

- Renamed exceptions in accordance with PEP08:

  - Exception names changed to Error (e.g. ExternalRuntimeException renamed to
    ExternalRuntimeError).
  - Rfc now uppercase, e.g. RFCLibError.
  - Abap now uppercase, e.g. ABAPRuntimeError.

- Connection class

  - removed __init__ optional parameter `strip`, added `config` dictionary as optional
    parameter.
  - renamed connectionInfo to get_connection_attributes()
  - renamed resetServerContext to reset_server_context()

- RFCTYPE_BCD fields are now converted to Decimal object (wrap). For filling,
  you may pass either Decimal objects or floats.

1.9 (2012-09-14)
----------------
- Restructured exceptions:

  - All exceptions are now directly available in the pyrfc package (e.g. from pyrfc import LogonException)
  - RfclibException renamed to `RfcLibException`
  - All used exceptions (corresponding to RFC error group classes) inherit now from RfcLibException
    (implication for `LogonException`, `AbapRuntimeException`, `AbapApplicationException`)
  - Constructor for `RfcLibException` changed (first argument is now message), allowing to raise exceptions manually with
    only one string value
  - AbapException deleted.
  - Added external exceptions (`ExternalRuntimeException`, `ExternalApplicationException`, `ExternalAuthorizationException`)

- restructured and added tests (MRFC and STFC function groups).

  - fixed bugfix implications from rev. 1.8.2. (LogonException does not have code fields now)

- Added examples (sample/): printDescription.py

1.8.2 (2012-04-05)
------------------
- bugfix: LogonException now inherits from RfcException instead of
  RfcLibException so it only needs one message argument.

1.8.1 (2012-02-27)
------------------
- (bugfix in removed module)

1.8 (2012-02-07)
----------------
- added strip parameter in `Connection` to rstrip whitespaces in rfc results
- added resetServerContext
- fixed bug when dealing with xstring results
- added __bool__ for easy check if connections is alive
- release GIL for RfcInvoke and RfcOpenConnection


1.7 (2011-12-23)
----------------
- wrapped fillVariable into try..except block to
  enrich exception information
- Added _pyrfc.connectionInfo (sapnwrfc.RfcGetConnectionAttributes)


1.6 (2011-12-12)
----------------
- added bcd conversion
- added performance test
- added setup.py test suite


1.5 (2011-12-05)
----------------
- first buildout configuration that works on Linux and Windows
- rename the C extension to ``_pyrfc`` and importing it
  at the root of a new "real" Python package ``pyrfc``.
  This is fully backwards compatible and allows splitting the
  single module into a C-only part and separate Python modules
  for bettr maintainability.
- move pure Python code from the Cython extension module into
  separate Python modules for maintainability


1.4 (2011-11-25)
----------------
- start on package documentation
- re-added support for zero dates


1.3 (2011-11-22)
----------------
- fixed various buffer length issues


1.2 (2011-11-18)
----------------
- malloc'ed buffer, never too small
- type-specific RFCGetters


1.1 (2011-11-16)
----------------
- your buffer was too small


1.0 (2011-11-11)
----------------
- first egg release
