Change log¶
0.2.0 (May 15, 2026)¶
Changes
update versions of jax
(0.9.0.1)(0.7.1), jaxlib(0.9.0.1)(0.7.1), ortools (9.15.6755), networkx (3.4.2),nlopt (2.7.1), openpyxl (3.1.5), scipy (1.15.3),most notably numpy (2.4.4) and pandas (3.0.2).AUTODIFFED_JACOBIANandAUTODIFFED_HESSIANare now turned off by default.method
calibrate()was enriched with argumentvalidatingfollowing the open-closed-principle._svarsvariables (undocumented) henceforth mobilize injected variables in lieu of their upstream counterpart.recursively defined entities can henceforth also be vectorized (!!!)
methods_distributor()and its derivatives now rely onjax.jit’s argumentstatic_argnamesin lieu ofstatic_argnums(internally deprecating_distributor_sargnumsin favor of_distributor_sargnames, both undocumented).grand masks are now computed contingently (see
_compute_residuals_grand_masks()), improving the overall algorithm laziness.class attribute
_optim_otol_key(undocumented) was changed (from ‘f₄’) to ‘f⁴’.class
DSpacenow exposes itsSerializerinstance.saturation variables are now explicitly instantiated for the sake of design consistency.
economic attributeexciseshave been restricted to the positive real line, which can still be manually amended if needed.attribute
_code_objectswas renamed ascode_objects_getter()turned into a functional and instance-method_code_objects_getter()(undocumented) was turned into class method.methods
~._compute_residuals_grand_maskand~._compute_residuals_grand_maskswere renamed into_compute_residuals_grand_mask()and_compute_residuals_grand_masks()respectively.argument
okeyof method_optim_specifier()was removed.method
_xmains_definjecterwas renamed into_definjecter()and turned into (caching) instance method.
Breaking changes
constraint
_spcmgs_tots_nullity_was removed, which means that users should henceforth explicitly be willing for such a control by implyingInitiallyBalancedSMvia theirlibrary.instance methods
_minimization_coargumenter()and_hvars_getter()now takes a sequence of systems as argument instead of only one.methods
_distributor(),_distributors(),_distributor_jacobian(),_distributor_jacobianl(),_distributor_hessian(),_distributor_hessianl(),_distributor_hessianl_lws()and_distributor_derivatives()henceforth take positional-only argument(s).loss_collapser()and its (undocumented) underliers (such as e.g._LossCollapser) was unimplemented.rename method
_abounds_computerinto_mabounds_computer().method
___update_states___()(undocumented) becomes keywords-only.method
net_operating_surplus_computerof classesImplicitEntityandBalanceOfTradewas removed in favor ofnet_surplus_computerandnet_surplus_computer.circular definitions are no longer at work (e.g.
deflators_fisher,deflators_laspeyresanddeflators_paasche).instantiation parameter
rpremof classDynamicStockwas renamed asgrpot.class
UMarketwas renamed intoUUMarket, whileUMarketstill exists but does not embark ‘unemployment uniformity’ any longer.classesOImplicitLeontiefandMarshallianILeonow inherits fromOrdinalerinstead ofInvestor.
Bug Fixes:
_arrays_mdata(undocumented) did not contain the correct (boolean) mask type information, which prevented the correct symbol from being assigned duringSymer-base enrichment.the IAMAX-interfaced sparse feature of IPOPT was actually not restricting the set of Lagrangian coefficients to its very structure, e.g. inequality with no equality constraint.
New
library’s featuresadd method
_factor_pow_increaser().add class
InitiallyBalancedSM.add method
_multiply(), also aliased by_safe_by_0_mul(). For the sake of consistency,_divide()is henceforth aliased by_safe_by_0_div().add methods
_add_ufunc()and_sum().add classes
LaspeyresianGFLandL1NzIntDrivenDemands.add class
CoInitiatedVolumes.add class
BalancedSM.add argument
ioq_shares_drates2tocompute_calibrand_0_star().add class
UniformGhoshAllocationPremia.enrich classes
ImplicitEntityandBalanceOfTradewith methodsnet_operating_surplus_computer()andnet_operating_surplus_computer()respectively.add classes
ImplicitIncomeandImplicitTransitories.enrich classes
ImplicitEntityandBalanceOfTradewith methodsother_costs_computer()andother_costs_computer()respectively.enrich
ArraysDealerwith_weighter().add classes
ImplicitLeontief,AdditiveOrdinaler,OImplicitLeontief,HicksianRGAFCES,HicksianPICES,AddedOPCosts,UniformPrice.class
UniformUnemploymentnow has an instantiation argument, namelyprice_transmitting, as well as a newcompute_calibrand_0()method.class
DynamicStockhas an additional instantiation argument nameddyear0.add class
Ordinaler.
New
conf’s featuresadd
ENABLED_SCALINGandAUTODIFFED_JACOBIANeditable under the same name (prior to module loading) viaos.environ.add
LOSSES_FACTOReditable under the same name (prior to module loading) viaos.environ.add
RELATIVE_OCOSTSeditable under the same name (prior to module loading) viaos.environ.add
UNCLUSTERED_USER_METHODSeditable under the same name (prior to module loading) viaos.environ.add
RELATIVE_SPCMGSeditable under the same name (prior to module loading) viaos.environ.add
NONLINEAR_SCALINGeditable under the same name (prior to module loading) viaos.environ.add
LIFTED_DAGeditable under the same name (prior to module loading) viaos.environ.add
COMPILED_ARCOMPONENTSeditable under the same name (prior to module loading) viaos.environ.
New
core’s features_ndarray_undensifier()can henceforth deal with 1-dimensional arrays as well as boolean arrays, whatever the dimensionality.add post-modeling attribute
_constraints_jacobian().add ancillary method
_iid_flattenting_identifier().the output’s dimensionality of methods
_distributor(),_distributor_jacobian(),_distributor_hessian(),_distributor_hessianl()and_distributor_hessianl_lws()was ‘sanitized’, which paves the way to generalization._distributor_hessianl()can now compute hessian hypermatrices of any hight indifferently (which_distributor_hessian()does intrinsically following the precited sanitization).add (undocumented) ancillary methods/attributes
_distributor_pkwargs(),_forced_lnrzd, etc,_batch_size.add modeling method
_distributor_jacobianl().add modeling methods
_compute_residuals_grand_masks(),._distributor_jacobianl_structurer()and_distributor_hessianl_structurer()add modeling methods_distributor_jacobianl_sp(),_distributor_hessianl_sp()and_distributor_hessianl_lws_sp().add ancillary methods
_jx_jit()and_soberly_computed().add modeling methods
,_distributors(),_distributor_jacobianls()_distributor_jacobianls_fuzzer(),_distributor_jacobianls_structurer(),_distributor_jacobianls_sp(),_distributor_hessianls(),_distributor_hessianls_lws(),_distributor_hessianls_structurer(),._distributor_hessianls_sp(),_distributor_hessianls_lws_sp(),_distributor_hessianl_sps_lws(),_distributor_lsps_lws_hessian()add method
_ipopt_kwargs_maker()(undocumented) whose purpose is to explain the parameters operating when IPOPT is mobilized.add modeling methods
_distributor_sp_jacobianl()and_distributor_sp_hessianl().enrich method
minimize()with a new set of minimization methods allowing for the use of IPOPT with sparse-related features, i.e. setting argumentoalgoto e.g.'sp.mumps','sp.pardiso', etc.add (undocumented) ancillary attribute
_hessian_cpprch.improve
_rsaturations_computer(), i.e. stabilized, smoothed (\(C^{\infty}\)), enriched with a configurable (private) regularization offset.add modeling method._distributor_ocomponents()add (undocumented) attribute
_ƶvars_namesand method_computers_argnames_getter().add attributes
_œvars_namesand_ƨvars_names.positivity constraints now also possess their own scaling factor.
add methods
_systems_interpreter(),_zsystems_evaluator(),_compute_opscalers()and_set_œscalers().add (undocumented) ancillary attributes
_œvars_qs,__ƨvars_qs,__ƨvars_dodicts,_ƨvars_xoots,_xvars_dkind.add modeling methods
_distributor_decomposer(),_distributor_jacobianl_decomposer(),_distributors_fuzzer().method
minimize()has one new argument,salgo.method
_xdarray_labeller()has one new argument,force_section_frames.add economic variables
input_values_sharesandadditive_input_volumes_shares.add ancillary (undocumented) attribute
_sp_1mat_cqand methods_ivals_mk_cq_computer(),_ivals_mk_cq_ɗcomputer(),_coprcs_mk_cq_computer(),_ivols_mk_cq_computer().improved
_fancy_connecter()’sNotImplementedErrorerror message in the unknown configuration case.add method
_ndarray_undtyping_booler().add economic attribute
ordinal_values.economic attribute
net_operating_surplusnow has its “injecter”. Will eventually be removed in favor of an attribute located further upstream in the calculation graph.add economic attribute
custom_qois, aliased bytransitoriesanduser_statistics.add economic attributes
other_costs_bdown,other_costs,other_costs_ratesadd ancillary attribute
_dag_specs, whose content diverges from_arrays_mdata(undocumented) asUNCLUSTERED_USER_METHODSis set to'1'.add method
_ndarray_dtyping_negbooler().input validation done at user classes’ initialization does not fail any longer.
pure feasibility problem, i.e. \(\text{find} \ x \ \text{s.t.} \ g(x)=0, \ h(x) \geq 0\) can now be programmed.
add attributes
_minimization_residualsandminimization_residuals.method
minimize()has one new argument,rschedule.add method
_compose_chain()and attribute_symbolization_gain.add method
_type_duct_expander().(dynamically augmented) user-defined classes are now picklable.
add method
_constraints_reachability_map().add ancillary attributes
_identifiers_exp,_identifiers_imp,valued_econsumptions,valued_iconsumptionsandvalued_consumptions.
New
utils’s featuresmethod
otbprint()can now deal with array-like values.add methods
_is_static_method(),_is_class_method(),_method_input_signature().add class
Symer, which addition enriches the package with a symbolic component.method
str_sanitizer()now 1) removes"+"symbol and 2) protects greek letters from “sanitization”.method
_items_coercer()now deals with duplicate keys.method
dag_sorter()now has argumentcycle_cutset.try_()can henceforth returntraceback.TracebackExceptioninstances as returned_v.add method
topological_generations_subsetter().refactoring led to define method
dag_maker().add method
dag_uncycler().method
namedtupler()now returns picklable instance, of their own kind though.
New
test_core’s featuresadd methods
test_constraint_nth_order_linearization_reliability(),test_pub2pri_supersetting(),test_œƨvars_exhaustivity().
New
test_utilsfeaturesadd methods
test_is_static_method(),test_is_class_method(),test_method_input_signature().add class
TestSymer.
0.1.1 (August 10, 2024)¶
Changes
the minimum Python version is now 3.10. 3.10 will remain the minimum supported version until July 2025.
MarshallianGFCEShas one additional instantiation argument,negated_mask.
New
conf’s featuresadd
CSCALINGF_LOGBASE,REGRESSED_IGUESSandREGRESSED_SCALINGeditable under the same name (prior to module loading) viaos.environ.
New
core’s featuresthe solver can now be provided with scaling factors, following the
XUNK_SF_CNAMEparameter format. Note that such possibility is henceforth provided forCUNK_0D_SYM-,RUNK_0D_SYM- andRUNK_1D_SYM-specified values.add method
_minimization_jacobian_computer().add ancillary attribute
_œvars_names.
New
library’s featuresadd classes
Passive,IOnBoard,HicksianGAFCES,HicksianGFLUMRSAQConserver.
New
utils’s featuresadd method
_mdefargs_collecter().
Bug Fixes:
sheets named similarly to private variables were incorrectly causing
_ndarray_reader()to raise aValueError.improve
dtypesinference during the vectorization of the users’ classes’ instantiation arguments. Mixed types were erroneously returned asobject, which behavior clearly was (numpy- and) jax-unfriendly.
0.1.0 (April 28, 2024)¶
Breaking changes
library’sTanhCurvedNetPrice’s methods (still structure-dependent) now require the deflator of interest to be the first component of the passed arrays.sheet names
"direct_taxes","corpo_income_taxes_rates"and"indiv_income_taxes_rates"are temporarily restricted until the circularity between taxes and transfers has been tackled.economic attribute
income_public_circuit_leoninvwas removed until its implication could also address issues of circularity in transfers.Income public/private circuits data must be specified in the transposed version of what they were until now.
update versions of attrs (23.1.0), anytree (2.12.1), jax (0.4.26), jaxlib (0.4.26), joblib (1.3.2), networkx (3.3), numpy (1.26.4), pandas (2.1.4), scipy (1.13.0), tabulate (0.9.0), unidecode (1.3.7), xlrd (2.0.1) and xmltodict (0.13.0).
iamaxis now compatible with all Python versions (>3.8) and does not require OS-specific installation procedures.Python 3.8 support has been dropped.
New
conf’s featuresadd
EXOGENOUS_MRENTS, editable under the same name (prior to module loading) viaos.environ.To be set toIndeed, data supporting1for, e.g., backward compatibility.markets_rents(via the sheet mapped tomarkets_rents) at instantiation can be seen as superfluous since the underlying information is inferrable frominput_values(provided via the sheet mapped toinput_values) and other variables. In such a case, this would results in1) the removal of the variable in question from the list of those considered as exogenous and 2)the augmentation of the example folder’s XLSX file (i.e.ut(KLEM-BRICS-202006).xlsx) with the relevant set of zero growth constraints. HavingEXOGENOUS_MRENTSensures the backward compatibility allows for such an option to be chosen.add
JITTED_OBJECTIVE,JITTED_DERIVATIVES, (CONSTRAINED_CALIB,AGGREGATED_CONSTRAINTS)ENABLED_DENSIFICATION,ENABLED_SERIALIZATION,COMPLEX_VALUED_UNDERLIERS,HOISTED_CONSTANT_INDEXERS,ENABLED_VECTORIZATION,BROADEST_SYSTEM,TIME_UNBASED_DATA_HASHES,AUTODIFFED_HESSIAN,AVERAGED_LOSSES,OMITTED_INEQ_CONSTRAINTSandLOSSES_EXPONENT, editable under the same name (prior to module loading) viaos.environ.add
RELATIVE_STAXES,RELATIVE_CTAXES,RELATIVE_MRENTS,DETAILED_XCISES,RELATIVE_TRAMGSandDETAILED_TRAMGSeditable under the same name (prior to module loading) viaos.environ.
New
core’s features_code_objects_getter()(undocumented underlier of_code_objects) now simplifies fancy indexes as possible.add economic variables
ordinal_prices,ordinal_volumes, with the latter resulting (for the sake of completeness) in the augmentation of some preexistinglibrary’s class(es), such asInvestor, as well as modifications within country-specific KLEM XLSX files.add (economic but) ancillary variables
input_values_transposeandordinal_prices_transpose. Having such definitions poses the question of their dynamic (definition and) invocation._libobj_preparator()can now handlepropertygetters.reimplement
MSystem’s__getattr__method for undocumented attribute retrieval.introduce the capability to handle simultaneously/correlated resolved trade-offs. This feature becomes essential when dealing with portfolio allocation trade-offs wherein other (orthogonal) assets specificities must be considered.
introduce the capability of having instantiation-only computers and rooters, whose rule of identification consists in them being suffixed by
<>_crooteror<>_ccomputer.add economic attribute
idle_rates.the solver can now be provided with initial guesses, following the
XUNK_IG_CNAMEparameter format. Such possibility is only provided forCUNK_0D_SYM-specified values though, triggering aNotImplementedErrorerror otherwise.inferred (e.g. via
numpy.ptp) initial guesses cannot be out of bounds anymore._optim_specifier()henceforth offers (2) solver-initiation strategies.add attributes_loc_block_blueprint,_valued_blocks_ilocsand_stacked_blocks, prerequisites for the drastic optimization that makes up this new version.add ancillary attributes
_identifiers_left_levels_rangeand_identifiers_right_levels_range.add ancillary attributes
_loc_sparsity_map,_loc_sparsity_map_flattenand_ispaces_specs.following the definition of
ENABLED_DENSIFICATION, add methods_ndarray_densifier()(,_2darray_raveling_densifier()undocumented),_ndarray_undensifier(),_ispaces_specs_getter_umpire(),_d2s_shapes_converter(),_s2d_coords_converter()and attribute_densification_gain.following the just mentioned new methods definitions, add (undocumented) attributes/methods
_sm_lixs,_sm_lmsk,_sp_sm_lixs_line,_sp_sm_ixs_line,_dot_lm_lixs_line,_dot_lm_lmsk_liner(),_dot_rm_lixs_line,_dot_om_lixs_line,_sp_dot_lm_lixs_liner(),_sp_dot_rm_lixs_liner(),_sp_dot_om_lixs_liner(),_sp_lixs_lines,_sp_lm_lixs_mapper(),_sp_rm_lixs_mapper(),_sp_dot_lm_lixs_nliner(),_sp_dot_rm_lixs_nliner(),_sp_dot_rm_lmsk_nliner(),_sp2_dot_lm_lixs_nline,_sp2_dot_rm_lixs_nline,_sp2_dot_om_lixs_line,_sp2_dot_om_lrixs_line,_sp2_dot_om_lcixs_line,_sp_qualct,_sp_1cvec_cq,_sp_1rvec_cq,_sp_lcixs_line,_sp_lrixs_line,_sp_idnmat,_sp_1mat,_sp_h1mat.enrich
minimize()with IPOPT via cyipopt. Due to licensing constraints, solvers are not pre-packaged. Users have to compile IPOPT with their preferred solvers, ensuring compatibility and customization based on their specific needs. Refer to IPOPT documentation for installation and compilation guidance.add economic attributes
income_private_circuit_rsto,disposable_real_incomesandioq_productivities.add ancillary attribute
are_income_private_nodes.add economic attribute
gross_incomes_throughput.add ancillary attribute
are_externally_sourced.add economic attribute
spendings_dfree.enrich
minimize()with NLOPT via simplenlopt.add economic attributes
trade_margins,trade_margins_exorates,trade_margins_bases,trade_margins_rates,trade_margins_totals_bases,trade_margins_totals_rates.add post-modeling methods/attributes
_minimization_coargumenter()andminimization_jacobian.
New
utils’s featuresxl_ndtrees_op_reader()now has the possibility of rendering branches instead of explicitly structured trees, viadatumize=True.the behavior of
xl_ndtrees_op_reader()protecting original data’s structure from needless modifications has been generalized upstream at the_op_cells_unmerger()’s level._items_grouper()can now be provided with key-like getter.xl_ndtrees_op_reader()can now return (implicit) multigraphs.add
nx_neg_subgrapher(), to be used to explicit the removable subgraph(s) associated to a list of (un)desired nodes identifiers._dspaces_kroneckerizer()uses the (sorted) last data type of its input frames as output’s.add
_ellipsis_tupler()and_tuples_unnester().add class
Serializerwhose primary purpose is to save the state of an object or data structure in a way that it can be later reconstructed or restored. This is particularly important in scenarios where data needs to be e.g., stored for later use.add methods
_strict_subclass_superer()and_ndarrays_tupler().
Bug Fixes:
In certain corner cases,
xl_ndtrees_op_reader()mistakenly merged children and parent nodes. This is why the open-closed precited addition (toxl_ndtrees_op_reader()) was implemented.attrssetter()henceforth considers the possibility of composed children having intersecting namespaces.Ancillary variables henceforth also have their indexers reshaped, hashed and hoisted. Their unconsidered lower-than-3 dimensionality allowed them to escape such treatment.
New
library’s featuresadd
TanhCMultipliedTanhCNetPrice, which makes use ofTanhCurvedNetPriceandNetPriceTanhCurvedMultiplierthrough composition.HicksianCESis now fully generalized over \(\sigma \in [0, +\infty)\), be that regarding the calibration of the distribution parameters, optimal demands, output price and output quantity. Consequently,HicksianLeois destined to be deleted (sooner or later) since it henceforth is aHicksianCES’s particularization atsigma=0.benefiting from the pre-cited generalization, classes
HicksiansLeoNestedHicksianCESandHicksiansCESNestedHicksianLeohave been (‘breakingly’) removed andTwoStageHHCESadded.add (two
HicksianCES’s children classes)ScHicksianCESandSmHicksianCESclasses.add (two
TwoStageHHCES’s children classes)TwoStageScHHCESandTwoStageSmHHCESclasses.enrich
ArraysDealerwith_take().add class
Shareholders.enrich
ArraysDealerwith_constancy().add classes
MarshallianFCES,MarshallianLeoandMarshallianILeo.add
PTermsOfTrade.
New
test_core’s featuresadd
test_raw_nodes_modes_invariance()to check thatmappings’s data format specified as sparse or dense surject.
Changes
economic attribute
operating_costs’s aliasoutput_intmd_valueshas been removed.given that issue np.linalg.inv support #44 has now been solved, economic variables
income_private_circuit_order2,income_private_circuit_order3,income_private_circuit_order4,income_private_circuit_order5,income_public_circuit_order2,income_public_circuit_order3,income_public_circuit_order4,income_public_circuit_order5have no raison d’être anymore and have consequently been removed.following the addition of the precited economic variable
ordinal_volumes, classDynamicStock’s methodcapacity_computer()has ontologically been ‘repaired’ by replacing its argument namedadditive_output_volumeswithordinal_volumes.library, whoseHicksianLUMRSclass as been renamed asHicksianFLUMRSfor the sake of name representativity.disconnected variables (a.k.a
_nvars’s members, undocumented) are turned read-only.update version of anytree (from 2.8.0) to 2.9.0.
method
_libobj_paths_flattener()now returns the name and the type of attributes that are found recursively, instead of just returning their name.utilization_rateshas been turned intoidle_rates’s complement in order to fix the ontology.the nature of
income_public_circuit_order1now differs from that ofincome_private_circuit_order1, as the former, naturally predisposed to circularities, must have it addressed.library’s classesHicksiansCESNestedMarshallianCESandHicksiansCESNestedMarshallianLeohave been removedrenamed as.TwoStageHMCESandTwoStageHMLeorespectivelyancillary attributes
consumptions_types,are_autogenerated,are_intermediary,are_only_final,arent_only_final,are_finalandarent_finalhave been moved upstream fromMSystemtoDSpace.all user-defined classes have been turned vectorization friendly.
scaling is now enabled by default (as it always was for calibration).
improve automatic scaling (through
_scale_explorer()).economic attributes
deflators_lfisher,deflators_fisher,deflators_fisher_1mat,deflators_fisher_1mat_transpose,purchaser_real_prices,consumer_real_priceshave been extended to the complex plane, reflecting their very nature.._optim_specifier()’s default scaling-factors’ logarithmic base,β0, changed from2to10all
library’s methods that were usingnumpy.varnow resort toArraysDealer’s_constancy()method instead, which increases numerical stability.
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_taxesandoutput_taxes_rateshave respectively been renamed ascontrib_taxesandcontrib_taxes_ratesin 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, whoseSTxRateO2DrivenOTxRateclass as been renamed asO2STxRateDrivenCTxRateand 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.140.4.110.4.13 0.3.25 0.4.13), jaxlib (0.4.110.3.25 0.4.11), numpy (1.24.4), scipy (1.10.1) and openpyxl (3.1.2).library’s classCurvedNetPricehas been renamed asPowCurvedNetPricefor the sake of “names representativity”. Such change is potentially a breaking one.core’s variableincome_private_circuit_hleoninvhas been renamed asincome_private_circuit_leoninvsince it is not hollow anymore.utilization_ratesis not an alias ofemployment_ratesanymore, but a fully specified variable that actually consists of its transpose.net_operating_surplusandgross_operating_surplushave respectively been renamed asmarkets_rentsandindirect_operating_costsso as to protect downstream future axes of generalization as well as for the short-term sake of the ontology.net_operating_costs,gross_sales_revenuesandall_source_taxeshave respectively been renamed asoperating_costs,gross_revenuesandindirect_taxes_bdownso as to fix the ontology.economic attribute
income_circuit_lstohas 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 asincome_private_circuit.economic attribute
budget_constraintshas been renamed asdisposable_incomes, of which it becomes an alias.the example folder’s XLSX file (i.e.
ut(KLEM-BRICS-202006).xlsx, copied when resorting tocopy_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 toincome_private_circuitwhen getting an instance ofMSystem).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 tolibrary’s public methods) is now disabled by default, i.e. behind a boolean parameter set toFalseby 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 fromMSystemtoDSpace.
Display adjustment:
module-level function
display_klem_like_qois()ofklem_mixins.pyhas 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_priceshosted erroneous values for entities being only defined at the level of themappings-keyed sheet. Complying with the YAGNI principle, it henceforth displays zeros instead.
New
conf’s featuresadd
REFLECTED_RIGHTSandDETAILED_STAXES, both editable under the same name (prior to module loading) viaos.environ.
New
core’s features_libobj_preparator()can henceforth deal withlibrary’s classes having static (and non-differentiable) arguments of instantiation.add private ancillary attributes
_1rvec_cqand_1mat_cq(both undocumented) with the intention of easing the precited display adjustment.add ancillary attributes
_ilocalizations,are_rights_reflectedandframes_as_pleated, with the latter being accompanied by its (still undocumented)_iids_cqand_uiids_cqprivate underliers.add economic attributes
transfers,taxes,direct_taxes,indiv_income_taxes_rates,indiv_income_taxes,gross_incomes,corpo_income_taxes_rates,corpo_income_taxes,net_surplus,indirect_costs,indirect_costs_bdown,operating_costs_bdown,markets_rents_bdown,contrib_taxes_bdown, where the suffix<>_bdownstands for “broken down”.add the public counterpart of
income_private_circuit, i.e.income_public_circuit.add the possibility to deal with arbitrarily deep
library’s classes compositions (cf.HicksiansCESNestedMarshallianCES, which is a 2-level example of that).add the possibility to rely on recursively defined entities (through the
'mappings'sheet).**_fancy_moveupper()now offers the (defaulted) possibility of removing duplicate indexers.the example folder copied when resorting to
copy_example()henceforth contains the original XLSM fileiamaxwas initiated against, namelyKLEM BRICS jun20.xlsm, so as to authorize the (joint) opening and updating of the data file. Incidentally, text-concatenated numerical values are processed so that any non-dot decimal separator is modified.considerably reduce compilation times by pruning the objective minimization graph from downstream surcalculations.
New
library’s featuresadd
EmplBMagnitudeclass, whose vocation is to concentrate all methods related to price calculations that depend on utilization rates.add
TanhCurvedNetPriceclass, aPowCurvedNetPrice’s counterpart.add
NetPriceTanhCurvedMultiplierclass.enhance
CESwith vectorization capabilities, as well as its inheriting classes in an open-closed manner, provided that they make explicit use of them.add
MarshallianCES,HicksiansCESNestedMarshallianCES,LeontiefHicksianLeo,MarshallianLeo,HicksiansCESNestedLeontiefHicksiansCESNestedHicksianLeo,HicksiansLeoNestedHicksianCESandHicksiansCESNestedMarshallianLeoclasses.add
ArraysDealerclass, whose vocation is to concentrate all methods related to arrays manipulations, etc.add
RatesDealerclass, whose vocation is to concentrate all methods related to rates manipulation/conversion, etc.add
O2STxRateDrivenSTxRate, aO2STxRateDrivenCTxRate’s cousin.add
BalanceOfTradeclass.
New
conf’s featureadd
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_op_cells_typer()can now put specific strings aside.try_()henceforth indifferently deals with functions or methods.add methods
attrsgetter()andattrssetter(), both followingoperator’s philosophy._items_grouper()now deals withzipobjects.const_val_dropper()can now process only one axis instead of two, henceforth defaulted.xl_ndtrees_op_reader()now protects original data’s structure from needless modifications.add method
_advanced_indices_merger().xl_ndtables_pd_reader()now has an error message that indicates the problematic sheet by its name.
New
test_core’s featuresadd classes
CasesKwargs,BaseTestMSystems(abstract),TestCHNSystem,TestFRASystem,TestDZASystem, parametrized viaMetaTestMSystems.
0.0.10 (March 24, 2023)¶
Breaking changes
economic attribute
indirect_business_taxesbecomesindirect_business_taxes_totalsfor the sake of “names representativity”. Such change also propagates to its'<>_grates'and'<>_drates'counterparts.indirect_business_taxesstill exists asindirect_business_taxes_totals’s disaggregated counterpart.economic attribute
unemployments_ratesbecomesunemployment_ratesfor the sake of … english. As always, such change also propagates to its'<>_grates'and'<>_drates'counterparts.
Changes
core’s method_dag_resolverleaves GraphML files (instead of GML) on the disk, yEd-friendly potentially.many variable names in
core’s documentation have been changed to improve the system’s consistency and comprehensibility.library’s classesAddandNetPricesCurvedhave respectively been renamed asAddedVolumesandCurvedNetPricefor the sake of both “names representativity” and consistency. Such changes are potentially breaking ones.library’s classImplicitEntityhas one additional (static) method regarding how the input values of its explicit underliers are aggregated.economic attribute
unitary_income_gross_productshas been removed, as long as the need does not arise. Once again, such change propagates to …
New
core’s features_fancy_connecter()now supports axis-0 vectorization-friendly indexes, which feature has been impulsed by the just-described augmentation ofImplicitEntity.add method
_fancy_moveupper()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 tolibrary’s public methods).add ancillary attributes
frames_as_denseap,_iidentifiers,_identifiersand_localizations, with the last two being respectively aliased by_identifiers_spaceand_localizations_space.add economic attributes
employment_rates(for the sake of DRY-ness), as well asspendings,spendings_lbw,spendings_lcw,purchaser_real_pricesandconsumer_real_prices. Such additions also propagate to their ('<>_iparts', if any,)'<>_grates'and'<>_drates'counterparts.meta/economic attributes
are_only_final,arent_only_final,operating_costs,gross_operating_costs_bdownandgross_revenuesare now fully documented.
New
utils’s features_items_grouper()now deals withgeneratorobjects.
0.0.9 (March 6, 2023)¶
New
core’s featuresChanges
library’sO2STxRateDrivenCTxRateclass has seen its argument change fromsales_tax_ratetosales_tax_total_rate.core’s economic attributesexcises_exonerationsandsales_taxes_exonerationshave been removed.re-add economic attribute
excisesasexcises_totals’s disaggregated counterpart.
0.0.8 (February 22, 2023)¶
New
core’s featurethe example folder copied when resorting to
copy_example()henceforth contains a ‘mixin’ module whose (only implemented) function, namelydisplay_klem_like_qois(undocumented), displays KLEM-like quantities of interest.
Changes
sales_taxes_totals’s domain expands from \(\mathbb{R}^+\) to \(\mathbb{R}\).
0.0.7 (February 21, 2023)¶
Breaking changes
economic attributes
io_intensitiesandio_shares(and their shifted versions, e.g.io_intensities_order2orio_shares_order2) respectively becomeioq_intensitiesandioq_sharesfor the sake of “names representativity”.
New
core’s featuresadd economic attributes
iov_intensitiesandiov_sharesas well as their shifted versions.
New
library’s featuresadd
O2STxRateDrivenCTxRateclass; which addition is reflected within the entities tab of the example folder’s XLSX file, copied when resorting tocopy_example().
Changes
contrib_taxes_rates’s domain expands from \(\mathbb{R}^+\) to \(\mathbb{R}\).
0.0.6 (February 17, 2023)¶
Breaking changes
economic attributes
sales_taxesandexcisesrespectively becomesales_taxes_totalsandexcises_totalsfor the sake of “names representativity”. Such change also propagates to their'<>_grates'and'<>_drates'counterparts.sales_taxesstill exists assales_taxes_totals’s disaggregated counterpart.HicksianFCESis renamed asHicksianAFCESfor the sake “names representativity” given it was implying accounting-based output prices.HicksianFCESstill exists, logically as mobilizing no accounting equation based cost structure.
New
core’s featuresmethod
_rpremia_computer()is now fully documented.meta/economic attributes
are_autogeneratedandadded_valuesare now fully documented.add the ability for the solver to explore the complex plane of economic attributes. At the moment, only attribute
producer_gross_pricesis implemented, reachable via theproducer_gross_prices_ipartssheet.add the possibility to discriminately set arrays’ data type instead of doing so globally.
add economic/ancillary attributes
consumer_prices_iparts,input_volumes_iparts,producer_gross_prices_iparts,producer_net_prices_iparts,purchaser_prices_iparts.add post-optimization attribute
grand_saturations.
Changes
all
_null_staticmethod(undocumented) are now purely anonymous.
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_volumeshas been renamed asaggregated_input_volumesfor the sake of “names representativity”, although still existing as something else, cf.consumed_volumes.
Changes
behavioral settings’ scalar parameters (such as elasticities’) are henceforth considered as well when deviating from the example folder’s XLSX file that is copied when resorting to
copy_example()._grand_saturationhas been replaced for_grand_saturations(undocumented) with the intention of storing each optimization’s reached saturation.grand_saturationreflects this change by referencingyear-dependent values._libobj_conformity_ensurer()no longer triggers “will work in-place” warnings for calibrating methods, since they are assumed to work so.
New
library’s featuresreimplement the modeling of crisis-like shocks, such as those on labor productivity. Cf.
compute_calibrand_0_star().add
HicksianACES, which (inherits fromAccountantandHicksianCESand consequently) generates output prices that simply follow the canonical accounting equation.
New
core’s featuresall 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 featuresotbprint()now have the possibility to put JSON-unrepresentable objects aside.
0.0.4 (January 24, 2023)¶
New
core’s featuressmooth 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(cfDSpace’s instantiation arguments) that was not belonging to_localizations_spaceran 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)¶
Changes
___init_aarrays___()(undocumented) henceforth provides users with scalarDSpace’spropertyattributes on the basis of their annotation.no dotfile example anymore.
all ancillary/meta variables (such as e.g.
identity_matrix,consumptions_types,are_autogenerated, …) are made available fromlibrary.improve the documentation of some static and class methods, cf. e.g.
_loss_computer().
Breaking changes
variables’ suffixes related to noise components have been changed from
'<>_noises'to'<>_nrates'. For example,consumer_prices_noiseshenceforth isconsumer_prices_nrates.core’s economic attributeconsumer_deflatorshas been removed.
New
core’s featuresadd ancillary attributes
_localizations_space_deltas,_localization_delta,_year,_dlocalization,_dγ,delta_year,dyear.add economic attributes
additive_output_volumes,input_values_lbw,input_values_lcw,deflators_llaspeyres,deflators_laspeyres,deflators_lpaasche,deflators_paasche,deflators_sq_lfisher,deflators_lfisher,deflators_fisher.extend
MSystemwith a new family of variables, whose names end with_drates(standing for ‘driving rates’). This new variables set is analogous to that of_grates(growth rates) or_nrates(noise rates).new static/class-methods:
_ndarray_taker(),_ndarrays_taker(),_ndarray_slicing_vals_replacer().
New
library’s featuresadd
DynamicStockclass.
New
utils’s featuresmethod()can now omit arguments via their (integer-specified) position.
0.0.1 (September 13, 2022)¶
Initiation