Change log


0.2.1

  • Breaking changes

  • Bug Fixes:

    • Fix issue where the _xdarray_labeller() method could return a “pleated” dataFrame despite being called with force_full_frames=True.

  • Changes

    • class DynamicStock’s delta instantiation argument’s description was changed into “Annual deterioration rate” from “Annual depreciation rate” for the sake of disambiguation between volumes and values.

    • Method input_volumes_computer() was marginally corrected so as to let input_volumes_shocks operate in the perfect-substitutes case \(\sigma=\infty\) as well, consistently with their unconditional removal prior to aggregation in _output_volume_computer().

    • klem_mixins.py’s module-level function display_klem_like_qois() was improved.

    • sheet names "direct_taxes", "corpo_income_taxes_rates" and "indiv_income_taxes_rates" are no longer restricted since the circularity between taxes and public revenues has been tackled.

    • economic attribute income_public_circuit_leoninv is no longer removed since its implications can address issues of circularity in public revenues.

    • change the default value of the optimize argument in evolve() from True to False.

  • New core’s features

    • minimization_residuals()’s dataframe now displays the values whose confrontation is at the source of the residuals.

    • add economic variable ordinal_volumes_transpose.

    • add economic variables absorbed_volumes and absorbed_values, which generalises the logic of consumption of fixed capital to all inputs.

    • add ancillary attribute _dlocalizations (and its aliases).

    • add economic variables available_values, available_volumes_underliers, output_volumes_underliers, gos_addback_rates.

    • add economic/ancillary attribute input_volumes_angles to rotate economic input volumes in the complex plane independently of real-valued prices and values, while preserving their modulus

    • advanced users can now (surgically) modify bounds at the scalar level (undocumented) using 2-uples of values, resorting either to raw tuple coordinates or to pandas.IndexSlice instances, doing e.g.

      ms._wbsss['_kws_'].update(
          _bs=[
              (
                  ('input_values', 'n', 's', 'tex', 'n', 'Δ', '*'),
                  (-np.inf, np.inf)
              ),
              (
                  pd.IndexSlice['unemployment_rates', :, :, :, 'n', 'k'],
                  (-1., 1.)
              )
          ]
      )
      
    • advanced users can now (surgically) modify initial guesses at the scalar level (undocumented) using either direct values or slice-dependent callables whose intervals are to be populated with scaled Halton sequences, resorting either to raw tuple coordinates or to pandas.IndexSlice instances, doing e.g.

      ms._wbsss['_kws_'].update(
          _x̂s=[
              (
                  ('input_values', 'n', 'kl', 'fue', 'n', 'kle', 'fue'),
                  .0,
              ),
              (
                  pd.IndexSlice['input_volumes_angles', :, 'kl', :, :, 'kle', :],
                  # np.pi,  # could insdeed be a direct value or a callable:
                  lambda s, xlb=0.0, xub=2 * np.pi: xlb + s * xub,
              ),
          ]
      )
      
    • add economic attributes routed_public_incomes, income_public_circuit_rsto.

    • add ancillary attributes income_private_circuit_eigens and income_public_circuit_eigens.

  • New library’s features

    • Drastic enrichment/refactoring/redesign of classes EmplBMagnitude, PowCurvedNetPrice, TanhCurvedNetPrice, NetPriceTanhCurvedMultiplier and TanhCMultipliedTanhCNetPrice.

    • Classe DynamicStock was enriched with argument rental_valued (set to False by default) so as to specify whether its method available_volume_computer() (takes and) returns stock volumes intended for valuation through an implicit rental price, following the capital input measurement approach of Christensen and Jorgenson (1969), rather than as flows over the considered period.

    • Add class HicksianGPAFCES, a conceptual productivity-aware extension of HicksianGAFCES (without implying an inheritance relationship) that distinguishes freely traded-off, forced productive, and forced unproductive input consumptions. Forced unproductive inputs remain demanded and accounted for, but are excluded from the productive CES support.

    • Update HicksianGAFCES so that input_volumes_drates2 configurations following HicksianGPAFCES’s extended coding are correctly reduced to the binary freely traded-off/forced distinction, consistently for either value of negated_mask.

    • Add class OPrDynamicStock, a price-augmented DynamicStock whose output price is inherited from the lagged price of its contributory flow.

    • Add class UOPrDynamicStock, extending OPrDynamicStock with simultaneous access to the exposed available volume and its underlying stock, together with fund_crooter() enforcing the representation-consistent initial relationship between available value and contributory fund.

    • Extend CES._aggregator() to handle the Cobb–Douglas, perfect-substitutes and Leontief limiting regimes within the same indicator-based, vectorizable expression, including the multiplicative Cobb–Douglas form at \(\rho=0\) and a smooth perfectly-complementary Leontief representation with \(n^{-\nu}\) normalization at \(\rho=-\infty\).

    • Add class CESCapacity.

    • Add class HicksianUFCES (and children e.g. HicksianAUFCES), extending HicksianFCES with unimodular complex continuation of input volumes.


0.2.0 (May 15, 2026)


0.1.1 (August 10, 2024)


0.1.0 (April 28, 2024)


0.0.11 (July 18, 2023)

  • Breaking changes

    • all growth- (i.e. <>_grates) and driving-rates (i.e. <>_drates) variables that were attached to aliases have been removed.

    • economic variables output_taxes and output_taxes_rates have respectively been renamed as contrib_taxes and contrib_taxes_rates in order to fix the ontology. These changes are also reflected at the level of:

      • the example folder, with 1) data related to output taxes on domestic goods being reclassified as sales taxes, 2) relevant tabs’ names being modified accordingly and 3) a worker’s script being aligned consequently at the level of the instantiation of MSystem,

      • library, whose STxRateO2DrivenOTxRate class as been renamed as O2STxRateDrivenCTxRate and relevantly modified,

      • the calculations of the relevant downstream economic variables.

  • Changes

    • greatly — not to say considerably — improve the documentation of most of the library’s classes, and especially that of section A Canonical Use Case.

    • update versions of jax (0.3.14 0.4.11 0.4.13 0.3.25 0.4.13), jaxlib (0.4.11 0.3.25 0.4.11), numpy (1.24.4), scipy (1.10.1) and openpyxl (3.1.2).

    • library’s class CurvedNetPrice has been renamed as PowCurvedNetPrice for the sake of “names representativity”. Such change is potentially a breaking one.

    • core’s variable income_private_circuit_hleoninv has been renamed as income_private_circuit_leoninv since it is not hollow anymore.

    • utilization_rates is not an alias of employment_rates anymore, but a fully specified variable that actually consists of its transpose.

    • net_operating_surplus and gross_operating_surplus have respectively been renamed as markets_rents and indirect_operating_costs so as to protect downstream future axes of generalization as well as for the short-term sake of the ontology.

    • net_operating_costs, gross_sales_revenues and all_source_taxes have respectively been renamed as operating_costs, gross_revenues and indirect_taxes_bdown so as to fix the ontology.

    • economic attribute income_circuit_lsto has been removed, as long as the need does not arise. Such change also propagates to its '<>_grates' and '<>_drates' counterparts.

    • economic attribute income_circuit (as well as all those whose name derives from it) has been renamed as income_private_circuit.

    • economic attribute budget_constraints has been renamed as disposable_incomes, of which it becomes an alias.

    • the example folder’s XLSX file (i.e. ut(KLEM-BRICS-202006).xlsx, copied when resorting to copy_example()) makes use of the feature that consists in defining implicit entities in a recursive fashion. As a result, these entities are no longer involved in tab (arbitrarily) named 'inc-circuit' (which maps to income_private_circuit when getting an instance of MSystem).

    • the method _fancy_moveupper(), added in the previous release, and to which _fancy_connecter() relies in order to sort indexes in such a way that those related to a self-definition are placed first (when served to library’s public methods) is now disabled by default, i.e. behind a boolean parameter set to False by default. This has the direct consequence of nullifying the scalar self-dependence exception.

    • injected variables’ growth and driving rates are not computed anymore.

    • _qualvars_specs (undocumented) has been moved up from MSystem to DSpace.

  • Display adjustment:

    • module-level function display_klem_like_qois() of klem_mixins.py has been modified so that 1) sums are no longer done naively, i.e. by excluding implicit entities beforehand, 2) markup and margin rates are converted where necessary to match those displayed by KLEM.

  • Bug Fixes:

    • consumer_prices hosted erroneous values for entities being only defined at the level of the mappings-keyed sheet. Complying with the YAGNI principle, it henceforth displays zeros instead.

  • New conf’s features

  • New core’s features

  • New library’s features

  • New conf’s feature

    • add NULL_SYM, a symbol whose purpose is precisely to be omitted by the parser when assimilating input data. At the moment, its usefulness only appears within the “mappings” tab, a priori.

  • New utils’s features

  • New test_core’s features


0.0.10 (March 24, 2023)


0.0.9 (March 6, 2023)


0.0.8 (February 22, 2023)

  • New core’s feature

    • the example folder copied when resorting to copy_example() henceforth contains a ‘mixin’ module whose (only implemented) function, namely display_klem_like_qois (undocumented), displays KLEM-like quantities of interest.

  • Changes


0.0.7 (February 21, 2023)


0.0.6 (February 17, 2023)


0.0.5 (February 5, 2023)

  • Deprecations

    • variables suffixed with '<>_nrates', aka “noise variables”, are deprecated. Use their '<>_drates' counterparts instead.

  • Breaking changes

    • economic attribute known as consumed_volumes has been renamed as aggregated_input_volumes for the sake of “names representativity”, although still existing as something else, cf. consumed_volumes.

  • Changes

  • New library’s features

  • New core’s features

    • all constraints are henceforth met relatively, be them involving 0s. Such feature has strong implications in terms of generalization. The possibility of using absolute constraints is preserved though.

    • new static/class-methods: _ndarray_zeros_canceller().

    • generalize the approach regarding how illegal sheets’ names are user-notified.

    • offer the possibility to change entities’ parameters at any step/recursion of the modeling run.

    • library’s classes are henceforth allowed to “side-effect” in a (proactively) XLA-reordering-proof fashion. Such new feature could have justified an increment of the version’s minor number.

  • New utils’s features

    • otbprint() now have the possibility to put JSON-unrepresentable objects aside.


0.0.4 (January 24, 2023)

  • New core’s features

    • smooth objective functions (by avoiding the use of any positivity constraint), which improves performance.


0.0.3 (December 22, 2022)

  • Bug fixes

    • in previous versions, specifying a year (cf DSpace’s instantiation arguments) that was not belonging to _localizations_space ran the program into a (pandas’s induced) RecursionError. This is henceforth controlled and prevented by explicitly soliciting the user’s intervention, incidentally also unit-tested.

  • Changes

    • the example folder’s XLSX file (i.e. ut(KLEM-BRICS-202006).xlsx) is now editable in such a way that pointing to other countries versions is almost 100% automatic. So to speak, the only thing left to do manually is the modification of the behavioral settings. Note that 1) calculation is set to manual mode and 2) pressing F9 is likely to make all targeted data #N/A, in which case you can either specify the source directory of the KLEM file of interest or, even simpler, open it. Do not forget to press F9 again.


0.0.2b (December 19, 2022)

0.0.2 (November 3, 2022)

  • Changes

    • Complete the set of noise variables.


0.0.1 (September 13, 2022)

  • Initiation