diff --git a/_sources/api/index.rst b/_sources/api/index.rst index a14a758c..e250b196 100644 --- a/_sources/api/index.rst +++ b/_sources/api/index.rst @@ -6,5 +6,6 @@ This page contains auto-generated API reference documentation [#f1]_. .. toctree:: :titlesonly: + /api/nebula/index .. [#f1] Created by `Enrique Tomás Martínez Beltrán `_ \ No newline at end of file diff --git a/_sources/api/nebula/addons/attacks/attacks/index.rst b/_sources/api/nebula/addons/attacks/attacks/index.rst index 0e9ccbae..9397683c 100644 --- a/_sources/api/nebula/addons/attacks/attacks/index.rst +++ b/_sources/api/nebula/addons/attacks/attacks/index.rst @@ -1,14 +1,11 @@ -:py:mod:`nebula.addons.attacks.attacks` -======================================= +nebula.addons.attacks.attacks +============================= .. py:module:: nebula.addons.attacks.attacks -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: @@ -19,15 +16,16 @@ Classes nebula.addons.attacks.attacks.DelayerAttack - Functions -~~~~~~~~~ +--------- .. autoapisummary:: nebula.addons.attacks.attacks.create_attack +Module Contents +--------------- .. py:function:: create_attack(attack_name) @@ -36,10 +34,10 @@ Functions .. py:class:: Attack - .. py:method:: attack(received_weights) :abstractmethod: + Function to perform the attack on the received weights. It should return the attacked weights. @@ -47,11 +45,12 @@ Functions .. py:class:: GLLNeuronInversionAttack(strength=5.0, perc=1.0) - Bases: :py:obj:`Attack` + Function to perform neuron inversion attack on the received weights. + .. py:method:: attack(received_weights) Function to perform the attack on the received weights. It should return the @@ -61,11 +60,12 @@ Functions .. py:class:: NoiseInjectionAttack(strength=10000, perc=1.0) - Bases: :py:obj:`Attack` + Function to perform noise injection attack on the received weights. + .. py:method:: attack(received_weights) Function to perform the attack on the received weights. It should return the @@ -75,9 +75,9 @@ Functions .. py:class:: SwappingWeightsAttack(layer_idx=0) - Bases: :py:obj:`Attack` + Function to perform swapping weights attack on the received weights. Note that this attack performance is not consistent due to its stochasticity. @@ -86,6 +86,7 @@ Functions Do not apply to last layer, as it would make the attack detectable (high loss on malicious node). + .. py:method:: attack(received_weights) Function to perform the attack on the received weights. It should return the @@ -95,12 +96,13 @@ Functions .. py:class:: DelayerAttack - Bases: :py:obj:`Attack` + Function to perform delayer attack on the received weights. It delays the weights for an indefinite number of rounds. + .. py:method:: attack(received_weights) Function to perform the attack on the received weights. It should return the diff --git a/_sources/api/nebula/addons/attacks/index.rst b/_sources/api/nebula/addons/attacks/index.rst index ef638a45..e930b5a7 100644 --- a/_sources/api/nebula/addons/attacks/index.rst +++ b/_sources/api/nebula/addons/attacks/index.rst @@ -1,24 +1,24 @@ -:py:mod:`nebula.addons.attacks` -=============================== +nebula.addons.attacks +===================== .. py:module:: nebula.addons.attacks Subpackages ----------- + .. toctree:: - :titlesonly: - :maxdepth: 3 + :maxdepth: 1 - poisoning/index.rst + /api/nebula/addons/attacks/poisoning/index Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - attacks/index.rst + /api/nebula/addons/attacks/attacks/index diff --git a/_sources/api/nebula/addons/attacks/poisoning/datapoison/index.rst b/_sources/api/nebula/addons/attacks/poisoning/datapoison/index.rst index c9308f7f..525378f8 100644 --- a/_sources/api/nebula/addons/attacks/poisoning/datapoison/index.rst +++ b/_sources/api/nebula/addons/attacks/poisoning/datapoison/index.rst @@ -1,15 +1,11 @@ -:py:mod:`nebula.addons.attacks.poisoning.datapoison` -==================================================== +nebula.addons.attacks.poisoning.datapoison +========================================== .. py:module:: nebula.addons.attacks.poisoning.datapoison -Module Contents ---------------- - - Functions -~~~~~~~~~ +--------- .. autoapisummary:: @@ -18,6 +14,8 @@ Functions nebula.addons.attacks.poisoning.datapoison.poison_to_nlp_rawdata +Module Contents +--------------- .. py:function:: datapoison(dataset, indices, poisoned_persent, poisoned_ratio, targeted=False, target_label=3, noise_type='salt') diff --git a/_sources/api/nebula/addons/attacks/poisoning/index.rst b/_sources/api/nebula/addons/attacks/poisoning/index.rst index 4ccdbc03..a4e6b40d 100644 --- a/_sources/api/nebula/addons/attacks/poisoning/index.rst +++ b/_sources/api/nebula/addons/attacks/poisoning/index.rst @@ -1,17 +1,17 @@ -:py:mod:`nebula.addons.attacks.poisoning` -========================================= +nebula.addons.attacks.poisoning +=============================== .. py:module:: nebula.addons.attacks.poisoning Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - datapoison/index.rst - labelflipping/index.rst - modelpoison/index.rst + /api/nebula/addons/attacks/poisoning/datapoison/index + /api/nebula/addons/attacks/poisoning/labelflipping/index + /api/nebula/addons/attacks/poisoning/modelpoison/index diff --git a/_sources/api/nebula/addons/attacks/poisoning/labelflipping/index.rst b/_sources/api/nebula/addons/attacks/poisoning/labelflipping/index.rst index cd0ea80a..12c4ede6 100644 --- a/_sources/api/nebula/addons/attacks/poisoning/labelflipping/index.rst +++ b/_sources/api/nebula/addons/attacks/poisoning/labelflipping/index.rst @@ -1,21 +1,19 @@ -:py:mod:`nebula.addons.attacks.poisoning.labelflipping` -======================================================= +nebula.addons.attacks.poisoning.labelflipping +============================================= .. py:module:: nebula.addons.attacks.poisoning.labelflipping -Module Contents ---------------- - - Functions -~~~~~~~~~ +--------- .. autoapisummary:: nebula.addons.attacks.poisoning.labelflipping.labelFlipping +Module Contents +--------------- .. py:function:: labelFlipping(dataset, indices, poisoned_persent=0, targeted=False, target_label=4, target_changed_label=7) diff --git a/_sources/api/nebula/addons/attacks/poisoning/modelpoison/index.rst b/_sources/api/nebula/addons/attacks/poisoning/modelpoison/index.rst index ba475d04..3c478755 100644 --- a/_sources/api/nebula/addons/attacks/poisoning/modelpoison/index.rst +++ b/_sources/api/nebula/addons/attacks/poisoning/modelpoison/index.rst @@ -1,21 +1,19 @@ -:py:mod:`nebula.addons.attacks.poisoning.modelpoison` -===================================================== +nebula.addons.attacks.poisoning.modelpoison +=========================================== .. py:module:: nebula.addons.attacks.poisoning.modelpoison -Module Contents ---------------- - - Functions -~~~~~~~~~ +--------- .. autoapisummary:: nebula.addons.attacks.poisoning.modelpoison.modelpoison +Module Contents +--------------- .. py:function:: modelpoison(model, poisoned_ratio, noise_type='gaussian') diff --git a/_sources/api/nebula/addons/blockchain/blockchain_deployer/index.rst b/_sources/api/nebula/addons/blockchain/blockchain_deployer/index.rst index 277636f2..adcd8d80 100644 --- a/_sources/api/nebula/addons/blockchain/blockchain_deployer/index.rst +++ b/_sources/api/nebula/addons/blockchain/blockchain_deployer/index.rst @@ -1,42 +1,35 @@ -:py:mod:`nebula.addons.blockchain.blockchain_deployer` -====================================================== +nebula.addons.blockchain.blockchain_deployer +============================================ .. py:module:: nebula.addons.blockchain.blockchain_deployer -Module Contents ---------------- - -Classes -~~~~~~~ +Attributes +---------- .. autoapisummary:: - nebula.addons.blockchain.blockchain_deployer.BlockchainDeployer - - + nebula.addons.blockchain.blockchain_deployer.w3 + nebula.addons.blockchain.blockchain_deployer.b -Attributes -~~~~~~~~~~ +Classes +------- .. autoapisummary:: - nebula.addons.blockchain.blockchain_deployer.w3 - nebula.addons.blockchain.blockchain_deployer.b + nebula.addons.blockchain.blockchain_deployer.BlockchainDeployer -.. py:data:: w3 +Module Contents +--------------- - +.. py:data:: w3 .. py:class:: BlockchainDeployer(n_validator=3, config_dir='.', input_dir='.') - Creates files (docker-compose.yaml and genesis.json) for deploying blockchain network .. py:data:: b - - diff --git a/_sources/api/nebula/addons/blockchain/chaincode/index.rst b/_sources/api/nebula/addons/blockchain/chaincode/index.rst index eaa7ce33..6841a70f 100644 --- a/_sources/api/nebula/addons/blockchain/chaincode/index.rst +++ b/_sources/api/nebula/addons/blockchain/chaincode/index.rst @@ -1,5 +1,5 @@ -:py:mod:`nebula.addons.blockchain.chaincode` -============================================ +nebula.addons.blockchain.chaincode +================================== .. py:module:: nebula.addons.blockchain.chaincode diff --git a/_sources/api/nebula/addons/blockchain/geth/index.rst b/_sources/api/nebula/addons/blockchain/geth/index.rst index c1042c80..920a0edf 100644 --- a/_sources/api/nebula/addons/blockchain/geth/index.rst +++ b/_sources/api/nebula/addons/blockchain/geth/index.rst @@ -1,5 +1,5 @@ -:py:mod:`nebula.addons.blockchain.geth` -======================================= +nebula.addons.blockchain.geth +============================= .. py:module:: nebula.addons.blockchain.geth diff --git a/_sources/api/nebula/addons/blockchain/index.rst b/_sources/api/nebula/addons/blockchain/index.rst index db575d46..3e733fd9 100644 --- a/_sources/api/nebula/addons/blockchain/index.rst +++ b/_sources/api/nebula/addons/blockchain/index.rst @@ -1,26 +1,26 @@ -:py:mod:`nebula.addons.blockchain` -================================== +nebula.addons.blockchain +======================== .. py:module:: nebula.addons.blockchain Subpackages ----------- + .. toctree:: - :titlesonly: - :maxdepth: 3 + :maxdepth: 1 - chaincode/index.rst - geth/index.rst - oracle/index.rst + /api/nebula/addons/blockchain/chaincode/index + /api/nebula/addons/blockchain/geth/index + /api/nebula/addons/blockchain/oracle/index Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - blockchain_deployer/index.rst + /api/nebula/addons/blockchain/blockchain_deployer/index diff --git a/_sources/api/nebula/addons/blockchain/oracle/app/index.rst b/_sources/api/nebula/addons/blockchain/oracle/app/index.rst index 1706aef2..e8bdd1e5 100644 --- a/_sources/api/nebula/addons/blockchain/oracle/app/index.rst +++ b/_sources/api/nebula/addons/blockchain/oracle/app/index.rst @@ -1,23 +1,28 @@ -:py:mod:`nebula.addons.blockchain.oracle.app` -============================================= +nebula.addons.blockchain.oracle.app +=================================== .. py:module:: nebula.addons.blockchain.oracle.app -Module Contents ---------------- +Attributes +---------- + +.. autoapisummary:: + + nebula.addons.blockchain.oracle.app.app + nebula.addons.blockchain.oracle.app.oracle + Classes -~~~~~~~ +------- .. autoapisummary:: nebula.addons.blockchain.oracle.app.Oracle - Functions -~~~~~~~~~ +--------- .. autoapisummary:: @@ -36,20 +41,11 @@ Functions nebula.addons.blockchain.oracle.app.rest_get_reputation_timeseries - -Attributes -~~~~~~~~~~ - -.. autoapisummary:: - - nebula.addons.blockchain.oracle.app.app - nebula.addons.blockchain.oracle.app.oracle - +Module Contents +--------------- .. py:data:: app - - .. py:function:: error_handler(func) Adds default status and header to all REST responses used for Oracle @@ -57,36 +53,12 @@ Attributes .. py:class:: Oracle - .. py:property:: contract_abi .. py:property:: contract_address - .. py:property:: gas_store - - Experiment method for requesting the detailed records of the gas reports - Returns: list of records of type: list[(node, timestamp, gas)] - - .. py:property:: time_store - :type: list - - Experiment method for requesting all records of nodes which reported timings - Returns: JSON with method:(sum_time, n_calls) for every reported node - - .. py:property:: reputation_store - :type: list - - Experiment method for requesting all records of reputations - Returns: list with (name, reputation, timestamp) - - .. py:property:: ready - :type: bool - - Returns true if the Oracle is ready itself and the chain code was deployed successfully - Returns: True if ready False otherwise - .. py:method:: wait_for_blockchain() Executes REST post request for a selected RPC method to check if blockchain @@ -95,6 +67,7 @@ Attributes + .. py:method:: transfer_funds(address) Creates transaction to blockchain network for assigning funds to Cores @@ -104,6 +77,7 @@ Attributes + .. py:method:: deploy_chaincode() Creates transaction to deploy chain code on the blockchain network by @@ -112,6 +86,7 @@ Attributes + .. py:method:: get_balance(addr) Creates transaction to blockchain network to request balance for parameter address @@ -121,6 +96,7 @@ Attributes + .. py:method:: report_gas(amount, aggregation_round) Experiment method for collecting and reporting gas usage statistics @@ -131,6 +107,7 @@ Attributes + .. py:method:: get_gas_report() Experiment method for requesting the summed up records of reported gas usage @@ -138,6 +115,12 @@ Attributes + + .. py:property:: gas_store + Experiment method for requesting the detailed records of the gas reports + Returns: list of records of type: list[(node, timestamp, gas)] + + .. py:method:: report_time(time_s, aggregation_round) Experiment method for collecting and reporting time statistics @@ -149,6 +132,7 @@ Attributes + .. py:method:: report_reputation(records, aggregation_round, sender) Experiment method for collecting and reporting reputations statistics @@ -161,43 +145,50 @@ Attributes -.. py:function:: home() + .. py:property:: time_store + :type: list + Experiment method for requesting all records of nodes which reported timings + Returns: JSON with method:(sum_time, n_calls) for every reported node -.. py:function:: rest_transfer_funds() + .. py:property:: reputation_store + :type: list -.. py:function:: rest_report_gas() + Experiment method for requesting all records of reputations + Returns: list with (name, reputation, timestamp) -.. py:function:: rest_get_balance() + .. py:property:: ready + :type: bool + Returns true if the Oracle is ready itself and the chain code was deployed successfully + Returns: True if ready False otherwise -.. py:function:: rest_status() +.. py:function:: home() -.. py:function:: rest_contract() +.. py:function:: rest_transfer_funds() +.. py:function:: rest_report_gas() -.. py:function:: rest_get_gas_report() +.. py:function:: rest_get_balance() +.. py:function:: rest_status() -.. py:function:: rest_get_gas_series() +.. py:function:: rest_contract() +.. py:function:: rest_get_gas_report() -.. py:function:: rest_report_time() +.. py:function:: rest_get_gas_series() +.. py:function:: rest_report_time() .. py:function:: rest_get_time_report() - .. py:function:: rest_report_reputation() - .. py:function:: rest_get_reputation_timeseries() - .. py:data:: oracle - - diff --git a/_sources/api/nebula/addons/blockchain/oracle/index.rst b/_sources/api/nebula/addons/blockchain/oracle/index.rst index fb67680a..63f55390 100644 --- a/_sources/api/nebula/addons/blockchain/oracle/index.rst +++ b/_sources/api/nebula/addons/blockchain/oracle/index.rst @@ -1,15 +1,15 @@ -:py:mod:`nebula.addons.blockchain.oracle` -========================================= +nebula.addons.blockchain.oracle +=============================== .. py:module:: nebula.addons.blockchain.oracle Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - app/index.rst + /api/nebula/addons/blockchain/oracle/app/index diff --git a/_sources/api/nebula/addons/env/index.rst b/_sources/api/nebula/addons/env/index.rst index acc7fded..c9dbae37 100644 --- a/_sources/api/nebula/addons/env/index.rst +++ b/_sources/api/nebula/addons/env/index.rst @@ -1,15 +1,11 @@ -:py:mod:`nebula.addons.env` -=========================== +nebula.addons.env +================= .. py:module:: nebula.addons.env -Module Contents ---------------- - - Functions -~~~~~~~~~ +--------- .. autoapisummary:: @@ -17,10 +13,10 @@ Functions nebula.addons.env.check_environment +Module Contents +--------------- .. py:function:: check_version() - .. py:function:: check_environment() - diff --git a/_sources/api/nebula/addons/functions/index.rst b/_sources/api/nebula/addons/functions/index.rst index 7b24d598..f637aab7 100644 --- a/_sources/api/nebula/addons/functions/index.rst +++ b/_sources/api/nebula/addons/functions/index.rst @@ -1,21 +1,19 @@ -:py:mod:`nebula.addons.functions` -================================= +nebula.addons.functions +======================= .. py:module:: nebula.addons.functions -Module Contents ---------------- - - Functions -~~~~~~~~~ +--------- .. autoapisummary:: nebula.addons.functions.print_msg_box +Module Contents +--------------- .. py:function:: print_msg_box(msg, indent=1, width=None, title=None) diff --git a/_sources/api/nebula/addons/index.rst b/_sources/api/nebula/addons/index.rst index 71f878c4..c662bb84 100644 --- a/_sources/api/nebula/addons/index.rst +++ b/_sources/api/nebula/addons/index.rst @@ -1,31 +1,31 @@ -:py:mod:`nebula.addons` -======================= +nebula.addons +============= .. py:module:: nebula.addons Subpackages ----------- + .. toctree:: - :titlesonly: - :maxdepth: 3 + :maxdepth: 1 - attacks/index.rst - blockchain/index.rst - trustworthiness/index.rst - waf/index.rst + /api/nebula/addons/attacks/index + /api/nebula/addons/blockchain/index + /api/nebula/addons/trustworthiness/index + /api/nebula/addons/waf/index Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - env/index.rst - functions/index.rst - mobility/index.rst - reporter/index.rst - topologymanager/index.rst + /api/nebula/addons/env/index + /api/nebula/addons/functions/index + /api/nebula/addons/mobility/index + /api/nebula/addons/reporter/index + /api/nebula/addons/topologymanager/index diff --git a/_sources/api/nebula/addons/mobility/index.rst b/_sources/api/nebula/addons/mobility/index.rst index fb303671..158f6327 100644 --- a/_sources/api/nebula/addons/mobility/index.rst +++ b/_sources/api/nebula/addons/mobility/index.rst @@ -1,27 +1,25 @@ -:py:mod:`nebula.addons.mobility` -================================ +nebula.addons.mobility +====================== .. py:module:: nebula.addons.mobility -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.addons.mobility.Mobility - +Module Contents +--------------- .. py:class:: Mobility(config, cm) - Bases: :py:obj:`threading.Thread` + A class that represents a thread of control. This class can be safely subclassed in a limited fashion. There are two ways @@ -29,6 +27,7 @@ Classes by overriding the run() method in a subclass. + .. py:property:: round @@ -43,6 +42,7 @@ Classes + .. py:method:: change_geo_location_random_strategy(latitude, longitude) diff --git a/_sources/api/nebula/addons/reporter/index.rst b/_sources/api/nebula/addons/reporter/index.rst index b14f44bf..c4e7497e 100644 --- a/_sources/api/nebula/addons/reporter/index.rst +++ b/_sources/api/nebula/addons/reporter/index.rst @@ -1,27 +1,25 @@ -:py:mod:`nebula.addons.reporter` -================================ +nebula.addons.reporter +====================== .. py:module:: nebula.addons.reporter -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.addons.reporter.Reporter - +Module Contents +--------------- .. py:class:: Reporter(config, trainer, cm) - Bases: :py:obj:`threading.Thread` + A class that represents a thread of control. This class can be safely subclassed in a limited fashion. There are two ways @@ -29,6 +27,7 @@ Classes by overriding the run() method in a subclass. + .. py:method:: enqueue_data(name, value) @@ -43,7 +42,7 @@ Classes - .. py:method:: report_scenario_finished() + .. py:method:: report_scenario_finished() diff --git a/_sources/api/nebula/addons/topologymanager/index.rst b/_sources/api/nebula/addons/topologymanager/index.rst index ccc6d8d5..23bcaa7e 100644 --- a/_sources/api/nebula/addons/topologymanager/index.rst +++ b/_sources/api/nebula/addons/topologymanager/index.rst @@ -1,25 +1,22 @@ -:py:mod:`nebula.addons.topologymanager` -======================================= +nebula.addons.topologymanager +============================= .. py:module:: nebula.addons.topologymanager -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.addons.topologymanager.TopologyManager - +Module Contents +--------------- .. py:class:: TopologyManager(scenario_name=None, n_nodes=5, b_symmetric=True, undirected_neighbor_num=5, topology=None) - .. py:method:: draw_graph(plot=False, path=None) @@ -48,6 +45,7 @@ Classes :staticmethod: + .. py:method:: add_nodes(nodes) @@ -60,4 +58,3 @@ Classes .. py:method:: get_neighbors_string(node_idx) - diff --git a/_sources/api/nebula/addons/trustworthiness/calculation/index.rst b/_sources/api/nebula/addons/trustworthiness/calculation/index.rst index fd60071e..1c842259 100644 --- a/_sources/api/nebula/addons/trustworthiness/calculation/index.rst +++ b/_sources/api/nebula/addons/trustworthiness/calculation/index.rst @@ -1,15 +1,23 @@ -:py:mod:`nebula.addons.trustworthiness.calculation` -=================================================== +nebula.addons.trustworthiness.calculation +========================================= .. py:module:: nebula.addons.trustworthiness.calculation -Module Contents ---------------- +Attributes +---------- + +.. autoapisummary:: + + nebula.addons.trustworthiness.calculation.dirname + nebula.addons.trustworthiness.calculation.logger + nebula.addons.trustworthiness.calculation.R_L1 + nebula.addons.trustworthiness.calculation.R_L2 + nebula.addons.trustworthiness.calculation.R_LI Functions -~~~~~~~~~ +--------- .. autoapisummary:: @@ -32,41 +40,24 @@ Functions nebula.addons.trustworthiness.calculation.stop_emissions_tracking_and_save - -Attributes -~~~~~~~~~~ - -.. autoapisummary:: - - nebula.addons.trustworthiness.calculation.dirname - nebula.addons.trustworthiness.calculation.logger - nebula.addons.trustworthiness.calculation.R_L1 - nebula.addons.trustworthiness.calculation.R_L2 - nebula.addons.trustworthiness.calculation.R_LI - +Module Contents +--------------- .. py:data:: dirname - - .. py:data:: logger - - .. py:data:: R_L1 :value: 40 - .. py:data:: R_L2 :value: 2 - .. py:data:: R_LI :value: 0.1 - .. py:function:: get_mapped_score(score_key, score_map) diff --git a/_sources/api/nebula/addons/trustworthiness/factsheet/index.rst b/_sources/api/nebula/addons/trustworthiness/factsheet/index.rst index ce1d7471..311f47a1 100644 --- a/_sources/api/nebula/addons/trustworthiness/factsheet/index.rst +++ b/_sources/api/nebula/addons/trustworthiness/factsheet/index.rst @@ -1,42 +1,35 @@ -:py:mod:`nebula.addons.trustworthiness.factsheet` -================================================= +nebula.addons.trustworthiness.factsheet +======================================= .. py:module:: nebula.addons.trustworthiness.factsheet -Module Contents ---------------- - -Classes -~~~~~~~ +Attributes +---------- .. autoapisummary:: - nebula.addons.trustworthiness.factsheet.Factsheet - - + nebula.addons.trustworthiness.factsheet.dirname + nebula.addons.trustworthiness.factsheet.logger -Attributes -~~~~~~~~~~ +Classes +------- .. autoapisummary:: - nebula.addons.trustworthiness.factsheet.dirname - nebula.addons.trustworthiness.factsheet.logger + nebula.addons.trustworthiness.factsheet.Factsheet -.. py:data:: dirname +Module Contents +--------------- - +.. py:data:: dirname .. py:data:: logger - - .. py:class:: Factsheet - .. py:method:: populate_factsheet_pre_train(data, scenario_name) Populates the factsheet with values before the training. @@ -47,6 +40,7 @@ Attributes :type scenario_name: string + .. py:method:: populate_factsheet_post_train(scenario) Populates the factsheet with values after the training. diff --git a/_sources/api/nebula/addons/trustworthiness/index.rst b/_sources/api/nebula/addons/trustworthiness/index.rst index f7c38677..e207a0d7 100644 --- a/_sources/api/nebula/addons/trustworthiness/index.rst +++ b/_sources/api/nebula/addons/trustworthiness/index.rst @@ -1,19 +1,19 @@ -:py:mod:`nebula.addons.trustworthiness` -======================================= +nebula.addons.trustworthiness +============================= .. py:module:: nebula.addons.trustworthiness Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - calculation/index.rst - factsheet/index.rst - metric/index.rst - pillar/index.rst - utils/index.rst + /api/nebula/addons/trustworthiness/calculation/index + /api/nebula/addons/trustworthiness/factsheet/index + /api/nebula/addons/trustworthiness/metric/index + /api/nebula/addons/trustworthiness/pillar/index + /api/nebula/addons/trustworthiness/utils/index diff --git a/_sources/api/nebula/addons/trustworthiness/metric/index.rst b/_sources/api/nebula/addons/trustworthiness/metric/index.rst index f06882fb..f5e0e41f 100644 --- a/_sources/api/nebula/addons/trustworthiness/metric/index.rst +++ b/_sources/api/nebula/addons/trustworthiness/metric/index.rst @@ -1,44 +1,38 @@ -:py:mod:`nebula.addons.trustworthiness.metric` -============================================== +nebula.addons.trustworthiness.metric +==================================== .. py:module:: nebula.addons.trustworthiness.metric -Module Contents ---------------- - -Classes -~~~~~~~ +Attributes +---------- .. autoapisummary:: - nebula.addons.trustworthiness.metric.TrustMetricManager - - + nebula.addons.trustworthiness.metric.dirname + nebula.addons.trustworthiness.metric.logger -Attributes -~~~~~~~~~~ +Classes +------- .. autoapisummary:: - nebula.addons.trustworthiness.metric.dirname - nebula.addons.trustworthiness.metric.logger + nebula.addons.trustworthiness.metric.TrustMetricManager -.. py:data:: dirname +Module Contents +--------------- - +.. py:data:: dirname .. py:data:: logger - - .. py:class:: TrustMetricManager - Manager class to help store the output directory and handle calls from the FL framework. + .. py:method:: evaluate(scenario, weights, use_weights=False) Evaluates the trustworthiness score. diff --git a/_sources/api/nebula/addons/trustworthiness/pillar/index.rst b/_sources/api/nebula/addons/trustworthiness/pillar/index.rst index a0854c91..b11b90fa 100644 --- a/_sources/api/nebula/addons/trustworthiness/pillar/index.rst +++ b/_sources/api/nebula/addons/trustworthiness/pillar/index.rst @@ -1,37 +1,32 @@ -:py:mod:`nebula.addons.trustworthiness.pillar` -============================================== +nebula.addons.trustworthiness.pillar +==================================== .. py:module:: nebula.addons.trustworthiness.pillar -Module Contents ---------------- - -Classes -~~~~~~~ +Attributes +---------- .. autoapisummary:: - nebula.addons.trustworthiness.pillar.TrustPillar - - + nebula.addons.trustworthiness.pillar.logger -Attributes -~~~~~~~~~~ +Classes +------- .. autoapisummary:: - nebula.addons.trustworthiness.pillar.logger + nebula.addons.trustworthiness.pillar.TrustPillar -.. py:data:: logger +Module Contents +--------------- - +.. py:data:: logger .. py:class:: TrustPillar(name, metrics, input_docs, use_weights=False) - Class to represent a trust pillar. :param name: Name of the pillar. @@ -43,6 +38,7 @@ Attributes :param use_weights: True to turn on the weights in the metric config file. :type use_weights: bool + .. py:method:: evaluate() Evaluate the trust score for the pillar. @@ -51,6 +47,7 @@ Attributes :rtype: float + .. py:method:: get_notion_score(name, metrics) Evaluate the trust score for the notion. @@ -64,6 +61,7 @@ Attributes :rtype: float + .. py:method:: get_metric_score(result, name, metric) Evaluate the trust score for the metric. diff --git a/_sources/api/nebula/addons/trustworthiness/utils/index.rst b/_sources/api/nebula/addons/trustworthiness/utils/index.rst index a487f53d..2bead9ea 100644 --- a/_sources/api/nebula/addons/trustworthiness/utils/index.rst +++ b/_sources/api/nebula/addons/trustworthiness/utils/index.rst @@ -1,15 +1,21 @@ -:py:mod:`nebula.addons.trustworthiness.utils` -============================================= +nebula.addons.trustworthiness.utils +=================================== .. py:module:: nebula.addons.trustworthiness.utils -Module Contents ---------------- +Attributes +---------- + +.. autoapisummary:: + + nebula.addons.trustworthiness.utils.hashids + nebula.addons.trustworthiness.utils.logger + nebula.addons.trustworthiness.utils.dirname Functions -~~~~~~~~~ +--------- .. autoapisummary:: @@ -23,29 +29,15 @@ Functions nebula.addons.trustworthiness.utils.save_results_csv - -Attributes -~~~~~~~~~~ - -.. autoapisummary:: - - nebula.addons.trustworthiness.utils.hashids - nebula.addons.trustworthiness.utils.logger - nebula.addons.trustworthiness.utils.dirname - +Module Contents +--------------- .. py:data:: hashids - - .. py:data:: logger - - .. py:data:: dirname - - .. py:function:: count_class_samples(scenario_name, dataloaders_files) Counts the number of samples by class. @@ -139,4 +131,3 @@ Attributes .. py:function:: save_results_csv(scenario_name, id, bytes_sent, bytes_recv, accuracy, loss, finish) - diff --git a/_sources/api/nebula/addons/waf/index.rst b/_sources/api/nebula/addons/waf/index.rst index fac72b89..aa3d6820 100644 --- a/_sources/api/nebula/addons/waf/index.rst +++ b/_sources/api/nebula/addons/waf/index.rst @@ -1,5 +1,5 @@ -:py:mod:`nebula.addons.waf` -=========================== +nebula.addons.waf +================= .. py:module:: nebula.addons.waf diff --git a/_sources/api/nebula/config/config/index.rst b/_sources/api/nebula/config/config/index.rst index 8660616e..bcd2d278 100644 --- a/_sources/api/nebula/config/config/index.rst +++ b/_sources/api/nebula/config/config/index.rst @@ -1,42 +1,37 @@ -:py:mod:`nebula.config.config` -============================== +nebula.config.config +==================== .. py:module:: nebula.config.config -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.config.config.Config - +Module Contents +--------------- .. py:class:: Config(entity, topology_config_file=None, participant_config_file=None) - .. py:attribute:: topology - .. py:attribute:: participant - .. py:attribute:: participants :value: [] - + .. py:attribute:: participants_path :value: [] - + .. py:method:: get_topology_config() @@ -74,4 +69,3 @@ Classes .. py:method:: reload_config_file() - diff --git a/_sources/api/nebula/config/index.rst b/_sources/api/nebula/config/index.rst index bc7b4652..7b131ff3 100644 --- a/_sources/api/nebula/config/index.rst +++ b/_sources/api/nebula/config/index.rst @@ -1,16 +1,16 @@ -:py:mod:`nebula.config` -======================= +nebula.config +============= .. py:module:: nebula.config Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - config/index.rst - mender/index.rst + /api/nebula/config/config/index + /api/nebula/config/mender/index diff --git a/_sources/api/nebula/config/mender/index.rst b/_sources/api/nebula/config/mender/index.rst index ac0c7c36..9cc50cb0 100644 --- a/_sources/api/nebula/config/mender/index.rst +++ b/_sources/api/nebula/config/mender/index.rst @@ -1,25 +1,22 @@ -:py:mod:`nebula.config.mender` -============================== +nebula.config.mender +==================== .. py:module:: nebula.config.mender -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.config.mender.Mender - +Module Contents +--------------- .. py:class:: Mender - .. py:method:: get_token() @@ -30,6 +27,7 @@ Classes :staticmethod: + .. py:method:: get_artifacts() @@ -60,4 +58,3 @@ Classes .. py:method:: get_connected_device(device_id) - diff --git a/_sources/api/nebula/controller/index.rst b/_sources/api/nebula/controller/index.rst index 65847eff..9347a6b4 100644 --- a/_sources/api/nebula/controller/index.rst +++ b/_sources/api/nebula/controller/index.rst @@ -1,14 +1,20 @@ -:py:mod:`nebula.controller` -=========================== +nebula.controller +================= .. py:module:: nebula.controller -Module Contents ---------------- +Attributes +---------- + +.. autoapisummary:: + + nebula.controller.log_console_format + nebula.controller.console_handler + Classes -~~~~~~~ +------- .. autoapisummary:: @@ -16,30 +22,22 @@ Classes nebula.controller.Controller - Functions -~~~~~~~~~ +--------- .. autoapisummary:: nebula.controller.signal_handler - -Attributes -~~~~~~~~~~ - -.. autoapisummary:: - - nebula.controller.log_console_format - nebula.controller.console_handler - +Module Contents +--------------- .. py:class:: TermEscapeCodeFormatter(fmt=None, datefmt=None, style='%', validate=True) - Bases: :py:obj:`logging.Formatter` + Formatter instances are used to convert a LogRecord to text. Formatters need to know how a LogRecord is constructed. They are @@ -80,6 +78,7 @@ Attributes %(message)s The result of record.getMessage(), computed just as the record is emitted + .. py:method:: format(record) Format the specified record as text. @@ -98,18 +97,13 @@ Attributes .. py:data:: log_console_format :value: '[%(levelname)s] - %(asctime)s - Controller - %(message)s' - .. py:data:: console_handler - - .. py:function:: signal_handler(sig, frame) - .. py:class:: Controller(args) - .. py:method:: start() @@ -126,14 +120,17 @@ Attributes :staticmethod: + .. py:method:: stop_network() :staticmethod: + .. py:method:: stop_waf() :staticmethod: + .. py:method:: stop() :staticmethod: diff --git a/_sources/api/nebula/core/aggregation/aggregator/index.rst b/_sources/api/nebula/core/aggregation/aggregator/index.rst index 9e760764..9be27e61 100644 --- a/_sources/api/nebula/core/aggregation/aggregator/index.rst +++ b/_sources/api/nebula/core/aggregation/aggregator/index.rst @@ -1,23 +1,27 @@ -:py:mod:`nebula.core.aggregation.aggregator` -============================================ +nebula.core.aggregation.aggregator +================================== .. py:module:: nebula.core.aggregation.aggregator -Module Contents ---------------- +Exceptions +---------- + +.. autoapisummary:: + + nebula.core.aggregation.aggregator.AggregatorException + Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.aggregation.aggregator.Aggregator - Functions -~~~~~~~~~ +--------- .. autoapisummary:: @@ -26,29 +30,30 @@ Functions nebula.core.aggregation.aggregator.create_malicious_aggregator +Module Contents +--------------- .. py:exception:: AggregatorException - Bases: :py:obj:`Exception` + Common base class for all non-exit exceptions. .. py:function:: create_aggregator(config, engine) - .. py:function:: create_target_aggregator(config, engine) - .. py:class:: Aggregator(config=None, engine=None) - Bases: :py:obj:`abc.ABC` + Helper class that provides a standard way to create an ABC using inheritance. + .. py:property:: cm @@ -56,6 +61,7 @@ Functions :abstractmethod: + .. py:method:: update_federation_nodes(federation_nodes) @@ -72,13 +78,12 @@ Functions :async: + .. py:method:: get_aggregation() .. py:method:: print_model_size(model) - .. py:function:: create_malicious_aggregator(aggregator, attack) - diff --git a/_sources/api/nebula/core/aggregation/blockchainReputation/index.rst b/_sources/api/nebula/core/aggregation/blockchainReputation/index.rst index 399bdcf6..e950daa7 100644 --- a/_sources/api/nebula/core/aggregation/blockchainReputation/index.rst +++ b/_sources/api/nebula/core/aggregation/blockchainReputation/index.rst @@ -1,14 +1,11 @@ -:py:mod:`nebula.core.aggregation.blockchainReputation` -====================================================== +nebula.core.aggregation.blockchainReputation +============================================ .. py:module:: nebula.core.aggregation.blockchainReputation -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: @@ -16,9 +13,8 @@ Classes nebula.core.aggregation.blockchainReputation.BlockchainHandler - Functions -~~~~~~~~~ +--------- .. autoapisummary:: @@ -27,27 +23,27 @@ Functions nebula.core.aggregation.blockchainReputation.print_with_frame +Module Contents +--------------- .. py:function:: cossim_euclidean(model1, model2, similarity) - .. py:class:: BlockchainReputation(similarity_metric = 'CossimEuclid', config=None, **kwargs) - Bases: :py:obj:`nebula.core.aggregation.aggregator.Aggregator` + # BAT-SandrinHunkeler (BlockchainReputation) Weighted FedAvg by using relative reputation of each model's trainer Returns: aggregated model + .. py:attribute:: ALGORITHM_MAP - .. py:method:: run_aggregation(model_buffer) - .. py:function:: print_table(title, values, headers) Prints a title, all values ordered in a table, with the headers as column titles. @@ -70,19 +66,23 @@ Functions .. py:class:: BlockchainHandler(home_address) - Handles interaction with Oracle and Non-Validator Node of Blockchain Network + .. py:property:: oracle_url :type: str + :classmethod: + .. py:property:: rest_header :type: Mapping[str, str] + :classmethod: + .. py:method:: verify_balance() Calls blockchain directly for requesting current balance @@ -90,6 +90,7 @@ Functions + .. py:method:: report_gas_oracle() Reports accumulated gas costs of all transactions made to the blockchain @@ -97,6 +98,7 @@ Functions + .. py:method:: report_reputation_oracle(records) Reports reputations used for aggregation @@ -104,6 +106,7 @@ Functions + .. py:method:: push_opinions(opinion_dict) Pushes all locally computed opinions of models to aggregate to the reputation system @@ -113,6 +116,7 @@ Functions + .. py:method:: get_reputations(ip_addresses) Requests globally aggregated opinions values from reputation system for computing aggregation weights @@ -122,6 +126,7 @@ Functions + .. py:method:: verify_registration() Verifies the successful registration of the node itself, @@ -130,6 +135,7 @@ Functions + .. py:method:: report_time_oracle(start) Reports time used for aggregation diff --git a/_sources/api/nebula/core/aggregation/dualhistagg/index.rst b/_sources/api/nebula/core/aggregation/dualhistagg/index.rst index a6af92cb..1496148b 100644 --- a/_sources/api/nebula/core/aggregation/dualhistagg/index.rst +++ b/_sources/api/nebula/core/aggregation/dualhistagg/index.rst @@ -1,35 +1,33 @@ -:py:mod:`nebula.core.aggregation.dualhistagg` -============================================= +nebula.core.aggregation.dualhistagg +=================================== .. py:module:: nebula.core.aggregation.dualhistagg -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.aggregation.dualhistagg.DualHistAgg - +Module Contents +--------------- .. py:class:: DualHistAgg(config=None, **kwargs) - Bases: :py:obj:`nebula.core.aggregation.aggregator.Aggregator` + Aggregator: Dual History Aggregation (DualHistAgg) Authors: Enrique et al. Year: 2024 + .. py:method:: softmax(x) .. py:method:: run_aggregation(models, reference_model=None) - diff --git a/_sources/api/nebula/core/aggregation/fedavg/index.rst b/_sources/api/nebula/core/aggregation/fedavg/index.rst index 4eaffacc..17eea6d8 100644 --- a/_sources/api/nebula/core/aggregation/fedavg/index.rst +++ b/_sources/api/nebula/core/aggregation/fedavg/index.rst @@ -1,32 +1,30 @@ -:py:mod:`nebula.core.aggregation.fedavg` -======================================== +nebula.core.aggregation.fedavg +============================== .. py:module:: nebula.core.aggregation.fedavg -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.aggregation.fedavg.FedAvg - +Module Contents +--------------- .. py:class:: FedAvg(config=None, **kwargs) - Bases: :py:obj:`nebula.core.aggregation.aggregator.Aggregator` + Aggregator: Federated Averaging (FedAvg) Authors: McMahan et al. Year: 2016 - .. py:method:: run_aggregation(models) + .. py:method:: run_aggregation(models) diff --git a/_sources/api/nebula/core/aggregation/fedavgSVM/index.rst b/_sources/api/nebula/core/aggregation/fedavgSVM/index.rst index 7def9fce..1fe034ba 100644 --- a/_sources/api/nebula/core/aggregation/fedavgSVM/index.rst +++ b/_sources/api/nebula/core/aggregation/fedavgSVM/index.rst @@ -1,33 +1,31 @@ -:py:mod:`nebula.core.aggregation.fedavgSVM` -=========================================== +nebula.core.aggregation.fedavgSVM +================================= .. py:module:: nebula.core.aggregation.fedavgSVM -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.aggregation.fedavgSVM.FedAvgSVM - +Module Contents +--------------- .. py:class:: FedAvgSVM(config=None, **kwargs) - Bases: :py:obj:`nebula.core.aggregation.aggregator.Aggregator` + Aggregator: Federated Averaging (FedAvg) Authors: McMahan et al. Year: 2016 Note: This is a modified version of FedAvg for SVMs. - .. py:method:: run_aggregation(models) + .. py:method:: run_aggregation(models) diff --git a/_sources/api/nebula/core/aggregation/index.rst b/_sources/api/nebula/core/aggregation/index.rst index 532df44e..d23611dc 100644 --- a/_sources/api/nebula/core/aggregation/index.rst +++ b/_sources/api/nebula/core/aggregation/index.rst @@ -1,22 +1,22 @@ -:py:mod:`nebula.core.aggregation` -================================= +nebula.core.aggregation +======================= .. py:module:: nebula.core.aggregation Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - aggregator/index.rst - blockchainReputation/index.rst - dualhistagg/index.rst - fedavg/index.rst - fedavgSVM/index.rst - krum/index.rst - median/index.rst - trimmedmean/index.rst + /api/nebula/core/aggregation/aggregator/index + /api/nebula/core/aggregation/blockchainReputation/index + /api/nebula/core/aggregation/dualhistagg/index + /api/nebula/core/aggregation/fedavg/index + /api/nebula/core/aggregation/fedavgSVM/index + /api/nebula/core/aggregation/krum/index + /api/nebula/core/aggregation/median/index + /api/nebula/core/aggregation/trimmedmean/index diff --git a/_sources/api/nebula/core/aggregation/krum/index.rst b/_sources/api/nebula/core/aggregation/krum/index.rst index a98b2bfa..4753411b 100644 --- a/_sources/api/nebula/core/aggregation/krum/index.rst +++ b/_sources/api/nebula/core/aggregation/krum/index.rst @@ -1,33 +1,31 @@ -:py:mod:`nebula.core.aggregation.krum` -====================================== +nebula.core.aggregation.krum +============================ .. py:module:: nebula.core.aggregation.krum -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.aggregation.krum.Krum - +Module Contents +--------------- .. py:class:: Krum(config=None, **kwargs) - Bases: :py:obj:`nebula.core.aggregation.aggregator.Aggregator` + Aggregator: Krum Authors: Peva Blanchard et al. Year: 2017 Note: https://papers.nips.cc/paper/2017/hash/f4b9ec30ad9f68f89b29639786cb62ef-Abstract.html - .. py:method:: run_aggregation(models) + .. py:method:: run_aggregation(models) diff --git a/_sources/api/nebula/core/aggregation/median/index.rst b/_sources/api/nebula/core/aggregation/median/index.rst index 54d4e615..10bb3f91 100644 --- a/_sources/api/nebula/core/aggregation/median/index.rst +++ b/_sources/api/nebula/core/aggregation/median/index.rst @@ -1,36 +1,34 @@ -:py:mod:`nebula.core.aggregation.median` -======================================== +nebula.core.aggregation.median +============================== .. py:module:: nebula.core.aggregation.median -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.aggregation.median.Median - +Module Contents +--------------- .. py:class:: Median(config=None, **kwargs) - Bases: :py:obj:`nebula.core.aggregation.aggregator.Aggregator` + Aggregator: Median Authors: Dong Yin et al et al. Year: 2021 Note: https://arxiv.org/pdf/1803.01498.pdf + .. py:method:: get_median(weights) .. py:method:: run_aggregation(models) - diff --git a/_sources/api/nebula/core/aggregation/trimmedmean/index.rst b/_sources/api/nebula/core/aggregation/trimmedmean/index.rst index eba506bf..81612d7d 100644 --- a/_sources/api/nebula/core/aggregation/trimmedmean/index.rst +++ b/_sources/api/nebula/core/aggregation/trimmedmean/index.rst @@ -1,36 +1,34 @@ -:py:mod:`nebula.core.aggregation.trimmedmean` -============================================= +nebula.core.aggregation.trimmedmean +=================================== .. py:module:: nebula.core.aggregation.trimmedmean -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.aggregation.trimmedmean.TrimmedMean - +Module Contents +--------------- .. py:class:: TrimmedMean(config=None, beta=0, **kwargs) - Bases: :py:obj:`nebula.core.aggregation.aggregator.Aggregator` + Aggregator: TrimmedMean Authors: Dong Yin et al et al. Year: 2021 Note: https://arxiv.org/pdf/1803.01498.pdf + .. py:method:: get_trimmedmean(weights) .. py:method:: run_aggregation(models) - diff --git a/_sources/api/nebula/core/datasets/changeablesubset/index.rst b/_sources/api/nebula/core/datasets/changeablesubset/index.rst index a5a85af9..3bcb4a25 100644 --- a/_sources/api/nebula/core/datasets/changeablesubset/index.rst +++ b/_sources/api/nebula/core/datasets/changeablesubset/index.rst @@ -1,25 +1,22 @@ -:py:mod:`nebula.core.datasets.changeablesubset` -=============================================== +nebula.core.datasets.changeablesubset +===================================== .. py:module:: nebula.core.datasets.changeablesubset -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.datasets.changeablesubset.ChangeableSubset - +Module Contents +--------------- .. py:class:: ChangeableSubset(dataset, indices, label_flipping=False, data_poisoning=False, poisoned_persent=0, poisoned_ratio=0, targeted=False, target_label=0, target_changed_label=0, noise_type='salt') - Bases: :py:obj:`torch.utils.data.Subset` diff --git a/_sources/api/nebula/core/datasets/cifar10/cifar10/index.rst b/_sources/api/nebula/core/datasets/cifar10/cifar10/index.rst index 4c0e3846..c7580a26 100644 --- a/_sources/api/nebula/core/datasets/cifar10/cifar10/index.rst +++ b/_sources/api/nebula/core/datasets/cifar10/cifar10/index.rst @@ -1,37 +1,37 @@ -:py:mod:`nebula.core.datasets.cifar10.cifar10` -============================================== +nebula.core.datasets.cifar10.cifar10 +==================================== .. py:module:: nebula.core.datasets.cifar10.cifar10 -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.datasets.cifar10.cifar10.CIFAR10Dataset - +Module Contents +--------------- .. py:class:: CIFAR10Dataset(num_classes=10, partition_id=0, partitions_number=1, batch_size=32, num_workers=4, iid=True, partition='dirichlet', partition_parameter=0.5, seed=42, config=None) - Bases: :py:obj:`nebula.core.datasets.nebuladataset.NebulaDataset` + Abstract class for a partitioned dataset. Classes inheriting from this class need to implement specific methods for loading and partitioning the dataset. + .. py:method:: initialize_dataset() Initialize the dataset. This should load or create the dataset. + .. py:method:: load_cifar10_dataset(train=True) @@ -40,6 +40,7 @@ Classes Create a non-iid map of the dataset. + .. py:method:: generate_iid_map(dataset, partition='balancediid', partition_parameter=2) Create an iid map of the dataset. diff --git a/_sources/api/nebula/core/datasets/cifar10/index.rst b/_sources/api/nebula/core/datasets/cifar10/index.rst index 2ad05868..6e211fe2 100644 --- a/_sources/api/nebula/core/datasets/cifar10/index.rst +++ b/_sources/api/nebula/core/datasets/cifar10/index.rst @@ -1,15 +1,15 @@ -:py:mod:`nebula.core.datasets.cifar10` -====================================== +nebula.core.datasets.cifar10 +============================ .. py:module:: nebula.core.datasets.cifar10 Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - cifar10/index.rst + /api/nebula/core/datasets/cifar10/cifar10/index diff --git a/_sources/api/nebula/core/datasets/cifar100/cifar100/index.rst b/_sources/api/nebula/core/datasets/cifar100/cifar100/index.rst index 2a3d846f..f1e6567f 100644 --- a/_sources/api/nebula/core/datasets/cifar100/cifar100/index.rst +++ b/_sources/api/nebula/core/datasets/cifar100/cifar100/index.rst @@ -1,37 +1,37 @@ -:py:mod:`nebula.core.datasets.cifar100.cifar100` -================================================ +nebula.core.datasets.cifar100.cifar100 +====================================== .. py:module:: nebula.core.datasets.cifar100.cifar100 -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.datasets.cifar100.cifar100.CIFAR100Dataset - +Module Contents +--------------- .. py:class:: CIFAR100Dataset(num_classes=100, partition_id=0, partitions_number=1, batch_size=32, num_workers=4, iid=True, partition='dirichlet', partition_parameter=0.5, seed=42, config=None) - Bases: :py:obj:`nebula.core.datasets.nebuladataset.NebulaDataset` + Abstract class for a partitioned dataset. Classes inheriting from this class need to implement specific methods for loading and partitioning the dataset. + .. py:method:: initialize_dataset() Initialize the dataset. This should load or create the dataset. + .. py:method:: load_cifar100_dataset(train=True) @@ -40,6 +40,7 @@ Classes Create a non-iid map of the dataset. + .. py:method:: generate_iid_map(dataset, partition='balancediid', partition_parameter=2) Create an iid map of the dataset. diff --git a/_sources/api/nebula/core/datasets/cifar100/index.rst b/_sources/api/nebula/core/datasets/cifar100/index.rst index ad390451..bfc0f025 100644 --- a/_sources/api/nebula/core/datasets/cifar100/index.rst +++ b/_sources/api/nebula/core/datasets/cifar100/index.rst @@ -1,15 +1,15 @@ -:py:mod:`nebula.core.datasets.cifar100` -======================================= +nebula.core.datasets.cifar100 +============================= .. py:module:: nebula.core.datasets.cifar100 Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - cifar100/index.rst + /api/nebula/core/datasets/cifar100/cifar100/index diff --git a/_sources/api/nebula/core/datasets/datamodule/index.rst b/_sources/api/nebula/core/datasets/datamodule/index.rst index 0928a015..a24b087a 100644 --- a/_sources/api/nebula/core/datasets/datamodule/index.rst +++ b/_sources/api/nebula/core/datasets/datamodule/index.rst @@ -1,27 +1,25 @@ -:py:mod:`nebula.core.datasets.datamodule` -========================================= +nebula.core.datasets.datamodule +=============================== .. py:module:: nebula.core.datasets.datamodule -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.datasets.datamodule.DataModule - +Module Contents +--------------- .. py:class:: DataModule(train_set, train_set_indices, test_set, test_set_indices, local_test_set_indices, partition_id=0, partitions_number=1, batch_size=32, num_workers=0, val_percent=0.1, label_flipping=False, data_poisoning=False, poisoned_persent=0, poisoned_ratio=0, targeted=False, target_label=0, target_changed_label=0, noise_type='salt') - Bases: :py:obj:`lightning.LightningDataModule` + .. py:method:: train_dataloader() @@ -34,4 +32,3 @@ Classes .. py:method:: bootstrap_dataloader() - diff --git a/_sources/api/nebula/core/datasets/emnist/emnist/index.rst b/_sources/api/nebula/core/datasets/emnist/emnist/index.rst index 57e2518e..19533d70 100644 --- a/_sources/api/nebula/core/datasets/emnist/emnist/index.rst +++ b/_sources/api/nebula/core/datasets/emnist/emnist/index.rst @@ -1,37 +1,37 @@ -:py:mod:`nebula.core.datasets.emnist.emnist` -============================================ +nebula.core.datasets.emnist.emnist +================================== .. py:module:: nebula.core.datasets.emnist.emnist -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.datasets.emnist.emnist.EMNISTDataset - +Module Contents +--------------- .. py:class:: EMNISTDataset(num_classes=10, partition_id=0, partitions_number=1, batch_size=32, num_workers=4, iid=True, partition='dirichlet', partition_parameter=0.5, seed=42, config=None) - Bases: :py:obj:`nebula.core.datasets.nebuladataset.NebulaDataset` + Abstract class for a partitioned dataset. Classes inheriting from this class need to implement specific methods for loading and partitioning the dataset. + .. py:method:: initialize_dataset() Initialize the dataset. This should load or create the dataset. + .. py:method:: load_emnist_dataset(train=True) @@ -40,6 +40,7 @@ Classes Create a non-iid map of the dataset. + .. py:method:: generate_iid_map(dataset, partition='balancediid', partition_parameter=2) Create an iid map of the dataset. diff --git a/_sources/api/nebula/core/datasets/emnist/index.rst b/_sources/api/nebula/core/datasets/emnist/index.rst index 04242663..e306ccb2 100644 --- a/_sources/api/nebula/core/datasets/emnist/index.rst +++ b/_sources/api/nebula/core/datasets/emnist/index.rst @@ -1,15 +1,15 @@ -:py:mod:`nebula.core.datasets.emnist` -===================================== +nebula.core.datasets.emnist +=========================== .. py:module:: nebula.core.datasets.emnist Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - emnist/index.rst + /api/nebula/core/datasets/emnist/emnist/index diff --git a/_sources/api/nebula/core/datasets/fashionmnist/fashionmnist/index.rst b/_sources/api/nebula/core/datasets/fashionmnist/fashionmnist/index.rst index 15f8ef09..32f51b21 100644 --- a/_sources/api/nebula/core/datasets/fashionmnist/fashionmnist/index.rst +++ b/_sources/api/nebula/core/datasets/fashionmnist/fashionmnist/index.rst @@ -1,37 +1,37 @@ -:py:mod:`nebula.core.datasets.fashionmnist.fashionmnist` -======================================================== +nebula.core.datasets.fashionmnist.fashionmnist +============================================== .. py:module:: nebula.core.datasets.fashionmnist.fashionmnist -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.datasets.fashionmnist.fashionmnist.FashionMNISTDataset - +Module Contents +--------------- .. py:class:: FashionMNISTDataset(num_classes=10, partition_id=0, partitions_number=1, batch_size=32, num_workers=4, iid=True, partition='dirichlet', partition_parameter=0.5, seed=42, config=None) - Bases: :py:obj:`nebula.core.datasets.nebuladataset.NebulaDataset` + Abstract class for a partitioned dataset. Classes inheriting from this class need to implement specific methods for loading and partitioning the dataset. + .. py:method:: initialize_dataset() Initialize the dataset. This should load or create the dataset. + .. py:method:: load_fmnist_dataset(train=True) @@ -40,6 +40,7 @@ Classes Create a non-iid map of the dataset. + .. py:method:: generate_iid_map(dataset, partition='balancediid', partition_parameter=2) Create an iid map of the dataset. diff --git a/_sources/api/nebula/core/datasets/fashionmnist/index.rst b/_sources/api/nebula/core/datasets/fashionmnist/index.rst index d83b1e7e..b1c14f64 100644 --- a/_sources/api/nebula/core/datasets/fashionmnist/index.rst +++ b/_sources/api/nebula/core/datasets/fashionmnist/index.rst @@ -1,15 +1,15 @@ -:py:mod:`nebula.core.datasets.fashionmnist` -=========================================== +nebula.core.datasets.fashionmnist +================================= .. py:module:: nebula.core.datasets.fashionmnist Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - fashionmnist/index.rst + /api/nebula/core/datasets/fashionmnist/fashionmnist/index diff --git a/_sources/api/nebula/core/datasets/index.rst b/_sources/api/nebula/core/datasets/index.rst index c2ae4a44..806b567a 100644 --- a/_sources/api/nebula/core/datasets/index.rst +++ b/_sources/api/nebula/core/datasets/index.rst @@ -1,36 +1,36 @@ -:py:mod:`nebula.core.datasets` -============================== +nebula.core.datasets +==================== .. py:module:: nebula.core.datasets Subpackages ----------- + .. toctree:: - :titlesonly: - :maxdepth: 3 - - cifar10/index.rst - cifar100/index.rst - emnist/index.rst - fashionmnist/index.rst - kitsun/index.rst - militarysar/index.rst - mnist/index.rst - mnistML/index.rst - sentiment140/index.rst - syscall/index.rst - wadi/index.rst + :maxdepth: 1 + + /api/nebula/core/datasets/cifar10/index + /api/nebula/core/datasets/cifar100/index + /api/nebula/core/datasets/emnist/index + /api/nebula/core/datasets/fashionmnist/index + /api/nebula/core/datasets/kitsun/index + /api/nebula/core/datasets/militarysar/index + /api/nebula/core/datasets/mnist/index + /api/nebula/core/datasets/mnistML/index + /api/nebula/core/datasets/sentiment140/index + /api/nebula/core/datasets/syscall/index + /api/nebula/core/datasets/wadi/index Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - changeablesubset/index.rst - datamodule/index.rst - nebuladataset/index.rst + /api/nebula/core/datasets/changeablesubset/index + /api/nebula/core/datasets/datamodule/index + /api/nebula/core/datasets/nebuladataset/index diff --git a/_sources/api/nebula/core/datasets/kitsun/index.rst b/_sources/api/nebula/core/datasets/kitsun/index.rst index dce05d97..5a115678 100644 --- a/_sources/api/nebula/core/datasets/kitsun/index.rst +++ b/_sources/api/nebula/core/datasets/kitsun/index.rst @@ -1,15 +1,15 @@ -:py:mod:`nebula.core.datasets.kitsun` -===================================== +nebula.core.datasets.kitsun +=========================== .. py:module:: nebula.core.datasets.kitsun Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - kitsun/index.rst + /api/nebula/core/datasets/kitsun/kitsun/index diff --git a/_sources/api/nebula/core/datasets/kitsun/kitsun/index.rst b/_sources/api/nebula/core/datasets/kitsun/kitsun/index.rst index 8e28e8aa..6ae2ac44 100644 --- a/_sources/api/nebula/core/datasets/kitsun/kitsun/index.rst +++ b/_sources/api/nebula/core/datasets/kitsun/kitsun/index.rst @@ -1,14 +1,11 @@ -:py:mod:`nebula.core.datasets.kitsun.kitsun` -============================================ +nebula.core.datasets.kitsun.kitsun +================================== .. py:module:: nebula.core.datasets.kitsun.kitsun -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: @@ -16,32 +13,34 @@ Classes nebula.core.datasets.kitsun.kitsun.KISTSUNDataset - +Module Contents +--------------- .. py:class:: KISTSUN(train=True) - Bases: :py:obj:`torchvision.datasets.MNIST` - .. py:method:: dataset_download() + .. py:method:: dataset_download() .. py:class:: KISTSUNDataset(num_classes=10, partition_id=0, partitions_number=1, batch_size=32, num_workers=4, iid=True, partition='dirichlet', partition_parameter=0.5, seed=42, config=None) - Bases: :py:obj:`nebula.core.datasets.nebuladataset.NebulaDataset` + Abstract class for a partitioned dataset. Classes inheriting from this class need to implement specific methods for loading and partitioning the dataset. + .. py:method:: initialize_dataset() Initialize the dataset. This should load or create the dataset. + .. py:method:: load_kitsun_dataset(train=True) @@ -50,6 +49,7 @@ Classes Create a non-iid map of the dataset. + .. py:method:: generate_iid_map(dataset, partition='balancediid', partition_parameter=2) Create an iid map of the dataset. diff --git a/_sources/api/nebula/core/datasets/militarysar/index.rst b/_sources/api/nebula/core/datasets/militarysar/index.rst index e06ab577..3b58a647 100644 --- a/_sources/api/nebula/core/datasets/militarysar/index.rst +++ b/_sources/api/nebula/core/datasets/militarysar/index.rst @@ -1,15 +1,15 @@ -:py:mod:`nebula.core.datasets.militarysar` -========================================== +nebula.core.datasets.militarysar +================================ .. py:module:: nebula.core.datasets.militarysar Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - militarysar/index.rst + /api/nebula/core/datasets/militarysar/militarysar/index diff --git a/_sources/api/nebula/core/datasets/militarysar/militarysar/index.rst b/_sources/api/nebula/core/datasets/militarysar/militarysar/index.rst index d3f63731..609cfa84 100644 --- a/_sources/api/nebula/core/datasets/militarysar/militarysar/index.rst +++ b/_sources/api/nebula/core/datasets/militarysar/militarysar/index.rst @@ -1,14 +1,11 @@ -:py:mod:`nebula.core.datasets.militarysar.militarysar` -====================================================== +nebula.core.datasets.militarysar.militarysar +============================================ .. py:module:: nebula.core.datasets.militarysar.militarysar -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: @@ -18,44 +15,44 @@ Classes nebula.core.datasets.militarysar.militarysar.MilitarySARDataset - +Module Contents +--------------- .. py:class:: RandomCrop(size) - Bases: :py:obj:`object` .. py:class:: CenterCrop(size) - Bases: :py:obj:`object` .. py:class:: MilitarySAR(name='soc', is_train=False, transform=None) - Bases: :py:obj:`torch.utils.data.Dataset` - .. py:method:: get_targets() + .. py:method:: get_targets() .. py:class:: MilitarySARDataset(num_classes=10, partition_id=0, partitions_number=1, batch_size=32, num_workers=4, iid=True, partition='dirichlet', partition_parameter=0.5, seed=42, config=None) - Bases: :py:obj:`nebula.core.datasets.nebuladataset.NebulaDataset` + Abstract class for a partitioned dataset. Classes inheriting from this class need to implement specific methods for loading and partitioning the dataset. + .. py:method:: initialize_dataset() Initialize the dataset. This should load or create the dataset. + .. py:method:: load_militarysar_dataset(train=True) @@ -64,6 +61,7 @@ Classes Create a non-iid map of the dataset. + .. py:method:: generate_iid_map(dataset, partition='balancediid', partition_parameter=2) Create an iid map of the dataset. diff --git a/_sources/api/nebula/core/datasets/mnist/index.rst b/_sources/api/nebula/core/datasets/mnist/index.rst index 3d6bd5d9..9553d5c4 100644 --- a/_sources/api/nebula/core/datasets/mnist/index.rst +++ b/_sources/api/nebula/core/datasets/mnist/index.rst @@ -1,15 +1,15 @@ -:py:mod:`nebula.core.datasets.mnist` -==================================== +nebula.core.datasets.mnist +========================== .. py:module:: nebula.core.datasets.mnist Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - mnist/index.rst + /api/nebula/core/datasets/mnist/mnist/index diff --git a/_sources/api/nebula/core/datasets/mnist/mnist/index.rst b/_sources/api/nebula/core/datasets/mnist/mnist/index.rst index f3b47346..540dcd77 100644 --- a/_sources/api/nebula/core/datasets/mnist/mnist/index.rst +++ b/_sources/api/nebula/core/datasets/mnist/mnist/index.rst @@ -1,37 +1,37 @@ -:py:mod:`nebula.core.datasets.mnist.mnist` -========================================== +nebula.core.datasets.mnist.mnist +================================ .. py:module:: nebula.core.datasets.mnist.mnist -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.datasets.mnist.mnist.MNISTDataset - +Module Contents +--------------- .. py:class:: MNISTDataset(num_classes=10, partition_id=0, partitions_number=1, batch_size=32, num_workers=4, iid=True, partition='dirichlet', partition_parameter=0.5, seed=42, config=None) - Bases: :py:obj:`nebula.core.datasets.nebuladataset.NebulaDataset` + Abstract class for a partitioned dataset. Classes inheriting from this class need to implement specific methods for loading and partitioning the dataset. + .. py:method:: initialize_dataset() Initialize the dataset. This should load or create the dataset. + .. py:method:: load_mnist_dataset(train=True) @@ -40,6 +40,7 @@ Classes Create a non-iid map of the dataset. + .. py:method:: generate_iid_map(dataset, partition='balancediid', partition_parameter=2) Create an iid map of the dataset. diff --git a/_sources/api/nebula/core/datasets/mnistML/index.rst b/_sources/api/nebula/core/datasets/mnistML/index.rst index de06f4c2..4920c2c5 100644 --- a/_sources/api/nebula/core/datasets/mnistML/index.rst +++ b/_sources/api/nebula/core/datasets/mnistML/index.rst @@ -1,15 +1,15 @@ -:py:mod:`nebula.core.datasets.mnistML` -====================================== +nebula.core.datasets.mnistML +============================ .. py:module:: nebula.core.datasets.mnistML Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - mnist/index.rst + /api/nebula/core/datasets/mnistML/mnist/index diff --git a/_sources/api/nebula/core/datasets/mnistML/mnist/index.rst b/_sources/api/nebula/core/datasets/mnistML/mnist/index.rst index 98be6613..aded5668 100644 --- a/_sources/api/nebula/core/datasets/mnistML/mnist/index.rst +++ b/_sources/api/nebula/core/datasets/mnistML/mnist/index.rst @@ -1,32 +1,31 @@ -:py:mod:`nebula.core.datasets.mnistML.mnist` -============================================ +nebula.core.datasets.mnistML.mnist +================================== .. py:module:: nebula.core.datasets.mnistML.mnist -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.datasets.mnistML.mnist.MNISTDatasetScikit - +Module Contents +--------------- .. py:class:: MNISTDatasetScikit(partition_id=0, partitions_number=1, iid=True) - .. py:attribute:: mnist_train + :value: None + - .. py:attribute:: mnist_val + :value: None + - .. py:method:: train_dataloader() @@ -34,4 +33,3 @@ Classes .. py:method:: test_dataloader() - diff --git a/_sources/api/nebula/core/datasets/nebuladataset/index.rst b/_sources/api/nebula/core/datasets/nebuladataset/index.rst index 87dc8405..9e130dcc 100644 --- a/_sources/api/nebula/core/datasets/nebuladataset/index.rst +++ b/_sources/api/nebula/core/datasets/nebuladataset/index.rst @@ -1,50 +1,55 @@ -:py:mod:`nebula.core.datasets.nebuladataset` -============================================ +nebula.core.datasets.nebuladataset +================================== .. py:module:: nebula.core.datasets.nebuladataset -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.datasets.nebuladataset.NebulaDataset - +Module Contents +--------------- .. py:class:: NebulaDataset(num_classes=10, partition_id=0, partitions_number=1, batch_size=32, num_workers=4, iid=True, partition='dirichlet', partition_parameter=0.5, seed=42, config=None) - Bases: :py:obj:`torch.utils.data.Dataset`, :py:obj:`abc.ABC` + Abstract class for a partitioned dataset. Classes inheriting from this class need to implement specific methods for loading and partitioning the dataset. + .. py:method:: initialize_dataset() :abstractmethod: + Initialize the dataset. This should load or create the dataset. + .. py:method:: generate_non_iid_map(dataset, partition='dirichlet') :abstractmethod: + Create a non-iid map of the dataset. + .. py:method:: generate_iid_map(dataset) :abstractmethod: + Create an iid map of the dataset. + .. py:method:: plot_data_distribution(dataset, partitions_map) Plot the data distribution of the dataset. @@ -55,6 +60,7 @@ Classes :param partitions_map: The map of the dataset partitions. + .. py:method:: visualize_tsne(dataset) @@ -92,6 +98,7 @@ Classes # a Dirichlet distribution with alpha = 0.5. + .. py:method:: homo_partition(dataset) Homogeneously partition the dataset into multiple subsets. @@ -121,6 +128,7 @@ Classes # This creates federated data subsets with homogeneous distribution. + .. py:method:: balanced_iid_partition(dataset) Partition the dataset into balanced and IID (Independent and Identically Distributed) @@ -150,6 +158,7 @@ Classes # This creates federated data subsets with equal class distributions. + .. py:method:: unbalanced_iid_partition(dataset, imbalance_factor=2) Partition the dataset into multiple IID (Independent and Identically Distributed) @@ -185,6 +194,7 @@ Classes # an imbalance factor of 2. + .. py:method:: percentage_partition(dataset, percentage=20) Partition a dataset into multiple subsets with a specified level of non-IID-ness. @@ -221,6 +231,7 @@ Classes # a percentage of 20. + .. py:method:: plot_all_data_distribution(dataset, partitions_map) Plot all of the data distribution of the dataset according to the partitions map provided. diff --git a/_sources/api/nebula/core/datasets/sentiment140/index.rst b/_sources/api/nebula/core/datasets/sentiment140/index.rst index 233621b6..a6bd7b1a 100644 --- a/_sources/api/nebula/core/datasets/sentiment140/index.rst +++ b/_sources/api/nebula/core/datasets/sentiment140/index.rst @@ -1,15 +1,15 @@ -:py:mod:`nebula.core.datasets.sentiment140` -=========================================== +nebula.core.datasets.sentiment140 +================================= .. py:module:: nebula.core.datasets.sentiment140 Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - sentiment140/index.rst + /api/nebula/core/datasets/sentiment140/sentiment140/index diff --git a/_sources/api/nebula/core/datasets/sentiment140/sentiment140/index.rst b/_sources/api/nebula/core/datasets/sentiment140/sentiment140/index.rst index f314346a..dda30491 100644 --- a/_sources/api/nebula/core/datasets/sentiment140/sentiment140/index.rst +++ b/_sources/api/nebula/core/datasets/sentiment140/sentiment140/index.rst @@ -1,14 +1,11 @@ -:py:mod:`nebula.core.datasets.sentiment140.sentiment140` -======================================================== +nebula.core.datasets.sentiment140.sentiment140 +============================================== .. py:module:: nebula.core.datasets.sentiment140.sentiment140 -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: @@ -16,32 +13,34 @@ Classes nebula.core.datasets.sentiment140.sentiment140.Sent140Dataset - +Module Contents +--------------- .. py:class:: SENTIMENT140(train=True) - Bases: :py:obj:`torchvision.datasets.MNIST` - .. py:method:: dataset_download() + .. py:method:: dataset_download() .. py:class:: Sent140Dataset(num_classes=10, partition_id=0, partitions_number=1, batch_size=32, num_workers=4, iid=True, partition='dirichlet', partition_parameter=0.5, seed=42, config=None) - Bases: :py:obj:`nebula.core.datasets.nebuladataset.NebulaDataset` + Abstract class for a partitioned dataset. Classes inheriting from this class need to implement specific methods for loading and partitioning the dataset. + .. py:method:: initialize_dataset() Initialize the dataset. This should load or create the dataset. + .. py:method:: load_sent14_dataset(train=True) @@ -50,6 +49,7 @@ Classes Create a non-iid map of the dataset. + .. py:method:: generate_iid_map(dataset, partition='balancediid', partition_parameter=2) Create an iid map of the dataset. diff --git a/_sources/api/nebula/core/datasets/syscall/index.rst b/_sources/api/nebula/core/datasets/syscall/index.rst index de994c3e..12391724 100644 --- a/_sources/api/nebula/core/datasets/syscall/index.rst +++ b/_sources/api/nebula/core/datasets/syscall/index.rst @@ -1,15 +1,15 @@ -:py:mod:`nebula.core.datasets.syscall` -====================================== +nebula.core.datasets.syscall +============================ .. py:module:: nebula.core.datasets.syscall Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - syscall/index.rst + /api/nebula/core/datasets/syscall/syscall/index diff --git a/_sources/api/nebula/core/datasets/syscall/syscall/index.rst b/_sources/api/nebula/core/datasets/syscall/syscall/index.rst index 47faf5aa..64582556 100644 --- a/_sources/api/nebula/core/datasets/syscall/syscall/index.rst +++ b/_sources/api/nebula/core/datasets/syscall/syscall/index.rst @@ -1,14 +1,11 @@ -:py:mod:`nebula.core.datasets.syscall.syscall` -============================================== +nebula.core.datasets.syscall.syscall +==================================== .. py:module:: nebula.core.datasets.syscall.syscall -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: @@ -16,35 +13,37 @@ Classes nebula.core.datasets.syscall.syscall.SYSCALLDataset - +Module Contents +--------------- .. py:class:: SYSCALL(partition_id, partitions_number, root_dir, train=True, transform=None, target_transform=None, download=False) - Bases: :py:obj:`torchvision.datasets.MNIST` + .. py:method:: dataset_download() .. py:method:: process() - .. py:class:: SYSCALLDataset(num_classes=10, partition_id=0, partitions_number=1, batch_size=32, num_workers=4, iid=True, partition='dirichlet', partition_parameter=0.5, seed=42, config=None) - Bases: :py:obj:`nebula.core.datasets.nebuladataset.NebulaDataset` + Abstract class for a partitioned dataset. Classes inheriting from this class need to implement specific methods for loading and partitioning the dataset. + .. py:method:: initialize_dataset() Initialize the dataset. This should load or create the dataset. + .. py:method:: load_syscall_dataset(train=True) @@ -53,6 +52,7 @@ Classes Create a non-iid map of the dataset. + .. py:method:: generate_iid_map(dataset, partition='balancediid', partition_parameter=2) Create an iid map of the dataset. diff --git a/_sources/api/nebula/core/datasets/wadi/index.rst b/_sources/api/nebula/core/datasets/wadi/index.rst index adf373f0..0edefe57 100644 --- a/_sources/api/nebula/core/datasets/wadi/index.rst +++ b/_sources/api/nebula/core/datasets/wadi/index.rst @@ -1,15 +1,15 @@ -:py:mod:`nebula.core.datasets.wadi` -=================================== +nebula.core.datasets.wadi +========================= .. py:module:: nebula.core.datasets.wadi Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - wadi/index.rst + /api/nebula/core/datasets/wadi/wadi/index diff --git a/_sources/api/nebula/core/datasets/wadi/wadi/index.rst b/_sources/api/nebula/core/datasets/wadi/wadi/index.rst index d4283c6d..efbe42e8 100644 --- a/_sources/api/nebula/core/datasets/wadi/wadi/index.rst +++ b/_sources/api/nebula/core/datasets/wadi/wadi/index.rst @@ -1,14 +1,11 @@ -:py:mod:`nebula.core.datasets.wadi.wadi` -======================================== +nebula.core.datasets.wadi.wadi +============================== .. py:module:: nebula.core.datasets.wadi.wadi -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: @@ -16,32 +13,34 @@ Classes nebula.core.datasets.wadi.wadi.WADIDataModule - +Module Contents +--------------- .. py:class:: WADI(partition_id, partitions_number, root_dir, train=True) - Bases: :py:obj:`torchvision.datasets.MNIST` - .. py:method:: dataset_download() + .. py:method:: dataset_download() .. py:class:: WADIDataModule(num_classes=10, partition_id=0, partitions_number=1, batch_size=32, num_workers=4, iid=True, partition='dirichlet', partition_parameter=0.5, seed=42, config=None) - Bases: :py:obj:`nebula.core.datasets.nebuladataset.NebulaDataset` + Abstract class for a partitioned dataset. Classes inheriting from this class need to implement specific methods for loading and partitioning the dataset. + .. py:method:: initialize_dataset() Initialize the dataset. This should load or create the dataset. + .. py:method:: load_wadi_dataset(train=True) @@ -50,6 +49,7 @@ Classes Create a non-iid map of the dataset. + .. py:method:: generate_iid_map(dataset, partition='balancediid', partition_parameter=2) Create an iid map of the dataset. diff --git a/_sources/api/nebula/core/engine/index.rst b/_sources/api/nebula/core/engine/index.rst index ca51b722..3df6afa8 100644 --- a/_sources/api/nebula/core/engine/index.rst +++ b/_sources/api/nebula/core/engine/index.rst @@ -1,14 +1,11 @@ -:py:mod:`nebula.core.engine` -============================ +nebula.core.engine +================== .. py:module:: nebula.core.engine -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: @@ -20,9 +17,8 @@ Classes nebula.core.engine.IdleNode - Functions -~~~~~~~~~ +--------- .. autoapisummary:: @@ -31,19 +27,17 @@ Functions nebula.core.engine.print_banner +Module Contents +--------------- .. py:function:: handle_exception(exc_type, exc_value, exc_traceback) - .. py:function:: signal_handler(sig, frame) - .. py:function:: print_banner() - .. py:class:: Engine(model, dataset, config=Config, trainer=Lightning, security=False, model_poisoning=False, poisoned_ratio=0, noise_type='gaussian') - .. py:property:: cm @@ -56,10 +50,10 @@ Functions .. py:property:: aggregator - .. py:property:: trainer + .. py:method:: get_aggregator_type() - .. py:method:: get_aggregator_type() + .. py:property:: trainer .. py:method:: get_addr() @@ -96,10 +90,12 @@ Functions :async: + .. py:method:: deploy_federation() :async: + .. py:method:: reputation_calculation(aggregated_models_weights) @@ -110,31 +106,26 @@ Functions .. py:class:: MaliciousNode(model, dataset, config=Config, trainer=Lightning, security=False, model_poisoning=False, poisoned_ratio=0, noise_type='gaussian') - Bases: :py:obj:`Engine` .. py:class:: AggregatorNode(model, dataset, config=Config, trainer=Lightning, security=False, model_poisoning=False, poisoned_ratio=0, noise_type='gaussian') - Bases: :py:obj:`Engine` .. py:class:: ServerNode(model, dataset, config=Config, trainer=Lightning, security=False, model_poisoning=False, poisoned_ratio=0, noise_type='gaussian') - Bases: :py:obj:`Engine` .. py:class:: TrainerNode(model, dataset, config=Config, trainer=Lightning, security=False, model_poisoning=False, poisoned_ratio=0, noise_type='gaussian') - Bases: :py:obj:`Engine` .. py:class:: IdleNode(model, dataset, config=Config, trainer=Lightning, security=False, model_poisoning=False, poisoned_ratio=0, noise_type='gaussian') - Bases: :py:obj:`Engine` diff --git a/_sources/api/nebula/core/eventmanager/index.rst b/_sources/api/nebula/core/eventmanager/index.rst index cb561536..012b56f4 100644 --- a/_sources/api/nebula/core/eventmanager/index.rst +++ b/_sources/api/nebula/core/eventmanager/index.rst @@ -1,29 +1,27 @@ -:py:mod:`nebula.core.eventmanager` -================================== +nebula.core.eventmanager +======================== .. py:module:: nebula.core.eventmanager -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.eventmanager.EventManager - Functions -~~~~~~~~~ +--------- .. autoapisummary:: nebula.core.eventmanager.event_handler +Module Contents +--------------- .. py:function:: event_handler(message_type, action) @@ -32,29 +30,34 @@ Functions .. py:class:: EventManager(default_callbacks=None) - .. py:method:: register_event(handler_info, callback) Records a callback for a specific event. + .. py:method:: unregister_event(handler_info, callback) Unregisters a previously registered callback for an event. + .. py:method:: trigger_event(source, message, *args, **kwargs) :async: + Triggers an event, executing all associated callbacks. + .. py:method:: get_event_callbacks(event_name) :async: + Returns the callbacks for a specific event. + .. py:method:: get_event_callbacks_names() Returns the names of the registered events. diff --git a/_sources/api/nebula/core/index.rst b/_sources/api/nebula/core/index.rst index 73d9e66d..882ecb2a 100644 --- a/_sources/api/nebula/core/index.rst +++ b/_sources/api/nebula/core/index.rst @@ -1,32 +1,32 @@ -:py:mod:`nebula.core` -===================== +nebula.core +=========== .. py:module:: nebula.core Subpackages ----------- + .. toctree:: - :titlesonly: - :maxdepth: 3 + :maxdepth: 1 - aggregation/index.rst - datasets/index.rst - models/index.rst - network/index.rst - pb/index.rst - training/index.rst - utils/index.rst + /api/nebula/core/aggregation/index + /api/nebula/core/datasets/index + /api/nebula/core/models/index + /api/nebula/core/network/index + /api/nebula/core/pb/index + /api/nebula/core/training/index + /api/nebula/core/utils/index Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - engine/index.rst - eventmanager/index.rst - role/index.rst + /api/nebula/core/engine/index + /api/nebula/core/eventmanager/index + /api/nebula/core/role/index diff --git a/_sources/api/nebula/core/models/cifar10/cnn/index.rst b/_sources/api/nebula/core/models/cifar10/cnn/index.rst index 5b1b2a2c..2d17ad04 100644 --- a/_sources/api/nebula/core/models/cifar10/cnn/index.rst +++ b/_sources/api/nebula/core/models/cifar10/cnn/index.rst @@ -1,36 +1,36 @@ -:py:mod:`nebula.core.models.cifar10.cnn` -======================================== +nebula.core.models.cifar10.cnn +============================== .. py:module:: nebula.core.models.cifar10.cnn -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.models.cifar10.cnn.CIFAR10ModelCNN - +Module Contents +--------------- .. py:class:: CIFAR10ModelCNN(input_channels=3, num_classes=10, learning_rate=0.001, metrics=None, confusion_matrix=None, seed=None) - Bases: :py:obj:`nebula.core.models.nebulamodel.NebulaModel` + Abstract class for the NEBULA model. This class is an abstract class that defines the interface for the NEBULA model. + .. py:method:: forward(x) Forward pass of the model. + .. py:method:: configure_optimizers() Optimizer configuration. diff --git a/_sources/api/nebula/core/models/cifar10/cnnV2/index.rst b/_sources/api/nebula/core/models/cifar10/cnnV2/index.rst index 54034355..6ab83255 100644 --- a/_sources/api/nebula/core/models/cifar10/cnnV2/index.rst +++ b/_sources/api/nebula/core/models/cifar10/cnnV2/index.rst @@ -1,36 +1,36 @@ -:py:mod:`nebula.core.models.cifar10.cnnV2` -========================================== +nebula.core.models.cifar10.cnnV2 +================================ .. py:module:: nebula.core.models.cifar10.cnnV2 -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.models.cifar10.cnnV2.CIFAR10ModelCNN_V2 - +Module Contents +--------------- .. py:class:: CIFAR10ModelCNN_V2(input_channels=3, num_classes=10, learning_rate=0.001, metrics=None, confusion_matrix=None, seed=None) - Bases: :py:obj:`nebula.core.models.nebulamodel.NebulaModel` + Abstract class for the NEBULA model. This class is an abstract class that defines the interface for the NEBULA model. + .. py:method:: forward(x) Forward pass of the model. + .. py:method:: configure_optimizers() Optimizer configuration. diff --git a/_sources/api/nebula/core/models/cifar10/cnnV3/index.rst b/_sources/api/nebula/core/models/cifar10/cnnV3/index.rst index a5aa834f..87fc3401 100644 --- a/_sources/api/nebula/core/models/cifar10/cnnV3/index.rst +++ b/_sources/api/nebula/core/models/cifar10/cnnV3/index.rst @@ -1,36 +1,36 @@ -:py:mod:`nebula.core.models.cifar10.cnnV3` -========================================== +nebula.core.models.cifar10.cnnV3 +================================ .. py:module:: nebula.core.models.cifar10.cnnV3 -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.models.cifar10.cnnV3.CIFAR10ModelCNN_V3 - +Module Contents +--------------- .. py:class:: CIFAR10ModelCNN_V3(input_channels=3, num_classes=10, learning_rate=0.001, metrics=None, confusion_matrix=None, seed=None) - Bases: :py:obj:`nebula.core.models.nebulamodel.NebulaModel` + Abstract class for the NEBULA model. This class is an abstract class that defines the interface for the NEBULA model. + .. py:method:: forward(x) Forward pass of the model. + .. py:method:: configure_optimizers() Optimizer configuration. diff --git a/_sources/api/nebula/core/models/cifar10/dualagg/index.rst b/_sources/api/nebula/core/models/cifar10/dualagg/index.rst index 001f8e3f..966b2dfe 100644 --- a/_sources/api/nebula/core/models/cifar10/dualagg/index.rst +++ b/_sources/api/nebula/core/models/cifar10/dualagg/index.rst @@ -1,14 +1,11 @@ -:py:mod:`nebula.core.models.cifar10.dualagg` -============================================ +nebula.core.models.cifar10.dualagg +================================== .. py:module:: nebula.core.models.cifar10.dualagg -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: @@ -16,15 +13,17 @@ Classes nebula.core.models.cifar10.dualagg.DualAggModel - +Module Contents +--------------- .. py:class:: ContrastiveLoss(mu=0.5) - Bases: :py:obj:`torch.nn.Module` + Contrastive loss function. + .. py:method:: forward(local_out, global_out, historical_out, labels) Calculates the contrastive loss between the local output, global output, and historical output. @@ -55,9 +54,9 @@ Classes .. py:class:: DualAggModel(input_channels=3, num_classes=10, learning_rate=0.001, mu=0.5, metrics=None, confusion_matrix=None, seed=None) - Bases: :py:obj:`lightning.LightningModule` + .. py:method:: process_metrics(phase, y_pred, y, loss=None, mode='local') Calculate and log metrics for the given phase. @@ -71,6 +70,7 @@ Classes :type loss: torch.Tensor, optional + .. py:method:: log_metrics_by_epoch(phase, print_cm=False, plot_cm=False, mode='local') Log all metrics at the end of an epoch for the given phase. @@ -80,11 +80,13 @@ Classes :param : param plot_cm: + .. py:method:: forward(x, mode='local') Forward pass of the model. + .. py:method:: configure_optimizers() @@ -100,6 +102,7 @@ Classes Returns: + .. py:method:: on_train_epoch_end() @@ -112,6 +115,7 @@ Classes Returns: + .. py:method:: on_validation_epoch_end() @@ -124,6 +128,7 @@ Classes Returns: + .. py:method:: on_test_epoch_end() @@ -132,6 +137,7 @@ Classes Save the current local model as the historical model. + .. py:method:: global_load_state_dict(state_dict) Load the given state dictionary into the global model. @@ -139,6 +145,7 @@ Classes :type state_dict: dict + .. py:method:: historical_load_state_dict(state_dict) Load the given state dictionary into the historical model. @@ -146,16 +153,19 @@ Classes :type state_dict: dict + .. py:method:: adapt_state_dict_for_model(state_dict, model_prefix) Adapt the keys in the provided state_dict to match the structure expected by the model. + .. py:method:: get_global_model_parameters() Get the parameters of the global model. + .. py:method:: print_summary() Print a summary of local, historical and global models to check if they are the same. diff --git a/_sources/api/nebula/core/models/cifar10/fastermobilenet/index.rst b/_sources/api/nebula/core/models/cifar10/fastermobilenet/index.rst index 951f1da4..3c4cea60 100644 --- a/_sources/api/nebula/core/models/cifar10/fastermobilenet/index.rst +++ b/_sources/api/nebula/core/models/cifar10/fastermobilenet/index.rst @@ -1,36 +1,36 @@ -:py:mod:`nebula.core.models.cifar10.fastermobilenet` -==================================================== +nebula.core.models.cifar10.fastermobilenet +========================================== .. py:module:: nebula.core.models.cifar10.fastermobilenet -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.models.cifar10.fastermobilenet.FasterMobileNet - +Module Contents +--------------- .. py:class:: FasterMobileNet(input_channels=3, num_classes=10, learning_rate=0.001, metrics=None, confusion_matrix=None, seed=None) - Bases: :py:obj:`nebula.core.models.nebulamodel.NebulaModel` + Abstract class for the NEBULA model. This class is an abstract class that defines the interface for the NEBULA model. + .. py:method:: forward(x) Forward pass of the model. + .. py:method:: configure_optimizers() Optimizer configuration. diff --git a/_sources/api/nebula/core/models/cifar10/index.rst b/_sources/api/nebula/core/models/cifar10/index.rst index 953faf57..6f9bfce5 100644 --- a/_sources/api/nebula/core/models/cifar10/index.rst +++ b/_sources/api/nebula/core/models/cifar10/index.rst @@ -1,21 +1,21 @@ -:py:mod:`nebula.core.models.cifar10` -==================================== +nebula.core.models.cifar10 +========================== .. py:module:: nebula.core.models.cifar10 Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - cnn/index.rst - cnnV2/index.rst - cnnV3/index.rst - dualagg/index.rst - fastermobilenet/index.rst - resnet/index.rst - simplemobilenet/index.rst + /api/nebula/core/models/cifar10/cnn/index + /api/nebula/core/models/cifar10/cnnV2/index + /api/nebula/core/models/cifar10/cnnV3/index + /api/nebula/core/models/cifar10/dualagg/index + /api/nebula/core/models/cifar10/fastermobilenet/index + /api/nebula/core/models/cifar10/resnet/index + /api/nebula/core/models/cifar10/simplemobilenet/index diff --git a/_sources/api/nebula/core/models/cifar10/resnet/index.rst b/_sources/api/nebula/core/models/cifar10/resnet/index.rst index 365eee5a..50e6f0dd 100644 --- a/_sources/api/nebula/core/models/cifar10/resnet/index.rst +++ b/_sources/api/nebula/core/models/cifar10/resnet/index.rst @@ -1,61 +1,53 @@ -:py:mod:`nebula.core.models.cifar10.resnet` -=========================================== +nebula.core.models.cifar10.resnet +================================= .. py:module:: nebula.core.models.cifar10.resnet -Module Contents ---------------- +Attributes +---------- + +.. autoapisummary:: + + nebula.core.models.cifar10.resnet.IMAGE_SIZE + nebula.core.models.cifar10.resnet.BATCH_SIZE + nebula.core.models.cifar10.resnet.classifiers + Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.models.cifar10.resnet.CIFAR10ModelResNet - Functions -~~~~~~~~~ +--------- .. autoapisummary:: nebula.core.models.cifar10.resnet.conv_block - -Attributes -~~~~~~~~~~ - -.. autoapisummary:: - - nebula.core.models.cifar10.resnet.IMAGE_SIZE - nebula.core.models.cifar10.resnet.BATCH_SIZE - nebula.core.models.cifar10.resnet.classifiers - +Module Contents +--------------- .. py:data:: IMAGE_SIZE :value: 32 - .. py:data:: BATCH_SIZE - - .. py:data:: classifiers - - .. py:function:: conv_block(input_channels, num_classes, pool=False) - .. py:class:: CIFAR10ModelResNet(input_channels=3, num_classes=10, learning_rate=0.001, metrics=None, confusion_matrix=None, seed=None, implementation='scratch', classifier='resnet9') - Bases: :py:obj:`lightning.LightningModule` + .. py:method:: process_metrics(phase, y_pred, y, loss=None) @@ -89,4 +81,3 @@ Attributes .. py:method:: on_test_epoch_end() - diff --git a/_sources/api/nebula/core/models/cifar10/simplemobilenet/index.rst b/_sources/api/nebula/core/models/cifar10/simplemobilenet/index.rst index 841556e6..67fa8113 100644 --- a/_sources/api/nebula/core/models/cifar10/simplemobilenet/index.rst +++ b/_sources/api/nebula/core/models/cifar10/simplemobilenet/index.rst @@ -1,27 +1,25 @@ -:py:mod:`nebula.core.models.cifar10.simplemobilenet` -==================================================== +nebula.core.models.cifar10.simplemobilenet +========================================== .. py:module:: nebula.core.models.cifar10.simplemobilenet -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.models.cifar10.simplemobilenet.SimpleMobileNetV1 - +Module Contents +--------------- .. py:class:: SimpleMobileNetV1(input_channels=3, num_classes=10, learning_rate=0.001, metrics=None, confusion_matrix=None, seed=None) - Bases: :py:obj:`lightning.LightningModule` + .. py:method:: process_metrics(phase, y_pred, y, loss=None) @@ -34,4 +32,3 @@ Classes .. py:method:: configure_optimizers() - diff --git a/_sources/api/nebula/core/models/cifar100/cnn/index.rst b/_sources/api/nebula/core/models/cifar100/cnn/index.rst index 01d8356b..1d1ec194 100644 --- a/_sources/api/nebula/core/models/cifar100/cnn/index.rst +++ b/_sources/api/nebula/core/models/cifar100/cnn/index.rst @@ -1,36 +1,36 @@ -:py:mod:`nebula.core.models.cifar100.cnn` -========================================= +nebula.core.models.cifar100.cnn +=============================== .. py:module:: nebula.core.models.cifar100.cnn -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.models.cifar100.cnn.CNN - +Module Contents +--------------- .. py:class:: CNN(input_channels=3, num_classes=10, learning_rate=0.001, metrics=None, confusion_matrix=None, seed=None) - Bases: :py:obj:`nebula.core.models.nebulamodel.NebulaModel` + Abstract class for the NEBULA model. This class is an abstract class that defines the interface for the NEBULA model. + .. py:method:: forward(x) Forward pass of the model. + .. py:method:: configure_optimizers() Optimizer configuration. diff --git a/_sources/api/nebula/core/models/cifar100/index.rst b/_sources/api/nebula/core/models/cifar100/index.rst index a49f7a68..775d424f 100644 --- a/_sources/api/nebula/core/models/cifar100/index.rst +++ b/_sources/api/nebula/core/models/cifar100/index.rst @@ -1,15 +1,15 @@ -:py:mod:`nebula.core.models.cifar100` -===================================== +nebula.core.models.cifar100 +=========================== .. py:module:: nebula.core.models.cifar100 Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - cnn/index.rst + /api/nebula/core/models/cifar100/cnn/index diff --git a/_sources/api/nebula/core/models/emnist/cnn/index.rst b/_sources/api/nebula/core/models/emnist/cnn/index.rst index 30a1bc84..509a9635 100644 --- a/_sources/api/nebula/core/models/emnist/cnn/index.rst +++ b/_sources/api/nebula/core/models/emnist/cnn/index.rst @@ -1,36 +1,36 @@ -:py:mod:`nebula.core.models.emnist.cnn` -======================================= +nebula.core.models.emnist.cnn +============================= .. py:module:: nebula.core.models.emnist.cnn -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.models.emnist.cnn.EMNISTModelCNN - +Module Contents +--------------- .. py:class:: EMNISTModelCNN(input_channels=3, num_classes=10, learning_rate=0.001, metrics=None, confusion_matrix=None, seed=None) - Bases: :py:obj:`nebula.core.models.nebulamodel.NebulaModel` + Abstract class for the NEBULA model. This class is an abstract class that defines the interface for the NEBULA model. + .. py:method:: forward(x) Forward pass of the model. + .. py:method:: configure_optimizers() Optimizer configuration. diff --git a/_sources/api/nebula/core/models/emnist/index.rst b/_sources/api/nebula/core/models/emnist/index.rst index 9d8e7e5b..5afa804a 100644 --- a/_sources/api/nebula/core/models/emnist/index.rst +++ b/_sources/api/nebula/core/models/emnist/index.rst @@ -1,16 +1,16 @@ -:py:mod:`nebula.core.models.emnist` -=================================== +nebula.core.models.emnist +========================= .. py:module:: nebula.core.models.emnist Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - cnn/index.rst - mlp/index.rst + /api/nebula/core/models/emnist/cnn/index + /api/nebula/core/models/emnist/mlp/index diff --git a/_sources/api/nebula/core/models/emnist/mlp/index.rst b/_sources/api/nebula/core/models/emnist/mlp/index.rst index 7e88830e..f497ff4b 100644 --- a/_sources/api/nebula/core/models/emnist/mlp/index.rst +++ b/_sources/api/nebula/core/models/emnist/mlp/index.rst @@ -1,36 +1,36 @@ -:py:mod:`nebula.core.models.emnist.mlp` -======================================= +nebula.core.models.emnist.mlp +============================= .. py:module:: nebula.core.models.emnist.mlp -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.models.emnist.mlp.EMNISTModelMLP - +Module Contents +--------------- .. py:class:: EMNISTModelMLP(input_channels=3, num_classes=10, learning_rate=0.001, metrics=None, confusion_matrix=None, seed=None) - Bases: :py:obj:`nebula.core.models.nebulamodel.NebulaModel` + Abstract class for the NEBULA model. This class is an abstract class that defines the interface for the NEBULA model. + .. py:method:: forward(x) Forward pass of the model. + .. py:method:: configure_optimizers() Optimizer configuration. diff --git a/_sources/api/nebula/core/models/fashionmnist/cnn/index.rst b/_sources/api/nebula/core/models/fashionmnist/cnn/index.rst index ecba6f6d..a21b73ef 100644 --- a/_sources/api/nebula/core/models/fashionmnist/cnn/index.rst +++ b/_sources/api/nebula/core/models/fashionmnist/cnn/index.rst @@ -1,36 +1,36 @@ -:py:mod:`nebula.core.models.fashionmnist.cnn` -============================================= +nebula.core.models.fashionmnist.cnn +=================================== .. py:module:: nebula.core.models.fashionmnist.cnn -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.models.fashionmnist.cnn.FashionMNISTModelCNN - +Module Contents +--------------- .. py:class:: FashionMNISTModelCNN(input_channels=3, num_classes=10, learning_rate=0.001, metrics=None, confusion_matrix=None, seed=None) - Bases: :py:obj:`nebula.core.models.nebulamodel.NebulaModel` + Abstract class for the NEBULA model. This class is an abstract class that defines the interface for the NEBULA model. + .. py:method:: forward(x) Forward pass of the model. + .. py:method:: configure_optimizers() Optimizer configuration. diff --git a/_sources/api/nebula/core/models/fashionmnist/index.rst b/_sources/api/nebula/core/models/fashionmnist/index.rst index 4757cebb..81864e40 100644 --- a/_sources/api/nebula/core/models/fashionmnist/index.rst +++ b/_sources/api/nebula/core/models/fashionmnist/index.rst @@ -1,16 +1,16 @@ -:py:mod:`nebula.core.models.fashionmnist` -========================================= +nebula.core.models.fashionmnist +=============================== .. py:module:: nebula.core.models.fashionmnist Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - cnn/index.rst - mlp/index.rst + /api/nebula/core/models/fashionmnist/cnn/index + /api/nebula/core/models/fashionmnist/mlp/index diff --git a/_sources/api/nebula/core/models/fashionmnist/mlp/index.rst b/_sources/api/nebula/core/models/fashionmnist/mlp/index.rst index ee476b6b..676d64a2 100644 --- a/_sources/api/nebula/core/models/fashionmnist/mlp/index.rst +++ b/_sources/api/nebula/core/models/fashionmnist/mlp/index.rst @@ -1,36 +1,36 @@ -:py:mod:`nebula.core.models.fashionmnist.mlp` -============================================= +nebula.core.models.fashionmnist.mlp +=================================== .. py:module:: nebula.core.models.fashionmnist.mlp -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.models.fashionmnist.mlp.FashionMNISTModelMLP - +Module Contents +--------------- .. py:class:: FashionMNISTModelMLP(input_channels=3, num_classes=10, learning_rate=0.001, metrics=None, confusion_matrix=None, seed=None) - Bases: :py:obj:`nebula.core.models.nebulamodel.NebulaModel` + Abstract class for the NEBULA model. This class is an abstract class that defines the interface for the NEBULA model. + .. py:method:: forward(x) Forward pass of the model. + .. py:method:: configure_optimizers() Optimizer configuration. diff --git a/_sources/api/nebula/core/models/index.rst b/_sources/api/nebula/core/models/index.rst index 82631439..b394814c 100644 --- a/_sources/api/nebula/core/models/index.rst +++ b/_sources/api/nebula/core/models/index.rst @@ -1,33 +1,33 @@ -:py:mod:`nebula.core.models` -============================ +nebula.core.models +================== .. py:module:: nebula.core.models Subpackages ----------- + .. toctree:: - :titlesonly: - :maxdepth: 3 + :maxdepth: 1 - cifar10/index.rst - cifar100/index.rst - emnist/index.rst - fashionmnist/index.rst - kitsun/index.rst - militarysar/index.rst - mnist/index.rst - sentiment140/index.rst - syscall/index.rst - wadi/index.rst + /api/nebula/core/models/cifar10/index + /api/nebula/core/models/cifar100/index + /api/nebula/core/models/emnist/index + /api/nebula/core/models/fashionmnist/index + /api/nebula/core/models/kitsun/index + /api/nebula/core/models/militarysar/index + /api/nebula/core/models/mnist/index + /api/nebula/core/models/sentiment140/index + /api/nebula/core/models/syscall/index + /api/nebula/core/models/wadi/index Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - nebulamodel/index.rst + /api/nebula/core/models/nebulamodel/index diff --git a/_sources/api/nebula/core/models/kitsun/index.rst b/_sources/api/nebula/core/models/kitsun/index.rst index b093b050..38f2e11f 100644 --- a/_sources/api/nebula/core/models/kitsun/index.rst +++ b/_sources/api/nebula/core/models/kitsun/index.rst @@ -1,15 +1,15 @@ -:py:mod:`nebula.core.models.kitsun` -=================================== +nebula.core.models.kitsun +========================= .. py:module:: nebula.core.models.kitsun Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - mlp/index.rst + /api/nebula/core/models/kitsun/mlp/index diff --git a/_sources/api/nebula/core/models/kitsun/mlp/index.rst b/_sources/api/nebula/core/models/kitsun/mlp/index.rst index 40cf8de9..d92e8f63 100644 --- a/_sources/api/nebula/core/models/kitsun/mlp/index.rst +++ b/_sources/api/nebula/core/models/kitsun/mlp/index.rst @@ -1,36 +1,36 @@ -:py:mod:`nebula.core.models.kitsun.mlp` -======================================= +nebula.core.models.kitsun.mlp +============================= .. py:module:: nebula.core.models.kitsun.mlp -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.models.kitsun.mlp.KitsunModelMLP - +Module Contents +--------------- .. py:class:: KitsunModelMLP(input_channels=3, num_classes=10, learning_rate=0.001, metrics=None, confusion_matrix=None, seed=None) - Bases: :py:obj:`nebula.core.models.nebulamodel.NebulaModel` + Abstract class for the NEBULA model. This class is an abstract class that defines the interface for the NEBULA model. + .. py:method:: forward(x) Forward pass of the model. + .. py:method:: configure_optimizers() Optimizer configuration. diff --git a/_sources/api/nebula/core/models/militarysar/cnn/index.rst b/_sources/api/nebula/core/models/militarysar/cnn/index.rst index 0b0001e9..ab428766 100644 --- a/_sources/api/nebula/core/models/militarysar/cnn/index.rst +++ b/_sources/api/nebula/core/models/militarysar/cnn/index.rst @@ -1,36 +1,36 @@ -:py:mod:`nebula.core.models.militarysar.cnn` -============================================ +nebula.core.models.militarysar.cnn +================================== .. py:module:: nebula.core.models.militarysar.cnn -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.models.militarysar.cnn.MilitarySARModelCNN - +Module Contents +--------------- .. py:class:: MilitarySARModelCNN(input_channels=2, num_classes=10, learning_rate=0.001, metrics=None, confusion_matrix=None, seed=None) - Bases: :py:obj:`nebula.core.models.nebulamodel.NebulaModel` + Abstract class for the NEBULA model. This class is an abstract class that defines the interface for the NEBULA model. + .. py:method:: forward(x) Forward pass of the model. + .. py:method:: configure_optimizers() Optimizer configuration. diff --git a/_sources/api/nebula/core/models/militarysar/index.rst b/_sources/api/nebula/core/models/militarysar/index.rst index 1689e24a..c3be55ef 100644 --- a/_sources/api/nebula/core/models/militarysar/index.rst +++ b/_sources/api/nebula/core/models/militarysar/index.rst @@ -1,15 +1,15 @@ -:py:mod:`nebula.core.models.militarysar` -======================================== +nebula.core.models.militarysar +============================== .. py:module:: nebula.core.models.militarysar Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - cnn/index.rst + /api/nebula/core/models/militarysar/cnn/index diff --git a/_sources/api/nebula/core/models/mnist/cnn/index.rst b/_sources/api/nebula/core/models/mnist/cnn/index.rst index 32f5ec6b..d7b0e98b 100644 --- a/_sources/api/nebula/core/models/mnist/cnn/index.rst +++ b/_sources/api/nebula/core/models/mnist/cnn/index.rst @@ -1,36 +1,36 @@ -:py:mod:`nebula.core.models.mnist.cnn` -====================================== +nebula.core.models.mnist.cnn +============================ .. py:module:: nebula.core.models.mnist.cnn -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.models.mnist.cnn.MNISTModelCNN - +Module Contents +--------------- .. py:class:: MNISTModelCNN(input_channels=1, num_classes=10, learning_rate=0.001, metrics=None, confusion_matrix=None, seed=None) - Bases: :py:obj:`nebula.core.models.nebulamodel.NebulaModel` + Abstract class for the NEBULA model. This class is an abstract class that defines the interface for the NEBULA model. + .. py:method:: forward(x) Forward pass of the model. + .. py:method:: configure_optimizers() Optimizer configuration. diff --git a/_sources/api/nebula/core/models/mnist/index.rst b/_sources/api/nebula/core/models/mnist/index.rst index 986b3440..55e680ac 100644 --- a/_sources/api/nebula/core/models/mnist/index.rst +++ b/_sources/api/nebula/core/models/mnist/index.rst @@ -1,16 +1,16 @@ -:py:mod:`nebula.core.models.mnist` -================================== +nebula.core.models.mnist +======================== .. py:module:: nebula.core.models.mnist Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - cnn/index.rst - mlp/index.rst + /api/nebula/core/models/mnist/cnn/index + /api/nebula/core/models/mnist/mlp/index diff --git a/_sources/api/nebula/core/models/mnist/mlp/index.rst b/_sources/api/nebula/core/models/mnist/mlp/index.rst index 47fb132c..7efc67bd 100644 --- a/_sources/api/nebula/core/models/mnist/mlp/index.rst +++ b/_sources/api/nebula/core/models/mnist/mlp/index.rst @@ -1,36 +1,36 @@ -:py:mod:`nebula.core.models.mnist.mlp` -====================================== +nebula.core.models.mnist.mlp +============================ .. py:module:: nebula.core.models.mnist.mlp -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.models.mnist.mlp.MNISTModelMLP - +Module Contents +--------------- .. py:class:: MNISTModelMLP(input_channels=1, num_classes=10, learning_rate=0.001, metrics=None, confusion_matrix=None, seed=None) - Bases: :py:obj:`nebula.core.models.nebulamodel.NebulaModel` + Abstract class for the NEBULA model. This class is an abstract class that defines the interface for the NEBULA model. + .. py:method:: forward(x) Forward pass of the model. + .. py:method:: configure_optimizers() Optimizer configuration. diff --git a/_sources/api/nebula/core/models/nebulamodel/index.rst b/_sources/api/nebula/core/models/nebulamodel/index.rst index 56188e36..6ba07949 100644 --- a/_sources/api/nebula/core/models/nebulamodel/index.rst +++ b/_sources/api/nebula/core/models/nebulamodel/index.rst @@ -1,31 +1,30 @@ -:py:mod:`nebula.core.models.nebulamodel` -======================================== +nebula.core.models.nebulamodel +============================== .. py:module:: nebula.core.models.nebulamodel -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.models.nebulamodel.NebulaModel - +Module Contents +--------------- .. py:class:: NebulaModel(input_channels=1, num_classes=10, learning_rate=0.001, metrics=None, confusion_matrix=None, seed=None) - Bases: :py:obj:`lightning.LightningModule`, :py:obj:`abc.ABC` + Abstract class for the NEBULA model. This class is an abstract class that defines the interface for the NEBULA model. + .. py:method:: process_metrics(phase, y_pred, y, loss=None) Calculate and log metrics for the given phase. @@ -40,6 +39,7 @@ Classes :type loss: torch.Tensor, optional + .. py:method:: log_metrics_end(phase) Log metrics for the given phase. @@ -51,6 +51,7 @@ Classes :type plot_cm: bool + .. py:method:: generate_confusion_matrix(phase, print_cm=False, plot_cm=False) Generate and plot the confusion matrix for the given phase. @@ -61,23 +62,29 @@ Classes :param : param plot: + .. py:method:: forward(x) :abstractmethod: + Forward pass of the model. + .. py:method:: configure_optimizers() :abstractmethod: + Optimizer configuration. + .. py:method:: step(batch, batch_idx, phase) Training/validation/test step. + .. py:method:: training_step(batch, batch_idx) Training step for the model. @@ -87,6 +94,7 @@ Classes Returns: + .. py:method:: on_train_end() @@ -102,6 +110,7 @@ Classes Returns: + .. py:method:: on_validation_end() @@ -117,10 +126,10 @@ Classes Returns: + .. py:method:: on_test_end() .. py:method:: on_test_epoch_end() - diff --git a/_sources/api/nebula/core/models/sentiment140/cnn/index.rst b/_sources/api/nebula/core/models/sentiment140/cnn/index.rst index 84a2d9ec..f4c4626c 100644 --- a/_sources/api/nebula/core/models/sentiment140/cnn/index.rst +++ b/_sources/api/nebula/core/models/sentiment140/cnn/index.rst @@ -1,36 +1,36 @@ -:py:mod:`nebula.core.models.sentiment140.cnn` -============================================= +nebula.core.models.sentiment140.cnn +=================================== .. py:module:: nebula.core.models.sentiment140.cnn -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.models.sentiment140.cnn.SentimentModelCNN - +Module Contents +--------------- .. py:class:: SentimentModelCNN(input_channels=3, num_classes=10, learning_rate=0.001, metrics=None, confusion_matrix=None, seed=None) - Bases: :py:obj:`nebula.core.models.nebulamodel.NebulaModel` + Abstract class for the NEBULA model. This class is an abstract class that defines the interface for the NEBULA model. + .. py:method:: forward(x) Forward pass of the model. + .. py:method:: configure_optimizers() Optimizer configuration. diff --git a/_sources/api/nebula/core/models/sentiment140/index.rst b/_sources/api/nebula/core/models/sentiment140/index.rst index f1a475ea..88964ca5 100644 --- a/_sources/api/nebula/core/models/sentiment140/index.rst +++ b/_sources/api/nebula/core/models/sentiment140/index.rst @@ -1,16 +1,16 @@ -:py:mod:`nebula.core.models.sentiment140` -========================================= +nebula.core.models.sentiment140 +=============================== .. py:module:: nebula.core.models.sentiment140 Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - cnn/index.rst - rnn/index.rst + /api/nebula/core/models/sentiment140/cnn/index + /api/nebula/core/models/sentiment140/rnn/index diff --git a/_sources/api/nebula/core/models/sentiment140/rnn/index.rst b/_sources/api/nebula/core/models/sentiment140/rnn/index.rst index 06d0bfa9..d3d1ba99 100644 --- a/_sources/api/nebula/core/models/sentiment140/rnn/index.rst +++ b/_sources/api/nebula/core/models/sentiment140/rnn/index.rst @@ -1,36 +1,36 @@ -:py:mod:`nebula.core.models.sentiment140.rnn` -============================================= +nebula.core.models.sentiment140.rnn +=================================== .. py:module:: nebula.core.models.sentiment140.rnn -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.models.sentiment140.rnn.SentimentModelRNN - +Module Contents +--------------- .. py:class:: SentimentModelRNN(input_channels=3, num_classes=10, learning_rate=0.001, metrics=None, confusion_matrix=None, seed=None) - Bases: :py:obj:`nebula.core.models.nebulamodel.NebulaModel` + Abstract class for the NEBULA model. This class is an abstract class that defines the interface for the NEBULA model. + .. py:method:: forward(x) Forward pass of the model. + .. py:method:: configure_optimizers() Optimizer configuration. diff --git a/_sources/api/nebula/core/models/syscall/autoencoder/index.rst b/_sources/api/nebula/core/models/syscall/autoencoder/index.rst index d66b7397..b44e1003 100644 --- a/_sources/api/nebula/core/models/syscall/autoencoder/index.rst +++ b/_sources/api/nebula/core/models/syscall/autoencoder/index.rst @@ -1,31 +1,30 @@ -:py:mod:`nebula.core.models.syscall.autoencoder` -================================================ +nebula.core.models.syscall.autoencoder +====================================== .. py:module:: nebula.core.models.syscall.autoencoder -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.models.syscall.autoencoder.SyscallModelAutoencoder - +Module Contents +--------------- .. py:class:: SyscallModelAutoencoder(input_channels=3, num_classes=10, learning_rate=0.001, metrics=None, confusion_matrix=None, seed=None) - Bases: :py:obj:`nebula.core.models.nebulamodel.NebulaModel` + Abstract class for the NEBULA model. This class is an abstract class that defines the interface for the NEBULA model. + .. py:method:: encode(x) @@ -37,6 +36,7 @@ Classes Forward pass of the model. + .. py:method:: configure_optimizers() Optimizer configuration. diff --git a/_sources/api/nebula/core/models/syscall/index.rst b/_sources/api/nebula/core/models/syscall/index.rst index ffa2d66a..6f1001e8 100644 --- a/_sources/api/nebula/core/models/syscall/index.rst +++ b/_sources/api/nebula/core/models/syscall/index.rst @@ -1,17 +1,17 @@ -:py:mod:`nebula.core.models.syscall` -==================================== +nebula.core.models.syscall +========================== .. py:module:: nebula.core.models.syscall Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - autoencoder/index.rst - mlp/index.rst - svm/index.rst + /api/nebula/core/models/syscall/autoencoder/index + /api/nebula/core/models/syscall/mlp/index + /api/nebula/core/models/syscall/svm/index diff --git a/_sources/api/nebula/core/models/syscall/mlp/index.rst b/_sources/api/nebula/core/models/syscall/mlp/index.rst index e2ebde6c..08bffb02 100644 --- a/_sources/api/nebula/core/models/syscall/mlp/index.rst +++ b/_sources/api/nebula/core/models/syscall/mlp/index.rst @@ -1,36 +1,36 @@ -:py:mod:`nebula.core.models.syscall.mlp` -======================================== +nebula.core.models.syscall.mlp +============================== .. py:module:: nebula.core.models.syscall.mlp -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.models.syscall.mlp.SyscallModelMLP - +Module Contents +--------------- .. py:class:: SyscallModelMLP(input_channels=3, num_classes=10, learning_rate=0.001, metrics=None, confusion_matrix=None, seed=None) - Bases: :py:obj:`nebula.core.models.nebulamodel.NebulaModel` + Abstract class for the NEBULA model. This class is an abstract class that defines the interface for the NEBULA model. + .. py:method:: forward(x) Forward pass of the model. + .. py:method:: configure_optimizers() Optimizer configuration. diff --git a/_sources/api/nebula/core/models/syscall/svm/index.rst b/_sources/api/nebula/core/models/syscall/svm/index.rst index c85bf20b..62bd8928 100644 --- a/_sources/api/nebula/core/models/syscall/svm/index.rst +++ b/_sources/api/nebula/core/models/syscall/svm/index.rst @@ -1,41 +1,42 @@ -:py:mod:`nebula.core.models.syscall.svm` -======================================== +nebula.core.models.syscall.svm +============================== .. py:module:: nebula.core.models.syscall.svm -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.models.syscall.svm.SyscallModelSGDOneClassSVM - +Module Contents +--------------- .. py:class:: SyscallModelSGDOneClassSVM(input_channels=3, num_classes=10, learning_rate=0.001, metrics=None, confusion_matrix=None, seed=None) - Bases: :py:obj:`nebula.core.models.nebulamodel.NebulaModel` + Abstract class for the NEBULA model. This class is an abstract class that defines the interface for the NEBULA model. + .. py:method:: forward(x) Forward pass of the model. + .. py:method:: configure_optimizers() Optimizer configuration. + .. py:method:: hinge_loss(y) diff --git a/_sources/api/nebula/core/models/wadi/index.rst b/_sources/api/nebula/core/models/wadi/index.rst index 17839ff5..382e13cb 100644 --- a/_sources/api/nebula/core/models/wadi/index.rst +++ b/_sources/api/nebula/core/models/wadi/index.rst @@ -1,15 +1,15 @@ -:py:mod:`nebula.core.models.wadi` -================================= +nebula.core.models.wadi +======================= .. py:module:: nebula.core.models.wadi Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - mlp/index.rst + /api/nebula/core/models/wadi/mlp/index diff --git a/_sources/api/nebula/core/models/wadi/mlp/index.rst b/_sources/api/nebula/core/models/wadi/mlp/index.rst index c251f973..8d3d599a 100644 --- a/_sources/api/nebula/core/models/wadi/mlp/index.rst +++ b/_sources/api/nebula/core/models/wadi/mlp/index.rst @@ -1,36 +1,36 @@ -:py:mod:`nebula.core.models.wadi.mlp` -===================================== +nebula.core.models.wadi.mlp +=========================== .. py:module:: nebula.core.models.wadi.mlp -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.models.wadi.mlp.WADIModelMLP - +Module Contents +--------------- .. py:class:: WADIModelMLP(input_channels=1, num_classes=10, learning_rate=0.001, metrics=None, confusion_matrix=None, seed=None) - Bases: :py:obj:`nebula.core.models.nebulamodel.NebulaModel` + Abstract class for the NEBULA model. This class is an abstract class that defines the interface for the NEBULA model. + .. py:method:: forward(x) Forward pass of the model. + .. py:method:: configure_optimizers() Optimizer configuration. diff --git a/_sources/api/nebula/core/network/communications/index.rst b/_sources/api/nebula/core/network/communications/index.rst index 10e9dbe1..a173e24f 100644 --- a/_sources/api/nebula/core/network/communications/index.rst +++ b/_sources/api/nebula/core/network/communications/index.rst @@ -1,25 +1,22 @@ -:py:mod:`nebula.core.network.communications` -============================================ +nebula.core.network.communications +================================== .. py:module:: nebula.core.network.communications -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.network.communications.CommunicationsManager - +Module Contents +--------------- .. py:class:: CommunicationsManager(engine) - .. py:property:: engine @@ -48,26 +45,32 @@ Classes :async: + .. py:method:: handle_discovery_message(source, message) :async: + .. py:method:: handle_control_message(source, message) :async: + .. py:method:: handle_federation_message(source, message) :async: + .. py:method:: handle_model_message(source, message) :async: + .. py:method:: handle_connection_message(source, message) :async: + .. py:method:: get_connections_lock() @@ -84,26 +87,32 @@ Classes :async: + .. py:method:: deploy_network_engine() :async: + .. py:method:: handle_connection_wrapper(reader, writer) :async: + .. py:method:: handle_connection(reader, writer) :async: + .. py:method:: stop() :async: + .. py:method:: run_reconnections() :async: + .. py:method:: verify_connections(neighbors) @@ -111,10 +120,12 @@ Classes :async: + .. py:method:: deploy_additional_services() :async: + .. py:method:: include_received_message_hash(hash_message) @@ -122,34 +133,42 @@ Classes :async: + .. py:method:: send_message(dest_addr, message) :async: + .. py:method:: send_model(dest_addr, round, serialized_model, weight=1) :async: + .. py:method:: establish_connection(addr, direct=True, reconnect=False) :async: + .. py:method:: connect(addr, direct=True) :async: + .. py:method:: register() :async: + .. py:method:: wait_for_controller() :async: + .. py:method:: disconnect(dest_addr, mutual_disconnection=True) :async: + .. py:method:: get_all_addrs_current_connections(only_direct=False, only_undirected=False) @@ -171,4 +190,3 @@ Classes .. py:method:: get_ready_connections() - diff --git a/_sources/api/nebula/core/network/connection/index.rst b/_sources/api/nebula/core/network/connection/index.rst index 288af349..a4d1b16d 100644 --- a/_sources/api/nebula/core/network/connection/index.rst +++ b/_sources/api/nebula/core/network/connection/index.rst @@ -1,28 +1,24 @@ -:py:mod:`nebula.core.network.connection` -======================================== +nebula.core.network.connection +============================== .. py:module:: nebula.core.network.connection -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.network.connection.Connection - +Module Contents +--------------- .. py:class:: Connection(cm, reader, writer, id, host, port, direct=True, active=True, compression='zlib', config=None) - .. py:attribute:: DEFAULT_FEDERATED_ROUND - .. py:method:: get_addr() @@ -70,26 +66,32 @@ Classes :async: + .. py:method:: stop() :async: + .. py:method:: compress(data, compression) :async: + .. py:method:: decompress(compressed) :async: + .. py:method:: send(data, pb=True, encoding_type='utf-8', compression='none') :async: + .. py:method:: retrieve_message(message) :async: + .. py:method:: handle_incoming_message() :async: diff --git a/_sources/api/nebula/core/network/discoverer/index.rst b/_sources/api/nebula/core/network/discoverer/index.rst index 037d2cd1..c4defef9 100644 --- a/_sources/api/nebula/core/network/discoverer/index.rst +++ b/_sources/api/nebula/core/network/discoverer/index.rst @@ -1,27 +1,25 @@ -:py:mod:`nebula.core.network.discoverer` -======================================== +nebula.core.network.discoverer +============================== .. py:module:: nebula.core.network.discoverer -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.network.discoverer.Discoverer - +Module Contents +--------------- .. py:class:: Discoverer(addr, config, cm) - Bases: :py:obj:`threading.Thread` + A class that represents a thread of control. This class can be safely subclassed in a limited fashion. There are two ways @@ -29,6 +27,7 @@ Classes by overriding the run() method in a subclass. + .. py:method:: run() Method representing the thread's activity. @@ -40,6 +39,7 @@ Classes + .. py:method:: run_discover() :async: diff --git a/_sources/api/nebula/core/network/forwarder/index.rst b/_sources/api/nebula/core/network/forwarder/index.rst index 976fef02..b4212131 100644 --- a/_sources/api/nebula/core/network/forwarder/index.rst +++ b/_sources/api/nebula/core/network/forwarder/index.rst @@ -1,27 +1,25 @@ -:py:mod:`nebula.core.network.forwarder` -======================================= +nebula.core.network.forwarder +============================= .. py:module:: nebula.core.network.forwarder -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.network.forwarder.Forwarder - +Module Contents +--------------- .. py:class:: Forwarder(config, cm) - Bases: :py:obj:`threading.Thread` + A class that represents a thread of control. This class can be safely subclassed in a limited fashion. There are two ways @@ -29,6 +27,7 @@ Classes by overriding the run() method in a subclass. + .. py:method:: run() Method representing the thread's activity. @@ -40,15 +39,17 @@ Classes + .. py:method:: run_forwarder() :async: + .. py:method:: process_pending_messages(messages_left) :async: - .. py:method:: forward(msg, addr_from) + .. py:method:: forward(msg, addr_from) diff --git a/_sources/api/nebula/core/network/health/index.rst b/_sources/api/nebula/core/network/health/index.rst index 1ac4278a..9715e7c1 100644 --- a/_sources/api/nebula/core/network/health/index.rst +++ b/_sources/api/nebula/core/network/health/index.rst @@ -1,27 +1,25 @@ -:py:mod:`nebula.core.network.health` -==================================== +nebula.core.network.health +========================== .. py:module:: nebula.core.network.health -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.network.health.Health - +Module Contents +--------------- .. py:class:: Health(addr, config, cm) - Bases: :py:obj:`threading.Thread` + A class that represents a thread of control. This class can be safely subclassed in a limited fashion. There are two ways @@ -29,6 +27,7 @@ Classes by overriding the run() method in a subclass. + .. py:method:: run() Method representing the thread's activity. @@ -40,14 +39,17 @@ Classes + .. py:method:: run_send_alive() :async: + .. py:method:: run_check_alive() :async: + .. py:method:: alive(source) :async: diff --git a/_sources/api/nebula/core/network/index.rst b/_sources/api/nebula/core/network/index.rst index efa305c2..33f2f6da 100644 --- a/_sources/api/nebula/core/network/index.rst +++ b/_sources/api/nebula/core/network/index.rst @@ -1,21 +1,21 @@ -:py:mod:`nebula.core.network` -============================= +nebula.core.network +=================== .. py:module:: nebula.core.network Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - communications/index.rst - connection/index.rst - discoverer/index.rst - forwarder/index.rst - health/index.rst - messages/index.rst - propagator/index.rst + /api/nebula/core/network/communications/index + /api/nebula/core/network/connection/index + /api/nebula/core/network/discoverer/index + /api/nebula/core/network/forwarder/index + /api/nebula/core/network/health/index + /api/nebula/core/network/messages/index + /api/nebula/core/network/propagator/index diff --git a/_sources/api/nebula/core/network/messages/index.rst b/_sources/api/nebula/core/network/messages/index.rst index dd0a4af9..2e75ce22 100644 --- a/_sources/api/nebula/core/network/messages/index.rst +++ b/_sources/api/nebula/core/network/messages/index.rst @@ -1,25 +1,22 @@ -:py:mod:`nebula.core.network.messages` -====================================== +nebula.core.network.messages +============================ .. py:module:: nebula.core.network.messages -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.network.messages.MessagesManager - +Module Contents +--------------- .. py:class:: MessagesManager(addr, config, cm) - .. py:method:: generate_discovery_message(action, latitude=0.0, longitude=0.0) @@ -38,4 +35,3 @@ Classes .. py:method:: generate_reputation_message(reputation) - diff --git a/_sources/api/nebula/core/network/propagator/index.rst b/_sources/api/nebula/core/network/propagator/index.rst index ae17f00c..d7f9b027 100644 --- a/_sources/api/nebula/core/network/propagator/index.rst +++ b/_sources/api/nebula/core/network/propagator/index.rst @@ -1,14 +1,11 @@ -:py:mod:`nebula.core.network.propagator` -======================================== +nebula.core.network.propagator +============================== .. py:module:: nebula.core.network.propagator -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: @@ -18,20 +15,23 @@ Classes nebula.core.network.propagator.Propagator - +Module Contents +--------------- .. py:class:: PropagationStrategy - Bases: :py:obj:`abc.ABC` + Helper class that provides a standard way to create an ABC using inheritance. + .. py:method:: is_node_eligible(node) :abstractmethod: + .. py:method:: prepare_model_payload(node) :abstractmethod: @@ -39,12 +39,13 @@ Classes .. py:class:: InitialModelPropagation(aggregator, trainer, engine) - Bases: :py:obj:`PropagationStrategy` + Helper class that provides a standard way to create an ABC using inheritance. + .. py:method:: get_round() @@ -54,15 +55,15 @@ Classes .. py:method:: prepare_model_payload(node) - .. py:class:: StableModelPropagation(aggregator, trainer, engine) - Bases: :py:obj:`PropagationStrategy` + Helper class that provides a standard way to create an ABC using inheritance. + .. py:method:: get_round() @@ -72,10 +73,8 @@ Classes .. py:method:: prepare_model_payload(node) - .. py:class:: Propagator(cm) - .. py:method:: start() @@ -92,6 +91,7 @@ Classes :async: + .. py:method:: propagate_continuously(strategy_id) :async: diff --git a/_sources/api/nebula/core/pb/index.rst b/_sources/api/nebula/core/pb/index.rst index 444879b4..1f8408cf 100644 --- a/_sources/api/nebula/core/pb/index.rst +++ b/_sources/api/nebula/core/pb/index.rst @@ -1,15 +1,15 @@ -:py:mod:`nebula.core.pb` -======================== +nebula.core.pb +============== .. py:module:: nebula.core.pb Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - nebula_pb2/index.rst + /api/nebula/core/pb/nebula_pb2/index diff --git a/_sources/api/nebula/core/pb/nebula_pb2/index.rst b/_sources/api/nebula/core/pb/nebula_pb2/index.rst index 323b1bca..93afe087 100644 --- a/_sources/api/nebula/core/pb/nebula_pb2/index.rst +++ b/_sources/api/nebula/core/pb/nebula_pb2/index.rst @@ -1,5 +1,5 @@ -:py:mod:`nebula.core.pb.nebula_pb2` -=================================== +nebula.core.pb.nebula_pb2 +========================= .. py:module:: nebula.core.pb.nebula_pb2 @@ -9,10 +9,16 @@ +Attributes +---------- + +.. autoapisummary:: + + nebula.core.pb.nebula_pb2.DESCRIPTOR + + Module Contents --------------- .. py:data:: DESCRIPTOR - - diff --git a/_sources/api/nebula/core/role/index.rst b/_sources/api/nebula/core/role/index.rst index ef50a580..4b380baf 100644 --- a/_sources/api/nebula/core/role/index.rst +++ b/_sources/api/nebula/core/role/index.rst @@ -1,50 +1,47 @@ -:py:mod:`nebula.core.role` -========================== +nebula.core.role +================ .. py:module:: nebula.core.role -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.role.Role - +Module Contents +--------------- .. py:class:: Role - This class defines the participant roles of the platform. + .. py:attribute:: TRAINER :value: 'trainer' - + .. py:attribute:: AGGREGATOR :value: 'aggregator' - + .. py:attribute:: PROXY :value: 'proxy' - + .. py:attribute:: IDLE :value: 'idle' - + .. py:attribute:: SERVER :value: 'server' - diff --git a/_sources/api/nebula/core/training/index.rst b/_sources/api/nebula/core/training/index.rst index 6f960e75..10fbf8ae 100644 --- a/_sources/api/nebula/core/training/index.rst +++ b/_sources/api/nebula/core/training/index.rst @@ -1,17 +1,17 @@ -:py:mod:`nebula.core.training` -============================== +nebula.core.training +==================== .. py:module:: nebula.core.training Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - lightning/index.rst - scikit/index.rst - siamese/index.rst + /api/nebula/core/training/lightning/index + /api/nebula/core/training/scikit/index + /api/nebula/core/training/siamese/index diff --git a/_sources/api/nebula/core/training/lightning/index.rst b/_sources/api/nebula/core/training/lightning/index.rst index cc04e96a..6406a128 100644 --- a/_sources/api/nebula/core/training/lightning/index.rst +++ b/_sources/api/nebula/core/training/lightning/index.rst @@ -1,37 +1,34 @@ -:py:mod:`nebula.core.training.lightning` -======================================== +nebula.core.training.lightning +============================== .. py:module:: nebula.core.training.lightning -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.training.lightning.Lightning - +Module Contents +--------------- .. py:class:: Lightning(model, data, config=None, logger=None) - - .. py:property:: logger - - .. py:attribute:: DEFAULT_MODEL_WEIGHT :value: 1 - + .. py:attribute:: BYPASS_MODEL_WEIGHT :value: 0 - + + + .. py:property:: logger + .. py:method:: get_round() @@ -54,6 +51,7 @@ Classes :rtype: str + .. py:method:: set_epochs(epochs) @@ -87,4 +85,3 @@ Classes .. py:method:: on_learning_cycle_end() - diff --git a/_sources/api/nebula/core/training/scikit/index.rst b/_sources/api/nebula/core/training/scikit/index.rst index 824da309..e8c3f276 100644 --- a/_sources/api/nebula/core/training/scikit/index.rst +++ b/_sources/api/nebula/core/training/scikit/index.rst @@ -1,25 +1,22 @@ -:py:mod:`nebula.core.training.scikit` -===================================== +nebula.core.training.scikit +=========================== .. py:module:: nebula.core.training.scikit -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.training.scikit.Scikit - +Module Contents +--------------- .. py:class:: Scikit(model, data, config=None, logger=None) - .. py:method:: set_model(model) @@ -59,4 +56,3 @@ Classes .. py:method:: finalize_round() - diff --git a/_sources/api/nebula/core/training/siamese/index.rst b/_sources/api/nebula/core/training/siamese/index.rst index e1cdcd14..a5837dd7 100644 --- a/_sources/api/nebula/core/training/siamese/index.rst +++ b/_sources/api/nebula/core/training/siamese/index.rst @@ -1,25 +1,22 @@ -:py:mod:`nebula.core.training.siamese` -====================================== +nebula.core.training.siamese +============================ .. py:module:: nebula.core.training.siamese -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.training.siamese.Siamese - +Module Contents +--------------- .. py:class:: Siamese(model, data, config=None, logger=None) - .. py:property:: logger @@ -50,6 +47,7 @@ Classes :rtype: str + .. py:method:: set_epochs(epochs) @@ -74,4 +72,3 @@ Classes .. py:method:: finalize_round() - diff --git a/_sources/api/nebula/core/utils/certificate/index.rst b/_sources/api/nebula/core/utils/certificate/index.rst index 11933d40..7bd1e0e5 100644 --- a/_sources/api/nebula/core/utils/certificate/index.rst +++ b/_sources/api/nebula/core/utils/certificate/index.rst @@ -1,15 +1,19 @@ -:py:mod:`nebula.core.utils.certificate` -======================================= +nebula.core.utils.certificate +============================= .. py:module:: nebula.core.utils.certificate -Module Contents ---------------- +Attributes +---------- + +.. autoapisummary:: + + nebula.core.utils.certificate.current_dir Functions -~~~~~~~~~ +--------- .. autoapisummary:: @@ -17,22 +21,12 @@ Functions nebula.core.utils.certificate.generate_certificate - -Attributes -~~~~~~~~~~ - -.. autoapisummary:: - - nebula.core.utils.certificate.current_dir - +Module Contents +--------------- .. py:function:: generate_ca_certificate(dir_path) - .. py:function:: generate_certificate(dir_path, node_id, ip) - .. py:data:: current_dir - - diff --git a/_sources/api/nebula/core/utils/deterministic/index.rst b/_sources/api/nebula/core/utils/deterministic/index.rst index 3a6631f2..7462d406 100644 --- a/_sources/api/nebula/core/utils/deterministic/index.rst +++ b/_sources/api/nebula/core/utils/deterministic/index.rst @@ -1,22 +1,19 @@ -:py:mod:`nebula.core.utils.deterministic` -========================================= +nebula.core.utils.deterministic +=============================== .. py:module:: nebula.core.utils.deterministic -Module Contents ---------------- - - Functions -~~~~~~~~~ +--------- .. autoapisummary:: nebula.core.utils.deterministic.enable_deterministic +Module Contents +--------------- .. py:function:: enable_deterministic(config) - diff --git a/_sources/api/nebula/core/utils/helper/index.rst b/_sources/api/nebula/core/utils/helper/index.rst index 3880a87c..49ab1c07 100644 --- a/_sources/api/nebula/core/utils/helper/index.rst +++ b/_sources/api/nebula/core/utils/helper/index.rst @@ -1,15 +1,11 @@ -:py:mod:`nebula.core.utils.helper` -================================== +nebula.core.utils.helper +======================== .. py:module:: nebula.core.utils.helper -Module Contents ---------------- - - Functions -~~~~~~~~~ +--------- .. autoapisummary:: @@ -23,28 +19,22 @@ Functions nebula.core.utils.helper.normalise_layers +Module Contents +--------------- .. py:function:: cosine_metric2(model1, model2, similarity = False) - .. py:function:: cosine_metric(model1, model2, similarity = False) - .. py:function:: euclidean_metric(model1, model2, standardized = False, similarity = False) - .. py:function:: minkowski_metric(model1, model2, p, similarity = False) - .. py:function:: manhattan_metric(model1, model2, similarity = False) - .. py:function:: pearson_correlation_metric(model1, model2, similarity = False) - .. py:function:: jaccard_metric(model1, model2, similarity = False) - .. py:function:: normalise_layers(untrusted_params, trusted_params) - diff --git a/_sources/api/nebula/core/utils/index.rst b/_sources/api/nebula/core/utils/index.rst index 97864603..a2074d82 100644 --- a/_sources/api/nebula/core/utils/index.rst +++ b/_sources/api/nebula/core/utils/index.rst @@ -1,20 +1,20 @@ -:py:mod:`nebula.core.utils` -=========================== +nebula.core.utils +================= .. py:module:: nebula.core.utils Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - certificate/index.rst - deterministic/index.rst - helper/index.rst - locker/index.rst - nebulalogger/index.rst - nebulalogger_tensorboard/index.rst + /api/nebula/core/utils/certificate/index + /api/nebula/core/utils/deterministic/index + /api/nebula/core/utils/helper/index + /api/nebula/core/utils/locker/index + /api/nebula/core/utils/nebulalogger/index + /api/nebula/core/utils/nebulalogger_tensorboard/index diff --git a/_sources/api/nebula/core/utils/locker/index.rst b/_sources/api/nebula/core/utils/locker/index.rst index 22de1d73..e94050c7 100644 --- a/_sources/api/nebula/core/utils/locker/index.rst +++ b/_sources/api/nebula/core/utils/locker/index.rst @@ -1,25 +1,22 @@ -:py:mod:`nebula.core.utils.locker` -================================== +nebula.core.utils.locker +======================== .. py:module:: nebula.core.utils.locker -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.utils.locker.Locker - +Module Contents +--------------- .. py:class:: Locker(name, verbose=True, async_lock=False, *args, **kwargs) - .. py:method:: acquire(*args, **kwargs) @@ -33,6 +30,7 @@ Classes :async: + .. py:method:: release_async(*args, **kwargs) :async: diff --git a/_sources/api/nebula/core/utils/nebulalogger/index.rst b/_sources/api/nebula/core/utils/nebulalogger/index.rst index bb9155dd..7a10288f 100644 --- a/_sources/api/nebula/core/utils/nebulalogger/index.rst +++ b/_sources/api/nebula/core/utils/nebulalogger/index.rst @@ -1,27 +1,25 @@ -:py:mod:`nebula.core.utils.nebulalogger` -======================================== +nebula.core.utils.nebulalogger +============================== .. py:module:: nebula.core.utils.nebulalogger -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.utils.nebulalogger.NebulaLogger - +Module Contents +--------------- .. py:class:: NebulaLogger(config, engine, scenario_start_time, *args, **kwargs) - Bases: :py:obj:`aim.pytorch_lightning.AimLogger` + .. py:method:: finalize(status = '') @@ -34,4 +32,3 @@ Classes .. py:method:: log_figure(figure, step=None, name=None) - diff --git a/_sources/api/nebula/core/utils/nebulalogger_tensorboard/index.rst b/_sources/api/nebula/core/utils/nebulalogger_tensorboard/index.rst index 0047be60..da62674e 100644 --- a/_sources/api/nebula/core/utils/nebulalogger_tensorboard/index.rst +++ b/_sources/api/nebula/core/utils/nebulalogger_tensorboard/index.rst @@ -1,27 +1,25 @@ -:py:mod:`nebula.core.utils.nebulalogger_tensorboard` -==================================================== +nebula.core.utils.nebulalogger_tensorboard +========================================== .. py:module:: nebula.core.utils.nebulalogger_tensorboard -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: nebula.core.utils.nebulalogger_tensorboard.NebulaTensorBoardLogger - +Module Contents +--------------- .. py:class:: NebulaTensorBoardLogger(scenario_start_time, *args, **kwargs) - Bases: :py:obj:`lightning.pytorch.loggers.TensorBoardLogger` + .. py:method:: get_step() @@ -34,4 +32,3 @@ Classes .. py:method:: log_figure(figure, step=None, name=None) - diff --git a/_sources/api/nebula/frontend/app/index.rst b/_sources/api/nebula/frontend/app/index.rst index 7d40be0b..33e46d5f 100644 --- a/_sources/api/nebula/frontend/app/index.rst +++ b/_sources/api/nebula/frontend/app/index.rst @@ -1,14 +1,29 @@ -:py:mod:`nebula.frontend.app` -============================= +nebula.frontend.app +=================== .. py:module:: nebula.frontend.app -Module Contents ---------------- +Attributes +---------- + +.. autoapisummary:: + + nebula.frontend.app.settings + nebula.frontend.app.app + nebula.frontend.app.manager + nebula.frontend.app.templates + nebula.frontend.app.nodes_registration + nebula.frontend.app.scenarios_list_length + nebula.frontend.app.scenarios_finished + nebula.frontend.app.stop_all_scenarios_event + nebula.frontend.app.finish_scenario_event + nebula.frontend.app.nodes_finished + nebula.frontend.app.parser + Classes -~~~~~~~ +------- .. autoapisummary:: @@ -16,9 +31,8 @@ Classes nebula.frontend.app.ConnectionManager - Functions -~~~~~~~~~ +--------- .. autoapisummary:: @@ -68,100 +82,68 @@ Functions nebula.frontend.app.nebula_dashboard_deployment_run - -Attributes -~~~~~~~~~~ - -.. autoapisummary:: - - nebula.frontend.app.settings - nebula.frontend.app.app - nebula.frontend.app.manager - nebula.frontend.app.templates - nebula.frontend.app.nodes_registration - nebula.frontend.app.scenarios_list_length - nebula.frontend.app.scenarios_finished - nebula.frontend.app.stop_all_scenarios_event - nebula.frontend.app.finish_scenario_event - nebula.frontend.app.nodes_finished - nebula.frontend.app.parser - +Module Contents +--------------- .. py:class:: Settings - .. py:attribute:: debug - :type: bool + :type: bool - .. py:attribute:: advanced_analytics - :type: bool + :type: bool - .. py:attribute:: log_dir - :type: str + :type: str - .. py:attribute:: config_dir - :type: str + :type: str - .. py:attribute:: cert_dir - :type: str + :type: str - .. py:attribute:: root_host_path - :type: str + :type: str - .. py:attribute:: config_frontend_dir - :type: str + :type: str - .. py:attribute:: statistics_port - :type: int + :type: int - .. py:attribute:: secret_key - :type: str + :type: str - .. py:attribute:: PERMANENT_SESSION_LIFETIME - :type: datetime.timedelta + :type: datetime.timedelta - .. py:attribute:: templates_dir - :type: str + :type: str :value: 'templates' - .. py:data:: settings - - .. py:data:: app - - .. py:class:: ConnectionManager - .. py:method:: connect(websocket) :async: + .. py:method:: disconnect(websocket) @@ -169,6 +151,7 @@ Attributes :async: + .. py:method:: broadcast(message) :async: @@ -176,46 +159,34 @@ Attributes .. py:data:: manager - - .. py:function:: websocket_endpoint(websocket, client_id) :async: .. py:data:: templates - - .. py:function:: datetimeformat(value, format='%B %d, %Y %H:%M') - .. py:function:: get_session(request) - .. py:function:: set_default_user() - .. py:function:: startup_event() :async: .. py:data:: nodes_registration - - .. py:data:: scenarios_list_length :value: 0 - .. py:data:: scenarios_finished :value: 0 - .. py:function:: signal_handler(signal, frame) - .. py:function:: custom_http_exception_handler(request, exc) :async: @@ -274,7 +245,6 @@ Attributes .. py:function:: update_topology(scenario_name, nodes_list, nodes_config) - .. py:function:: nebula_update_node(scenario_name, request, session = Depends(get_session)) :async: @@ -309,27 +279,22 @@ Attributes .. py:function:: stop_scenario(scenario_name) - .. py:function:: stop_all_scenarios() - .. py:function:: nebula_stop_scenario(scenario_name, stop_all, request, session = Depends(get_session)) :async: .. py:function:: remove_scenario(scenario_name=None) - .. py:function:: nebula_remove_scenario(scenario_name, request, session = Depends(get_session)) :async: .. py:function:: get_tracking_hash_scenario(scenario_name) - .. py:function:: zipdir(path, ziph) - .. py:function:: nebula_dashboard_download_logs_metrics(scenario_name, request, session = Depends(get_session)) :async: @@ -350,16 +315,11 @@ Attributes .. py:data:: stop_all_scenarios_event - - .. py:data:: finish_scenario_event - - .. py:data:: nodes_finished :value: [] - .. py:function:: node_stopped(scenario_name, request) :async: @@ -367,15 +327,11 @@ Attributes .. py:function:: run_scenario(scenario_data, role) - .. py:function:: run_scenarios(data, role) - .. py:function:: nebula_dashboard_deployment_run(request, background_tasks, session = Depends(get_session)) :async: .. py:data:: parser - - diff --git a/_sources/api/nebula/frontend/config/index.rst b/_sources/api/nebula/frontend/config/index.rst index b3c49898..ef7285f7 100644 --- a/_sources/api/nebula/frontend/config/index.rst +++ b/_sources/api/nebula/frontend/config/index.rst @@ -1,5 +1,5 @@ -:py:mod:`nebula.frontend.config` -================================ +nebula.frontend.config +====================== .. py:module:: nebula.frontend.config diff --git a/_sources/api/nebula/frontend/database/index.rst b/_sources/api/nebula/frontend/database/index.rst index 335a9005..a19f76dd 100644 --- a/_sources/api/nebula/frontend/database/index.rst +++ b/_sources/api/nebula/frontend/database/index.rst @@ -1,15 +1,23 @@ -:py:mod:`nebula.frontend.database` -================================== +nebula.frontend.database +======================== .. py:module:: nebula.frontend.database -Module Contents ---------------- +Attributes +---------- + +.. autoapisummary:: + + nebula.frontend.database.user_db_file_location + nebula.frontend.database.node_db_file_location + nebula.frontend.database.scenario_db_file_location + nebula.frontend.database.notes_db_file_location + nebula.frontend.database.PRAGMA_SETTINGS Functions -~~~~~~~~~ +--------- .. autoapisummary:: @@ -44,43 +52,28 @@ Functions nebula.frontend.database.remove_note - -Attributes -~~~~~~~~~~ - -.. autoapisummary:: - - nebula.frontend.database.user_db_file_location - nebula.frontend.database.node_db_file_location - nebula.frontend.database.scenario_db_file_location - nebula.frontend.database.notes_db_file_location - nebula.frontend.database.PRAGMA_SETTINGS - +Module Contents +--------------- .. py:data:: user_db_file_location :value: 'databases/users.db' - .. py:data:: node_db_file_location :value: 'databases/nodes.db' - .. py:data:: scenario_db_file_location :value: 'databases/scenarios.db' - .. py:data:: notes_db_file_location :value: 'databases/notes.db' - .. py:data:: PRAGMA_SETTINGS :value: ['PRAGMA journal_mode=WAL;', 'PRAGMA synchronous=NORMAL;', 'PRAGMA journal_size_limit=1048576;',... - .. py:function:: setup_database(db_file_location) :async: @@ -92,83 +85,57 @@ Attributes .. py:function:: list_users(all_info=False) - .. py:function:: get_user_info(user) - .. py:function:: verify(user, password) - .. py:function:: delete_user_from_db(user) - .. py:function:: add_user(user, password, role) - .. py:function:: update_user(user, password, role) - .. py:function:: list_nodes(scenario_name=None, sort_by='idx') - .. py:function:: list_nodes_by_scenario_name(scenario_name) - .. py:function:: update_node_record(node_uid, idx, ip, port, role, neighbors, latitude, longitude, timestamp, federation, federation_round, scenario, run_hash) :async: .. py:function:: remove_all_nodes() - .. py:function:: remove_nodes_by_scenario_name(scenario_name) - .. py:function:: get_run_hashes_scenario(scenario_name) - .. py:function:: get_all_scenarios(sort_by='start_time') - .. py:function:: get_all_scenarios_and_check_completed(sort_by='start_time') - .. py:function:: scenario_update_record(scenario_name, start_time, end_time, title, description, status, network_subnet, model, dataset, rounds, role) - .. py:function:: scenario_set_all_status_to_finished() - .. py:function:: scenario_set_status_to_finished(scenario_name) - .. py:function:: scenario_set_status_to_completed(scenario_name) - .. py:function:: get_running_scenario() - .. py:function:: get_completed_scenario() - .. py:function:: get_scenario_by_name(scenario_name) - .. py:function:: remove_scenario_by_name(scenario_name) - .. py:function:: check_scenario_federation_completed(scenario_name) - .. py:function:: check_scenario_with_role(role, scenario_name) - .. py:function:: save_notes(scenario, notes) - .. py:function:: get_notes(scenario) - .. py:function:: remove_note(scenario) - diff --git a/_sources/api/nebula/frontend/databases/index.rst b/_sources/api/nebula/frontend/databases/index.rst index 371d2cf1..543e91ee 100644 --- a/_sources/api/nebula/frontend/databases/index.rst +++ b/_sources/api/nebula/frontend/databases/index.rst @@ -1,5 +1,5 @@ -:py:mod:`nebula.frontend.databases` -=================================== +nebula.frontend.databases +========================= .. py:module:: nebula.frontend.databases diff --git a/_sources/api/nebula/frontend/index.rst b/_sources/api/nebula/frontend/index.rst index 888ce424..1d1df6f0 100644 --- a/_sources/api/nebula/frontend/index.rst +++ b/_sources/api/nebula/frontend/index.rst @@ -1,26 +1,26 @@ -:py:mod:`nebula.frontend` -========================= +nebula.frontend +=============== .. py:module:: nebula.frontend Subpackages ----------- + .. toctree:: - :titlesonly: - :maxdepth: 3 + :maxdepth: 1 - config/index.rst - databases/index.rst + /api/nebula/frontend/config/index + /api/nebula/frontend/databases/index Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - app/index.rst - database/index.rst + /api/nebula/frontend/app/index + /api/nebula/frontend/database/index diff --git a/_sources/api/nebula/index.rst b/_sources/api/nebula/index.rst index ba64342b..8d35c18e 100644 --- a/_sources/api/nebula/index.rst +++ b/_sources/api/nebula/index.rst @@ -1,30 +1,30 @@ -:py:mod:`nebula` -================ +nebula +====== .. py:module:: nebula Subpackages ----------- + .. toctree:: - :titlesonly: - :maxdepth: 3 + :maxdepth: 1 - addons/index.rst - config/index.rst - core/index.rst - frontend/index.rst - tests/index.rst + /api/nebula/addons/index + /api/nebula/config/index + /api/nebula/core/index + /api/nebula/frontend/index + /api/nebula/tests/index Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - controller/index.rst - node/index.rst - scenarios/index.rst + /api/nebula/controller/index + /api/nebula/node/index + /api/nebula/scenarios/index diff --git a/_sources/api/nebula/node/index.rst b/_sources/api/nebula/node/index.rst index 810bb307..b9189f1d 100644 --- a/_sources/api/nebula/node/index.rst +++ b/_sources/api/nebula/node/index.rst @@ -1,35 +1,31 @@ -:py:mod:`nebula.node` -===================== +nebula.node +=========== .. py:module:: nebula.node -Module Contents ---------------- - - -Functions -~~~~~~~~~ +Attributes +---------- .. autoapisummary:: - nebula.node.main - + nebula.node.loop -Attributes -~~~~~~~~~~ +Functions +--------- .. autoapisummary:: - nebula.node.loop + nebula.node.main +Module Contents +--------------- + .. py:function:: main() :async: .. py:data:: loop - - diff --git a/_sources/api/nebula/scenarios/index.rst b/_sources/api/nebula/scenarios/index.rst index 75ca6d5f..58cb7878 100644 --- a/_sources/api/nebula/scenarios/index.rst +++ b/_sources/api/nebula/scenarios/index.rst @@ -1,14 +1,11 @@ -:py:mod:`nebula.scenarios` -========================== +nebula.scenarios +================ .. py:module:: nebula.scenarios -Module Contents ---------------- - Classes -~~~~~~~ +------- .. autoapisummary:: @@ -16,21 +13,23 @@ Classes nebula.scenarios.ScenarioManagement - +Module Contents +--------------- .. py:class:: Scenario(scenario_title, scenario_description, simulation, federation, topology, nodes, nodes_graph, n_nodes, matrix, dataset, iid, partition_selection, partition_parameter, model, agg_algorithm, rounds, logginglevel, accelerator, network_subnet, network_gateway, epochs, attacks, poisoned_node_percent, poisoned_sample_percent, poisoned_noise_percent, with_reputation, is_dynamic_topology, is_dynamic_aggregation, target_aggregation, random_geo, latitude, longitude, mobility, mobility_type, radius_federation, scheme_mobility, round_frequency, mobile_participants_percent, additional_participants, schema_additional_participants) - .. py:method:: attack_node_assign(nodes, federation, attack, poisoned_node_percent, poisoned_sample_percent, poisoned_noise_percent) Identify which nodes will be attacked + .. py:method:: mobility_assign(nodes, mobile_participants_percent) Assign mobility to nodes + .. py:method:: from_dict(data) :classmethod: @@ -38,19 +37,21 @@ Classes .. py:class:: ScenarioManagement(scenario, controller) - .. py:method:: stop_blockchain() :staticmethod: + .. py:method:: stop_participants() :staticmethod: + .. py:method:: stop_nodes() :staticmethod: + .. py:method:: load_configurations_and_start_nodes(additional_participants=None, schema_additional_participants=None) @@ -67,7 +68,7 @@ Classes :classmethod: - .. py:method:: scenario_finished(timeout_seconds) + .. py:method:: scenario_finished(timeout_seconds) diff --git a/_sources/api/nebula/tests/index.rst b/_sources/api/nebula/tests/index.rst index ea0a26cc..dcb7c8cd 100644 --- a/_sources/api/nebula/tests/index.rst +++ b/_sources/api/nebula/tests/index.rst @@ -1,15 +1,15 @@ -:py:mod:`nebula.tests` -====================== +nebula.tests +============ .. py:module:: nebula.tests Submodules ---------- + .. toctree:: - :titlesonly: :maxdepth: 1 - main/index.rst + /api/nebula/tests/main/index diff --git a/_sources/api/nebula/tests/main/index.rst b/_sources/api/nebula/tests/main/index.rst index f3a07094..724654e6 100644 --- a/_sources/api/nebula/tests/main/index.rst +++ b/_sources/api/nebula/tests/main/index.rst @@ -1,15 +1,19 @@ -:py:mod:`nebula.tests.main` -=========================== +nebula.tests.main +================= .. py:module:: nebula.tests.main -Module Contents ---------------- +Attributes +---------- + +.. autoapisummary:: + + nebula.tests.main.TIMEOUT Functions -~~~~~~~~~ +--------- .. autoapisummary:: @@ -22,38 +26,24 @@ Functions nebula.tests.main.run_scenario - -Attributes -~~~~~~~~~~ - -.. autoapisummary:: - - nebula.tests.main.TIMEOUT - +Module Contents +--------------- .. py:data:: TIMEOUT :value: 3600 - .. py:function:: signal_handler(signal, frame) - .. py:function:: create_docker_network() - .. py:function:: menu() - .. py:function:: check_error_logs(test_name, scenario_name) - .. py:function:: load_test(test_path) - .. py:function:: run_test(test_path) - .. py:function:: run_scenario(scenario) - diff --git a/_static/locales/ar/LC_MESSAGES/booktheme.po b/_static/locales/ar/LC_MESSAGES/booktheme.po index edae2ec4..34d404c6 100644 --- a/_static/locales/ar/LC_MESSAGES/booktheme.po +++ b/_static/locales/ar/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: ar\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "طباعة إلى PDF" + msgid "Theme by the" msgstr "موضوع بواسطة" -msgid "Open an issue" -msgstr "افتح قضية" +msgid "Download source file" +msgstr "تنزيل ملف المصدر" + +msgid "open issue" +msgstr "قضية مفتوحة" msgid "Contents" msgstr "محتويات" +msgid "previous page" +msgstr "الصفحة السابقة" + msgid "Download notebook file" msgstr "تنزيل ملف دفتر الملاحظات" -msgid "Sphinx Book Theme" -msgstr "موضوع كتاب أبو الهول" - -msgid "Fullscreen mode" -msgstr "وضع ملء الشاشة" - -msgid "Edit this page" -msgstr "قم بتحرير هذه الصفحة" - -msgid "By" -msgstr "بواسطة" - msgid "Copyright" msgstr "حقوق النشر" +msgid "Download this page" +msgstr "قم بتنزيل هذه الصفحة" + msgid "Source repository" msgstr "مستودع المصدر" -msgid "previous page" -msgstr "الصفحة السابقة" +msgid "By" +msgstr "بواسطة" -msgid "next page" -msgstr "الصفحة التالية" +msgid "repository" +msgstr "مخزن" + +msgid "Last updated on" +msgstr "آخر تحديث في" msgid "Toggle navigation" msgstr "تبديل التنقل" -msgid "repository" -msgstr "مخزن" +msgid "Sphinx Book Theme" +msgstr "موضوع كتاب أبو الهول" msgid "suggest edit" msgstr "أقترح تحرير" -msgid "open issue" -msgstr "قضية مفتوحة" +msgid "Open an issue" +msgstr "افتح قضية" msgid "Launch" msgstr "إطلاق" -msgid "Print to PDF" -msgstr "طباعة إلى PDF" +msgid "Fullscreen mode" +msgstr "وضع ملء الشاشة" + +msgid "Edit this page" +msgstr "قم بتحرير هذه الصفحة" msgid "By the" msgstr "بواسطة" -msgid "Last updated on" -msgstr "آخر تحديث في" - -msgid "Download source file" -msgstr "تنزيل ملف المصدر" - -msgid "Download this page" -msgstr "قم بتنزيل هذه الصفحة" +msgid "next page" +msgstr "الصفحة التالية" diff --git a/_static/locales/bg/LC_MESSAGES/booktheme.po b/_static/locales/bg/LC_MESSAGES/booktheme.po index 1f363b9d..7420c19e 100644 --- a/_static/locales/bg/LC_MESSAGES/booktheme.po +++ b/_static/locales/bg/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "Печат в PDF" + msgid "Theme by the" msgstr "Тема от" -msgid "Open an issue" -msgstr "Отворете проблем" +msgid "Download source file" +msgstr "Изтеглете изходния файл" + +msgid "open issue" +msgstr "отворен брой" msgid "Contents" msgstr "Съдържание" +msgid "previous page" +msgstr "предишна страница" + msgid "Download notebook file" msgstr "Изтеглете файла на бележника" -msgid "Sphinx Book Theme" -msgstr "Тема на книгата Sphinx" - -msgid "Fullscreen mode" -msgstr "Режим на цял екран" - -msgid "Edit this page" -msgstr "Редактирайте тази страница" - -msgid "By" -msgstr "От" - msgid "Copyright" msgstr "Авторско право" +msgid "Download this page" +msgstr "Изтеглете тази страница" + msgid "Source repository" msgstr "Хранилище на източника" -msgid "previous page" -msgstr "предишна страница" +msgid "By" +msgstr "От" -msgid "next page" -msgstr "Следваща страница" +msgid "repository" +msgstr "хранилище" + +msgid "Last updated on" +msgstr "Последна актуализация на" msgid "Toggle navigation" msgstr "Превключване на навигацията" -msgid "repository" -msgstr "хранилище" +msgid "Sphinx Book Theme" +msgstr "Тема на книгата Sphinx" msgid "suggest edit" msgstr "предложи редактиране" -msgid "open issue" -msgstr "отворен брой" +msgid "Open an issue" +msgstr "Отворете проблем" msgid "Launch" msgstr "Стартиране" -msgid "Print to PDF" -msgstr "Печат в PDF" +msgid "Fullscreen mode" +msgstr "Режим на цял екран" + +msgid "Edit this page" +msgstr "Редактирайте тази страница" msgid "By the" msgstr "По" -msgid "Last updated on" -msgstr "Последна актуализация на" - -msgid "Download source file" -msgstr "Изтеглете изходния файл" - -msgid "Download this page" -msgstr "Изтеглете тази страница" +msgid "next page" +msgstr "Следваща страница" diff --git a/_static/locales/bn/LC_MESSAGES/booktheme.po b/_static/locales/bn/LC_MESSAGES/booktheme.po index fa543728..63a07c36 100644 --- a/_static/locales/bn/LC_MESSAGES/booktheme.po +++ b/_static/locales/bn/LC_MESSAGES/booktheme.po @@ -8,56 +8,56 @@ msgstr "" "Language: bn\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "পিডিএফ প্রিন্ট করুন" + msgid "Theme by the" msgstr "থিম দ্বারা" -msgid "Open an issue" -msgstr "একটি সমস্যা খুলুন" - -msgid "Download notebook file" -msgstr "নোটবুক ফাইল ডাউনলোড করুন" +msgid "Download source file" +msgstr "উত্স ফাইল ডাউনলোড করুন" -msgid "Sphinx Book Theme" -msgstr "স্পিনিক্স বুক থিম" +msgid "open issue" +msgstr "খোলা সমস্যা" -msgid "Edit this page" -msgstr "এই পৃষ্ঠাটি সম্পাদনা করুন" +msgid "previous page" +msgstr "আগের পৃষ্ঠা" -msgid "By" -msgstr "দ্বারা" +msgid "Download notebook file" +msgstr "নোটবুক ফাইল ডাউনলোড করুন" msgid "Copyright" msgstr "কপিরাইট" +msgid "Download this page" +msgstr "এই পৃষ্ঠাটি ডাউনলোড করুন" + msgid "Source repository" msgstr "উত্স সংগ্রহস্থল" -msgid "previous page" -msgstr "আগের পৃষ্ঠা" +msgid "By" +msgstr "দ্বারা" -msgid "next page" -msgstr "পরবর্তী পৃষ্ঠা" +msgid "Last updated on" +msgstr "সর্বশেষ আপডেট" msgid "Toggle navigation" msgstr "নেভিগেশন টগল করুন" -msgid "open issue" -msgstr "খোলা সমস্যা" +msgid "Sphinx Book Theme" +msgstr "স্পিনিক্স বুক থিম" + +msgid "Open an issue" +msgstr "একটি সমস্যা খুলুন" msgid "Launch" msgstr "শুরু করা" -msgid "Print to PDF" -msgstr "পিডিএফ প্রিন্ট করুন" +msgid "Edit this page" +msgstr "এই পৃষ্ঠাটি সম্পাদনা করুন" msgid "By the" msgstr "দ্বারা" -msgid "Last updated on" -msgstr "সর্বশেষ আপডেট" - -msgid "Download source file" -msgstr "উত্স ফাইল ডাউনলোড করুন" - -msgid "Download this page" -msgstr "এই পৃষ্ঠাটি ডাউনলোড করুন" +msgid "next page" +msgstr "পরবর্তী পৃষ্ঠা" diff --git a/_static/locales/ca/LC_MESSAGES/booktheme.po b/_static/locales/ca/LC_MESSAGES/booktheme.po index 22f1569a..8fb358bf 100644 --- a/_static/locales/ca/LC_MESSAGES/booktheme.po +++ b/_static/locales/ca/LC_MESSAGES/booktheme.po @@ -8,59 +8,59 @@ msgstr "" "Language: ca\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "Imprimeix a PDF" + msgid "Theme by the" msgstr "Tema del" -msgid "Open an issue" -msgstr "Obriu un número" - -msgid "Download notebook file" -msgstr "Descarregar fitxer de quadern" +msgid "Download source file" +msgstr "Baixeu el fitxer font" -msgid "Sphinx Book Theme" -msgstr "Tema del llibre Esfinx" +msgid "open issue" +msgstr "número obert" -msgid "Edit this page" -msgstr "Editeu aquesta pàgina" +msgid "previous page" +msgstr "Pàgina anterior" -msgid "By" -msgstr "Per" +msgid "Download notebook file" +msgstr "Descarregar fitxer de quadern" msgid "Copyright" msgstr "Copyright" +msgid "Download this page" +msgstr "Descarregueu aquesta pàgina" + msgid "Source repository" msgstr "Dipòsit de fonts" -msgid "previous page" -msgstr "Pàgina anterior" +msgid "By" +msgstr "Per" -msgid "next page" -msgstr "pàgina següent" +msgid "Last updated on" +msgstr "Darrera actualització el" msgid "Toggle navigation" msgstr "Commuta la navegació" +msgid "Sphinx Book Theme" +msgstr "Tema del llibre Esfinx" + msgid "suggest edit" msgstr "suggerir edició" -msgid "open issue" -msgstr "número obert" +msgid "Open an issue" +msgstr "Obriu un número" msgid "Launch" msgstr "Llançament" -msgid "Print to PDF" -msgstr "Imprimeix a PDF" +msgid "Edit this page" +msgstr "Editeu aquesta pàgina" msgid "By the" msgstr "Per la" -msgid "Last updated on" -msgstr "Darrera actualització el" - -msgid "Download source file" -msgstr "Baixeu el fitxer font" - -msgid "Download this page" -msgstr "Descarregueu aquesta pàgina" +msgid "next page" +msgstr "pàgina següent" diff --git a/_static/locales/cs/LC_MESSAGES/booktheme.po b/_static/locales/cs/LC_MESSAGES/booktheme.po index afecd9e7..c6ef4690 100644 --- a/_static/locales/cs/LC_MESSAGES/booktheme.po +++ b/_static/locales/cs/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: cs\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "Tisk do PDF" + msgid "Theme by the" msgstr "Téma od" -msgid "Open an issue" -msgstr "Otevřete problém" +msgid "Download source file" +msgstr "Stáhněte si zdrojový soubor" + +msgid "open issue" +msgstr "otevřené číslo" msgid "Contents" msgstr "Obsah" +msgid "previous page" +msgstr "předchozí stránka" + msgid "Download notebook file" msgstr "Stáhnout soubor poznámkového bloku" -msgid "Sphinx Book Theme" -msgstr "Téma knihy Sfinga" - -msgid "Fullscreen mode" -msgstr "Režim celé obrazovky" - -msgid "Edit this page" -msgstr "Upravit tuto stránku" - -msgid "By" -msgstr "Podle" - msgid "Copyright" msgstr "autorská práva" +msgid "Download this page" +msgstr "Stáhněte si tuto stránku" + msgid "Source repository" msgstr "Zdrojové úložiště" -msgid "previous page" -msgstr "předchozí stránka" +msgid "By" +msgstr "Podle" -msgid "next page" -msgstr "další strana" +msgid "repository" +msgstr "úložiště" + +msgid "Last updated on" +msgstr "Naposledy aktualizováno" msgid "Toggle navigation" msgstr "Přepnout navigaci" -msgid "repository" -msgstr "úložiště" +msgid "Sphinx Book Theme" +msgstr "Téma knihy Sfinga" msgid "suggest edit" msgstr "navrhnout úpravy" -msgid "open issue" -msgstr "otevřené číslo" +msgid "Open an issue" +msgstr "Otevřete problém" msgid "Launch" msgstr "Zahájení" -msgid "Print to PDF" -msgstr "Tisk do PDF" +msgid "Fullscreen mode" +msgstr "Režim celé obrazovky" + +msgid "Edit this page" +msgstr "Upravit tuto stránku" msgid "By the" msgstr "Podle" -msgid "Last updated on" -msgstr "Naposledy aktualizováno" - -msgid "Download source file" -msgstr "Stáhněte si zdrojový soubor" - -msgid "Download this page" -msgstr "Stáhněte si tuto stránku" +msgid "next page" +msgstr "další strana" diff --git a/_static/locales/da/LC_MESSAGES/booktheme.po b/_static/locales/da/LC_MESSAGES/booktheme.po index 649c78a8..306a38e5 100644 --- a/_static/locales/da/LC_MESSAGES/booktheme.po +++ b/_static/locales/da/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "Udskriv til PDF" + msgid "Theme by the" msgstr "Tema af" -msgid "Open an issue" -msgstr "Åbn et problem" +msgid "Download source file" +msgstr "Download kildefil" + +msgid "open issue" +msgstr "åbent nummer" msgid "Contents" msgstr "Indhold" +msgid "previous page" +msgstr "forrige side" + msgid "Download notebook file" msgstr "Download notesbog-fil" -msgid "Sphinx Book Theme" -msgstr "Sphinx bogtema" - -msgid "Fullscreen mode" -msgstr "Fuldskærmstilstand" - -msgid "Edit this page" -msgstr "Rediger denne side" - -msgid "By" -msgstr "Ved" - msgid "Copyright" msgstr "ophavsret" +msgid "Download this page" +msgstr "Download denne side" + msgid "Source repository" msgstr "Kildelager" -msgid "previous page" -msgstr "forrige side" +msgid "By" +msgstr "Ved" -msgid "next page" -msgstr "Næste side" +msgid "repository" +msgstr "lager" + +msgid "Last updated on" +msgstr "Sidst opdateret den" msgid "Toggle navigation" msgstr "Skift navigation" -msgid "repository" -msgstr "lager" +msgid "Sphinx Book Theme" +msgstr "Sphinx bogtema" msgid "suggest edit" msgstr "foreslå redigering" -msgid "open issue" -msgstr "åbent nummer" +msgid "Open an issue" +msgstr "Åbn et problem" msgid "Launch" msgstr "Start" -msgid "Print to PDF" -msgstr "Udskriv til PDF" +msgid "Fullscreen mode" +msgstr "Fuldskærmstilstand" + +msgid "Edit this page" +msgstr "Rediger denne side" msgid "By the" msgstr "Ved" -msgid "Last updated on" -msgstr "Sidst opdateret den" - -msgid "Download source file" -msgstr "Download kildefil" - -msgid "Download this page" -msgstr "Download denne side" +msgid "next page" +msgstr "Næste side" diff --git a/_static/locales/de/LC_MESSAGES/booktheme.po b/_static/locales/de/LC_MESSAGES/booktheme.po index f51d2ecc..4925360d 100644 --- a/_static/locales/de/LC_MESSAGES/booktheme.po +++ b/_static/locales/de/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "In PDF drucken" + msgid "Theme by the" msgstr "Thema von der" -msgid "Open an issue" -msgstr "Öffnen Sie ein Problem" +msgid "Download source file" +msgstr "Quelldatei herunterladen" + +msgid "open issue" +msgstr "offenes Thema" msgid "Contents" msgstr "Inhalt" +msgid "previous page" +msgstr "vorherige Seite" + msgid "Download notebook file" msgstr "Notebook-Datei herunterladen" -msgid "Sphinx Book Theme" -msgstr "Sphinx-Buch-Thema" - -msgid "Fullscreen mode" -msgstr "Vollbildmodus" - -msgid "Edit this page" -msgstr "Bearbeite diese Seite" - -msgid "By" -msgstr "Durch" - msgid "Copyright" msgstr "Urheberrechte ©" +msgid "Download this page" +msgstr "Laden Sie diese Seite herunter" + msgid "Source repository" msgstr "Quell-Repository" -msgid "previous page" -msgstr "vorherige Seite" +msgid "By" +msgstr "Durch" -msgid "next page" -msgstr "Nächste Seite" +msgid "repository" +msgstr "Repository" + +msgid "Last updated on" +msgstr "Zuletzt aktualisiert am" msgid "Toggle navigation" msgstr "Navigation umschalten" -msgid "repository" -msgstr "Repository" +msgid "Sphinx Book Theme" +msgstr "Sphinx-Buch-Thema" msgid "suggest edit" msgstr "vorschlagen zu bearbeiten" -msgid "open issue" -msgstr "offenes Thema" +msgid "Open an issue" +msgstr "Öffnen Sie ein Problem" msgid "Launch" msgstr "Starten" -msgid "Print to PDF" -msgstr "In PDF drucken" +msgid "Fullscreen mode" +msgstr "Vollbildmodus" + +msgid "Edit this page" +msgstr "Bearbeite diese Seite" msgid "By the" msgstr "Bis zum" -msgid "Last updated on" -msgstr "Zuletzt aktualisiert am" - -msgid "Download source file" -msgstr "Quelldatei herunterladen" - -msgid "Download this page" -msgstr "Laden Sie diese Seite herunter" +msgid "next page" +msgstr "Nächste Seite" diff --git a/_static/locales/el/LC_MESSAGES/booktheme.po b/_static/locales/el/LC_MESSAGES/booktheme.po index 8bec7905..3e01acbd 100644 --- a/_static/locales/el/LC_MESSAGES/booktheme.po +++ b/_static/locales/el/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: el\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "Εκτύπωση σε PDF" + msgid "Theme by the" msgstr "Θέμα από το" -msgid "Open an issue" -msgstr "Ανοίξτε ένα ζήτημα" +msgid "Download source file" +msgstr "Λήψη αρχείου προέλευσης" + +msgid "open issue" +msgstr "ανοιχτό ζήτημα" msgid "Contents" msgstr "Περιεχόμενα" +msgid "previous page" +msgstr "προηγούμενη σελίδα" + msgid "Download notebook file" msgstr "Λήψη αρχείου σημειωματάριου" -msgid "Sphinx Book Theme" -msgstr "Θέμα βιβλίου Sphinx" - -msgid "Fullscreen mode" -msgstr "ΛΕΙΤΟΥΡΓΙΑ ΠΛΗΡΟΥΣ ΟΘΟΝΗΣ" - -msgid "Edit this page" -msgstr "Επεξεργαστείτε αυτήν τη σελίδα" - -msgid "By" -msgstr "Με" - msgid "Copyright" msgstr "Πνευματική ιδιοκτησία" +msgid "Download this page" +msgstr "Λήψη αυτής της σελίδας" + msgid "Source repository" msgstr "Αποθήκη πηγής" -msgid "previous page" -msgstr "προηγούμενη σελίδα" +msgid "By" +msgstr "Με" -msgid "next page" -msgstr "επόμενη σελίδα" +msgid "repository" +msgstr "αποθήκη" + +msgid "Last updated on" +msgstr "Τελευταία ενημέρωση στις" msgid "Toggle navigation" msgstr "Εναλλαγή πλοήγησης" -msgid "repository" -msgstr "αποθήκη" +msgid "Sphinx Book Theme" +msgstr "Θέμα βιβλίου Sphinx" msgid "suggest edit" msgstr "προτείνω επεξεργασία" -msgid "open issue" -msgstr "ανοιχτό ζήτημα" +msgid "Open an issue" +msgstr "Ανοίξτε ένα ζήτημα" msgid "Launch" msgstr "Εκτόξευση" -msgid "Print to PDF" -msgstr "Εκτύπωση σε PDF" +msgid "Fullscreen mode" +msgstr "ΛΕΙΤΟΥΡΓΙΑ ΠΛΗΡΟΥΣ ΟΘΟΝΗΣ" + +msgid "Edit this page" +msgstr "Επεξεργαστείτε αυτήν τη σελίδα" msgid "By the" msgstr "Από το" -msgid "Last updated on" -msgstr "Τελευταία ενημέρωση στις" - -msgid "Download source file" -msgstr "Λήψη αρχείου προέλευσης" - -msgid "Download this page" -msgstr "Λήψη αυτής της σελίδας" +msgid "next page" +msgstr "επόμενη σελίδα" diff --git a/_static/locales/eo/LC_MESSAGES/booktheme.po b/_static/locales/eo/LC_MESSAGES/booktheme.po index d72a0481..f7ed2262 100644 --- a/_static/locales/eo/LC_MESSAGES/booktheme.po +++ b/_static/locales/eo/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: eo\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "Presi al PDF" + msgid "Theme by the" msgstr "Temo de la" -msgid "Open an issue" -msgstr "Malfermu numeron" +msgid "Download source file" +msgstr "Elŝutu fontodosieron" + +msgid "open issue" +msgstr "malferma numero" msgid "Contents" msgstr "Enhavo" +msgid "previous page" +msgstr "antaŭa paĝo" + msgid "Download notebook file" msgstr "Elŝutu kajeran dosieron" -msgid "Sphinx Book Theme" -msgstr "Sfinksa Libro-Temo" - -msgid "Fullscreen mode" -msgstr "Plenekrana reĝimo" - -msgid "Edit this page" -msgstr "Redaktu ĉi tiun paĝon" - -msgid "By" -msgstr "De" - msgid "Copyright" msgstr "Kopirajto" +msgid "Download this page" +msgstr "Elŝutu ĉi tiun paĝon" + msgid "Source repository" msgstr "Fonto-deponejo" -msgid "previous page" -msgstr "antaŭa paĝo" +msgid "By" +msgstr "De" -msgid "next page" -msgstr "sekva paĝo" +msgid "repository" +msgstr "deponejo" + +msgid "Last updated on" +msgstr "Laste ĝisdatigita la" msgid "Toggle navigation" msgstr "Ŝalti navigadon" -msgid "repository" -msgstr "deponejo" +msgid "Sphinx Book Theme" +msgstr "Sfinksa Libro-Temo" msgid "suggest edit" msgstr "sugesti redaktadon" -msgid "open issue" -msgstr "malferma numero" +msgid "Open an issue" +msgstr "Malfermu numeron" msgid "Launch" msgstr "Lanĉo" -msgid "Print to PDF" -msgstr "Presi al PDF" +msgid "Fullscreen mode" +msgstr "Plenekrana reĝimo" + +msgid "Edit this page" +msgstr "Redaktu ĉi tiun paĝon" msgid "By the" msgstr "Per la" -msgid "Last updated on" -msgstr "Laste ĝisdatigita la" - -msgid "Download source file" -msgstr "Elŝutu fontodosieron" - -msgid "Download this page" -msgstr "Elŝutu ĉi tiun paĝon" +msgid "next page" +msgstr "sekva paĝo" diff --git a/_static/locales/es/LC_MESSAGES/booktheme.po b/_static/locales/es/LC_MESSAGES/booktheme.po index 611834b2..5e0029e5 100644 --- a/_static/locales/es/LC_MESSAGES/booktheme.po +++ b/_static/locales/es/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "Imprimir en PDF" + msgid "Theme by the" msgstr "Tema por el" -msgid "Open an issue" -msgstr "Abrir un problema" +msgid "Download source file" +msgstr "Descargar archivo fuente" + +msgid "open issue" +msgstr "Tema abierto" msgid "Contents" msgstr "Contenido" +msgid "previous page" +msgstr "pagina anterior" + msgid "Download notebook file" msgstr "Descargar archivo de cuaderno" -msgid "Sphinx Book Theme" -msgstr "Tema del libro de la esfinge" - -msgid "Fullscreen mode" -msgstr "Modo de pantalla completa" - -msgid "Edit this page" -msgstr "Edita esta página" - -msgid "By" -msgstr "Por" - msgid "Copyright" msgstr "Derechos de autor" +msgid "Download this page" +msgstr "Descarga esta pagina" + msgid "Source repository" msgstr "Repositorio de origen" -msgid "previous page" -msgstr "pagina anterior" +msgid "By" +msgstr "Por" -msgid "next page" -msgstr "siguiente página" +msgid "repository" +msgstr "repositorio" + +msgid "Last updated on" +msgstr "Ultima actualización en" msgid "Toggle navigation" msgstr "Navegación de palanca" -msgid "repository" -msgstr "repositorio" +msgid "Sphinx Book Theme" +msgstr "Tema del libro de la esfinge" msgid "suggest edit" msgstr "sugerir editar" -msgid "open issue" -msgstr "Tema abierto" +msgid "Open an issue" +msgstr "Abrir un problema" msgid "Launch" msgstr "Lanzamiento" -msgid "Print to PDF" -msgstr "Imprimir en PDF" +msgid "Fullscreen mode" +msgstr "Modo de pantalla completa" + +msgid "Edit this page" +msgstr "Edita esta página" msgid "By the" msgstr "Por el" -msgid "Last updated on" -msgstr "Ultima actualización en" - -msgid "Download source file" -msgstr "Descargar archivo fuente" - -msgid "Download this page" -msgstr "Descarga esta pagina" +msgid "next page" +msgstr "siguiente página" diff --git a/_static/locales/et/LC_MESSAGES/booktheme.po b/_static/locales/et/LC_MESSAGES/booktheme.po index 345088f0..8680982a 100644 --- a/_static/locales/et/LC_MESSAGES/booktheme.po +++ b/_static/locales/et/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: et\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "Prindi PDF-i" + msgid "Theme by the" msgstr "Teema" -msgid "Open an issue" -msgstr "Avage probleem" +msgid "Download source file" +msgstr "Laadige alla lähtefail" + +msgid "open issue" +msgstr "avatud küsimus" msgid "Contents" msgstr "Sisu" +msgid "previous page" +msgstr "eelmine leht" + msgid "Download notebook file" msgstr "Laadige sülearvuti fail alla" -msgid "Sphinx Book Theme" -msgstr "Sfinksiraamatu teema" - -msgid "Fullscreen mode" -msgstr "Täisekraanirežiim" - -msgid "Edit this page" -msgstr "Muutke seda lehte" - -msgid "By" -msgstr "Kõrval" - msgid "Copyright" msgstr "Autoriõigus" +msgid "Download this page" +msgstr "Laadige see leht alla" + msgid "Source repository" msgstr "Allikahoidla" -msgid "previous page" -msgstr "eelmine leht" +msgid "By" +msgstr "Kõrval" -msgid "next page" -msgstr "järgmine leht" +msgid "repository" +msgstr "hoidla" + +msgid "Last updated on" +msgstr "Viimati uuendatud" msgid "Toggle navigation" msgstr "Lülita navigeerimine sisse" -msgid "repository" -msgstr "hoidla" +msgid "Sphinx Book Theme" +msgstr "Sfinksiraamatu teema" msgid "suggest edit" msgstr "soovita muuta" -msgid "open issue" -msgstr "avatud küsimus" +msgid "Open an issue" +msgstr "Avage probleem" msgid "Launch" msgstr "Käivitage" -msgid "Print to PDF" -msgstr "Prindi PDF-i" +msgid "Fullscreen mode" +msgstr "Täisekraanirežiim" + +msgid "Edit this page" +msgstr "Muutke seda lehte" msgid "By the" msgstr "Autor" -msgid "Last updated on" -msgstr "Viimati uuendatud" - -msgid "Download source file" -msgstr "Laadige alla lähtefail" - -msgid "Download this page" -msgstr "Laadige see leht alla" +msgid "next page" +msgstr "järgmine leht" diff --git a/_static/locales/fi/LC_MESSAGES/booktheme.po b/_static/locales/fi/LC_MESSAGES/booktheme.po index d97a08dc..34dac218 100644 --- a/_static/locales/fi/LC_MESSAGES/booktheme.po +++ b/_static/locales/fi/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: fi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "Tulosta PDF-tiedostoon" + msgid "Theme by the" msgstr "Teeman tekijä" -msgid "Open an issue" -msgstr "Avaa ongelma" +msgid "Download source file" +msgstr "Lataa lähdetiedosto" + +msgid "open issue" +msgstr "avoin ongelma" msgid "Contents" msgstr "Sisällys" +msgid "previous page" +msgstr "Edellinen sivu" + msgid "Download notebook file" msgstr "Lataa muistikirjatiedosto" -msgid "Sphinx Book Theme" -msgstr "Sphinx-kirjan teema" - -msgid "Fullscreen mode" -msgstr "Koko näytön tila" - -msgid "Edit this page" -msgstr "Muokkaa tätä sivua" - -msgid "By" -msgstr "Tekijä" - msgid "Copyright" msgstr "Tekijänoikeus" +msgid "Download this page" +msgstr "Lataa tämä sivu" + msgid "Source repository" msgstr "Lähteen arkisto" -msgid "previous page" -msgstr "Edellinen sivu" +msgid "By" +msgstr "Tekijä" -msgid "next page" -msgstr "seuraava sivu" +msgid "repository" +msgstr "arkisto" + +msgid "Last updated on" +msgstr "Viimeksi päivitetty" msgid "Toggle navigation" msgstr "Vaihda navigointia" -msgid "repository" -msgstr "arkisto" +msgid "Sphinx Book Theme" +msgstr "Sphinx-kirjan teema" msgid "suggest edit" msgstr "ehdottaa muokkausta" -msgid "open issue" -msgstr "avoin ongelma" +msgid "Open an issue" +msgstr "Avaa ongelma" msgid "Launch" msgstr "Tuoda markkinoille" -msgid "Print to PDF" -msgstr "Tulosta PDF-tiedostoon" +msgid "Fullscreen mode" +msgstr "Koko näytön tila" + +msgid "Edit this page" +msgstr "Muokkaa tätä sivua" msgid "By the" msgstr "Mukaan" -msgid "Last updated on" -msgstr "Viimeksi päivitetty" - -msgid "Download source file" -msgstr "Lataa lähdetiedosto" - -msgid "Download this page" -msgstr "Lataa tämä sivu" +msgid "next page" +msgstr "seuraava sivu" diff --git a/_static/locales/fr/LC_MESSAGES/booktheme.po b/_static/locales/fr/LC_MESSAGES/booktheme.po index 88f35173..8991a1b8 100644 --- a/_static/locales/fr/LC_MESSAGES/booktheme.po +++ b/_static/locales/fr/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "Imprimer au format PDF" + msgid "Theme by the" msgstr "Thème par le" -msgid "Open an issue" -msgstr "Ouvrez un problème" +msgid "Download source file" +msgstr "Télécharger le fichier source" + +msgid "open issue" +msgstr "signaler un problème" msgid "Contents" msgstr "Contenu" +msgid "previous page" +msgstr "page précédente" + msgid "Download notebook file" msgstr "Télécharger le fichier notebook" -msgid "Sphinx Book Theme" -msgstr "Thème du livre Sphinx" - -msgid "Fullscreen mode" -msgstr "Mode plein écran" - -msgid "Edit this page" -msgstr "Modifier cette page" - -msgid "By" -msgstr "Par" - msgid "Copyright" msgstr "droits d'auteur" +msgid "Download this page" +msgstr "Téléchargez cette page" + msgid "Source repository" msgstr "Dépôt source" -msgid "previous page" -msgstr "page précédente" +msgid "By" +msgstr "Par" -msgid "next page" -msgstr "page suivante" +msgid "repository" +msgstr "dépôt" + +msgid "Last updated on" +msgstr "Dernière mise à jour le" msgid "Toggle navigation" msgstr "Basculer la navigation" -msgid "repository" -msgstr "dépôt" +msgid "Sphinx Book Theme" +msgstr "Thème du livre Sphinx" msgid "suggest edit" msgstr "suggestion de modification" -msgid "open issue" -msgstr "signaler un problème" +msgid "Open an issue" +msgstr "Ouvrez un problème" msgid "Launch" msgstr "lancement" -msgid "Print to PDF" -msgstr "Imprimer au format PDF" +msgid "Fullscreen mode" +msgstr "Mode plein écran" + +msgid "Edit this page" +msgstr "Modifier cette page" msgid "By the" msgstr "Par le" -msgid "Last updated on" -msgstr "Dernière mise à jour le" - -msgid "Download source file" -msgstr "Télécharger le fichier source" - -msgid "Download this page" -msgstr "Téléchargez cette page" +msgid "next page" +msgstr "page suivante" diff --git a/_static/locales/hr/LC_MESSAGES/booktheme.po b/_static/locales/hr/LC_MESSAGES/booktheme.po index fb9440ac..42c4233d 100644 --- a/_static/locales/hr/LC_MESSAGES/booktheme.po +++ b/_static/locales/hr/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: hr\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "Ispis u PDF" + msgid "Theme by the" msgstr "Tema autora" -msgid "Open an issue" -msgstr "Otvorite izdanje" +msgid "Download source file" +msgstr "Preuzmi izvornu datoteku" + +msgid "open issue" +msgstr "otvoreno izdanje" msgid "Contents" msgstr "Sadržaj" +msgid "previous page" +msgstr "Prethodna stranica" + msgid "Download notebook file" msgstr "Preuzmi datoteku bilježnice" -msgid "Sphinx Book Theme" -msgstr "Tema knjige Sphinx" - -msgid "Fullscreen mode" -msgstr "Način preko cijelog zaslona" - -msgid "Edit this page" -msgstr "Uredite ovu stranicu" - -msgid "By" -msgstr "Po" - msgid "Copyright" msgstr "Autorska prava" +msgid "Download this page" +msgstr "Preuzmite ovu stranicu" + msgid "Source repository" msgstr "Izvorno spremište" -msgid "previous page" -msgstr "Prethodna stranica" +msgid "By" +msgstr "Po" -msgid "next page" -msgstr "sljedeća stranica" +msgid "repository" +msgstr "spremište" + +msgid "Last updated on" +msgstr "Posljednje ažuriranje:" msgid "Toggle navigation" msgstr "Uključi / isključi navigaciju" -msgid "repository" -msgstr "spremište" +msgid "Sphinx Book Theme" +msgstr "Tema knjige Sphinx" msgid "suggest edit" msgstr "predloži uređivanje" -msgid "open issue" -msgstr "otvoreno izdanje" +msgid "Open an issue" +msgstr "Otvorite izdanje" msgid "Launch" msgstr "Pokrenite" -msgid "Print to PDF" -msgstr "Ispis u PDF" +msgid "Fullscreen mode" +msgstr "Način preko cijelog zaslona" + +msgid "Edit this page" +msgstr "Uredite ovu stranicu" msgid "By the" msgstr "Od strane" -msgid "Last updated on" -msgstr "Posljednje ažuriranje:" - -msgid "Download source file" -msgstr "Preuzmi izvornu datoteku" - -msgid "Download this page" -msgstr "Preuzmite ovu stranicu" +msgid "next page" +msgstr "sljedeća stranica" diff --git a/_static/locales/id/LC_MESSAGES/booktheme.po b/_static/locales/id/LC_MESSAGES/booktheme.po index 9ffb56f7..b8d8d898 100644 --- a/_static/locales/id/LC_MESSAGES/booktheme.po +++ b/_static/locales/id/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: id\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "Cetak ke PDF" + msgid "Theme by the" msgstr "Tema oleh" -msgid "Open an issue" -msgstr "Buka masalah" +msgid "Download source file" +msgstr "Unduh file sumber" + +msgid "open issue" +msgstr "masalah terbuka" msgid "Contents" msgstr "Isi" +msgid "previous page" +msgstr "halaman sebelumnya" + msgid "Download notebook file" msgstr "Unduh file notebook" -msgid "Sphinx Book Theme" -msgstr "Tema Buku Sphinx" - -msgid "Fullscreen mode" -msgstr "Mode layar penuh" - -msgid "Edit this page" -msgstr "Edit halaman ini" - -msgid "By" -msgstr "Oleh" - msgid "Copyright" msgstr "hak cipta" +msgid "Download this page" +msgstr "Unduh halaman ini" + msgid "Source repository" msgstr "Repositori sumber" -msgid "previous page" -msgstr "halaman sebelumnya" +msgid "By" +msgstr "Oleh" -msgid "next page" -msgstr "halaman selanjutnya" +msgid "repository" +msgstr "gudang" + +msgid "Last updated on" +msgstr "Terakhir diperbarui saat" msgid "Toggle navigation" msgstr "Alihkan navigasi" -msgid "repository" -msgstr "gudang" +msgid "Sphinx Book Theme" +msgstr "Tema Buku Sphinx" msgid "suggest edit" msgstr "menyarankan edit" -msgid "open issue" -msgstr "masalah terbuka" +msgid "Open an issue" +msgstr "Buka masalah" msgid "Launch" msgstr "Meluncurkan" -msgid "Print to PDF" -msgstr "Cetak ke PDF" +msgid "Fullscreen mode" +msgstr "Mode layar penuh" + +msgid "Edit this page" +msgstr "Edit halaman ini" msgid "By the" msgstr "Oleh" -msgid "Last updated on" -msgstr "Terakhir diperbarui saat" - -msgid "Download source file" -msgstr "Unduh file sumber" - -msgid "Download this page" -msgstr "Unduh halaman ini" +msgid "next page" +msgstr "halaman selanjutnya" diff --git a/_static/locales/it/LC_MESSAGES/booktheme.po b/_static/locales/it/LC_MESSAGES/booktheme.po index 04308dd2..36fca59f 100644 --- a/_static/locales/it/LC_MESSAGES/booktheme.po +++ b/_static/locales/it/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "Stampa in PDF" + msgid "Theme by the" msgstr "Tema di" -msgid "Open an issue" -msgstr "Apri un problema" +msgid "Download source file" +msgstr "Scarica il file sorgente" + +msgid "open issue" +msgstr "questione aperta" msgid "Contents" msgstr "Contenuti" +msgid "previous page" +msgstr "pagina precedente" + msgid "Download notebook file" msgstr "Scarica il file del taccuino" -msgid "Sphinx Book Theme" -msgstr "Tema del libro della Sfinge" - -msgid "Fullscreen mode" -msgstr "Modalità schermo intero" - -msgid "Edit this page" -msgstr "Modifica questa pagina" - -msgid "By" -msgstr "Di" - msgid "Copyright" msgstr "Diritto d'autore" +msgid "Download this page" +msgstr "Scarica questa pagina" + msgid "Source repository" msgstr "Repository di origine" -msgid "previous page" -msgstr "pagina precedente" +msgid "By" +msgstr "Di" -msgid "next page" -msgstr "pagina successiva" +msgid "repository" +msgstr "repository" + +msgid "Last updated on" +msgstr "Ultimo aggiornamento il" msgid "Toggle navigation" msgstr "Attiva / disattiva la navigazione" -msgid "repository" -msgstr "repository" +msgid "Sphinx Book Theme" +msgstr "Tema del libro della Sfinge" msgid "suggest edit" msgstr "suggerisci modifica" -msgid "open issue" -msgstr "questione aperta" +msgid "Open an issue" +msgstr "Apri un problema" msgid "Launch" msgstr "Lanciare" -msgid "Print to PDF" -msgstr "Stampa in PDF" +msgid "Fullscreen mode" +msgstr "Modalità schermo intero" + +msgid "Edit this page" +msgstr "Modifica questa pagina" msgid "By the" msgstr "Dal" -msgid "Last updated on" -msgstr "Ultimo aggiornamento il" - -msgid "Download source file" -msgstr "Scarica il file sorgente" - -msgid "Download this page" -msgstr "Scarica questa pagina" +msgid "next page" +msgstr "pagina successiva" diff --git a/_static/locales/iw/LC_MESSAGES/booktheme.po b/_static/locales/iw/LC_MESSAGES/booktheme.po index 4ea190d3..dede9cb0 100644 --- a/_static/locales/iw/LC_MESSAGES/booktheme.po +++ b/_static/locales/iw/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: iw\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "הדפס לקובץ PDF" + msgid "Theme by the" msgstr "נושא מאת" -msgid "Open an issue" -msgstr "פתח גיליון" +msgid "Download source file" +msgstr "הורד את קובץ המקור" + +msgid "open issue" +msgstr "בעיה פתוחה" msgid "Contents" msgstr "תוכן" +msgid "previous page" +msgstr "עמוד קודם" + msgid "Download notebook file" msgstr "הורד קובץ מחברת" -msgid "Sphinx Book Theme" -msgstr "נושא ספר ספינקס" - -msgid "Fullscreen mode" -msgstr "מצב מסך מלא" - -msgid "Edit this page" -msgstr "ערוך דף זה" - -msgid "By" -msgstr "על ידי" - msgid "Copyright" msgstr "זכויות יוצרים" +msgid "Download this page" +msgstr "הורד דף זה" + msgid "Source repository" msgstr "מאגר המקורות" -msgid "previous page" -msgstr "עמוד קודם" +msgid "By" +msgstr "על ידי" -msgid "next page" -msgstr "עמוד הבא" +msgid "repository" +msgstr "מאגר" + +msgid "Last updated on" +msgstr "עודכן לאחרונה ב" msgid "Toggle navigation" msgstr "החלף ניווט" -msgid "repository" -msgstr "מאגר" +msgid "Sphinx Book Theme" +msgstr "נושא ספר ספינקס" msgid "suggest edit" msgstr "מציע לערוך" -msgid "open issue" -msgstr "בעיה פתוחה" +msgid "Open an issue" +msgstr "פתח גיליון" msgid "Launch" msgstr "לְהַשִׁיק" -msgid "Print to PDF" -msgstr "הדפס לקובץ PDF" +msgid "Fullscreen mode" +msgstr "מצב מסך מלא" + +msgid "Edit this page" +msgstr "ערוך דף זה" msgid "By the" msgstr "דרך" -msgid "Last updated on" -msgstr "עודכן לאחרונה ב" - -msgid "Download source file" -msgstr "הורד את קובץ המקור" - -msgid "Download this page" -msgstr "הורד דף זה" +msgid "next page" +msgstr "עמוד הבא" diff --git a/_static/locales/ja/LC_MESSAGES/booktheme.po b/_static/locales/ja/LC_MESSAGES/booktheme.po index 77d5a097..2615f0d8 100644 --- a/_static/locales/ja/LC_MESSAGES/booktheme.po +++ b/_static/locales/ja/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: ja\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "PDFに印刷" + msgid "Theme by the" msgstr "のテーマ" -msgid "Open an issue" -msgstr "問題を報告" +msgid "Download source file" +msgstr "ソースファイルをダウンロード" + +msgid "open issue" +msgstr "未解決の問題" msgid "Contents" msgstr "目次" +msgid "previous page" +msgstr "前のページ" + msgid "Download notebook file" msgstr "ノートブックファイルをダウンロード" -msgid "Sphinx Book Theme" -msgstr "スフィンクスの本のテーマ" - -msgid "Fullscreen mode" -msgstr "全画面モード" - -msgid "Edit this page" -msgstr "このページを編集" - -msgid "By" -msgstr "著者" - msgid "Copyright" msgstr "Copyright" +msgid "Download this page" +msgstr "このページをダウンロード" + msgid "Source repository" msgstr "ソースリポジトリ" -msgid "previous page" -msgstr "前のページ" +msgid "By" +msgstr "著者" -msgid "next page" -msgstr "次のページ" +msgid "repository" +msgstr "リポジトリ" + +msgid "Last updated on" +msgstr "最終更新日" msgid "Toggle navigation" msgstr "ナビゲーションを切り替え" -msgid "repository" -msgstr "リポジトリ" +msgid "Sphinx Book Theme" +msgstr "スフィンクスの本のテーマ" msgid "suggest edit" msgstr "編集を提案する" -msgid "open issue" -msgstr "未解決の問題" +msgid "Open an issue" +msgstr "問題を報告" msgid "Launch" msgstr "起動" -msgid "Print to PDF" -msgstr "PDFに印刷" +msgid "Fullscreen mode" +msgstr "全画面モード" + +msgid "Edit this page" +msgstr "このページを編集" msgid "By the" msgstr "によって" -msgid "Last updated on" -msgstr "最終更新日" - -msgid "Download source file" -msgstr "ソースファイルをダウンロード" - -msgid "Download this page" -msgstr "このページをダウンロード" +msgid "next page" +msgstr "次のページ" diff --git a/_static/locales/ko/LC_MESSAGES/booktheme.po b/_static/locales/ko/LC_MESSAGES/booktheme.po index 6ee3d781..c9e13a42 100644 --- a/_static/locales/ko/LC_MESSAGES/booktheme.po +++ b/_static/locales/ko/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: ko\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "PDF로 인쇄" + msgid "Theme by the" msgstr "테마별" -msgid "Open an issue" -msgstr "이슈 열기" +msgid "Download source file" +msgstr "소스 파일 다운로드" + +msgid "open issue" +msgstr "열린 문제" msgid "Contents" msgstr "내용" +msgid "previous page" +msgstr "이전 페이지" + msgid "Download notebook file" msgstr "노트북 파일 다운로드" -msgid "Sphinx Book Theme" -msgstr "스핑크스 도서 테마" - -msgid "Fullscreen mode" -msgstr "전체 화면으로보기" - -msgid "Edit this page" -msgstr "이 페이지 편집" - -msgid "By" -msgstr "으로" - msgid "Copyright" msgstr "저작권" +msgid "Download this page" +msgstr "이 페이지 다운로드" + msgid "Source repository" msgstr "소스 저장소" -msgid "previous page" -msgstr "이전 페이지" +msgid "By" +msgstr "으로" -msgid "next page" -msgstr "다음 페이지" +msgid "repository" +msgstr "저장소" + +msgid "Last updated on" +msgstr "마지막 업데이트" msgid "Toggle navigation" msgstr "탐색 전환" -msgid "repository" -msgstr "저장소" +msgid "Sphinx Book Theme" +msgstr "스핑크스 도서 테마" msgid "suggest edit" msgstr "편집 제안" -msgid "open issue" -msgstr "열린 문제" +msgid "Open an issue" +msgstr "이슈 열기" msgid "Launch" msgstr "시작하다" -msgid "Print to PDF" -msgstr "PDF로 인쇄" +msgid "Fullscreen mode" +msgstr "전체 화면으로보기" + +msgid "Edit this page" +msgstr "이 페이지 편집" msgid "By the" msgstr "에 의해" -msgid "Last updated on" -msgstr "마지막 업데이트" - -msgid "Download source file" -msgstr "소스 파일 다운로드" - -msgid "Download this page" -msgstr "이 페이지 다운로드" +msgid "next page" +msgstr "다음 페이지" diff --git a/_static/locales/lt/LC_MESSAGES/booktheme.po b/_static/locales/lt/LC_MESSAGES/booktheme.po index 01be2679..35eabd95 100644 --- a/_static/locales/lt/LC_MESSAGES/booktheme.po +++ b/_static/locales/lt/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: lt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "Spausdinti į PDF" + msgid "Theme by the" msgstr "Tema" -msgid "Open an issue" -msgstr "Atidarykite problemą" +msgid "Download source file" +msgstr "Atsisiųsti šaltinio failą" + +msgid "open issue" +msgstr "atviras klausimas" msgid "Contents" msgstr "Turinys" +msgid "previous page" +msgstr "Ankstesnis puslapis" + msgid "Download notebook file" msgstr "Atsisiųsti nešiojamojo kompiuterio failą" -msgid "Sphinx Book Theme" -msgstr "Sfinkso knygos tema" - -msgid "Fullscreen mode" -msgstr "Pilno ekrano režimas" - -msgid "Edit this page" -msgstr "Redaguoti šį puslapį" - -msgid "By" -msgstr "Iki" - msgid "Copyright" msgstr "Autorių teisės" +msgid "Download this page" +msgstr "Atsisiųskite šį puslapį" + msgid "Source repository" msgstr "Šaltinio saugykla" -msgid "previous page" -msgstr "Ankstesnis puslapis" +msgid "By" +msgstr "Iki" -msgid "next page" -msgstr "Kitas puslapis" +msgid "repository" +msgstr "saugykla" + +msgid "Last updated on" +msgstr "Paskutinį kartą atnaujinta" msgid "Toggle navigation" msgstr "Perjungti naršymą" -msgid "repository" -msgstr "saugykla" +msgid "Sphinx Book Theme" +msgstr "Sfinkso knygos tema" msgid "suggest edit" msgstr "pasiūlyti redaguoti" -msgid "open issue" -msgstr "atviras klausimas" +msgid "Open an issue" +msgstr "Atidarykite problemą" msgid "Launch" msgstr "Paleiskite" -msgid "Print to PDF" -msgstr "Spausdinti į PDF" +msgid "Fullscreen mode" +msgstr "Pilno ekrano režimas" + +msgid "Edit this page" +msgstr "Redaguoti šį puslapį" msgid "By the" msgstr "Prie" -msgid "Last updated on" -msgstr "Paskutinį kartą atnaujinta" - -msgid "Download source file" -msgstr "Atsisiųsti šaltinio failą" - -msgid "Download this page" -msgstr "Atsisiųskite šį puslapį" +msgid "next page" +msgstr "Kitas puslapis" diff --git a/_static/locales/lv/LC_MESSAGES/booktheme.po b/_static/locales/lv/LC_MESSAGES/booktheme.po index 993a1e41..ee1bd08d 100644 --- a/_static/locales/lv/LC_MESSAGES/booktheme.po +++ b/_static/locales/lv/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: lv\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "Drukāt PDF formātā" + msgid "Theme by the" msgstr "Autora tēma" -msgid "Open an issue" -msgstr "Atveriet problēmu" +msgid "Download source file" +msgstr "Lejupielādēt avota failu" + +msgid "open issue" +msgstr "atklāts jautājums" msgid "Contents" msgstr "Saturs" +msgid "previous page" +msgstr "iepriekšējā lapa" + msgid "Download notebook file" msgstr "Lejupielādēt piezīmju grāmatiņu" -msgid "Sphinx Book Theme" -msgstr "Sfinksa grāmatas tēma" - -msgid "Fullscreen mode" -msgstr "Pilnekrāna režīms" - -msgid "Edit this page" -msgstr "Rediģēt šo lapu" - -msgid "By" -msgstr "Autors" - msgid "Copyright" msgstr "Autortiesības" +msgid "Download this page" +msgstr "Lejupielādējiet šo lapu" + msgid "Source repository" msgstr "Avota krātuve" -msgid "previous page" -msgstr "iepriekšējā lapa" +msgid "By" +msgstr "Autors" -msgid "next page" -msgstr "nākamā lapaspuse" +msgid "repository" +msgstr "krātuve" + +msgid "Last updated on" +msgstr "Pēdējoreiz atjaunināts" msgid "Toggle navigation" msgstr "Pārslēgt navigāciju" -msgid "repository" -msgstr "krātuve" +msgid "Sphinx Book Theme" +msgstr "Sfinksa grāmatas tēma" msgid "suggest edit" msgstr "ieteikt rediģēt" -msgid "open issue" -msgstr "atklāts jautājums" +msgid "Open an issue" +msgstr "Atveriet problēmu" msgid "Launch" msgstr "Uzsākt" -msgid "Print to PDF" -msgstr "Drukāt PDF formātā" +msgid "Fullscreen mode" +msgstr "Pilnekrāna režīms" + +msgid "Edit this page" +msgstr "Rediģēt šo lapu" msgid "By the" msgstr "Ar" -msgid "Last updated on" -msgstr "Pēdējoreiz atjaunināts" - -msgid "Download source file" -msgstr "Lejupielādēt avota failu" - -msgid "Download this page" -msgstr "Lejupielādējiet šo lapu" +msgid "next page" +msgstr "nākamā lapaspuse" diff --git a/_static/locales/ml/LC_MESSAGES/booktheme.po b/_static/locales/ml/LC_MESSAGES/booktheme.po index 81daf7c8..d471277d 100644 --- a/_static/locales/ml/LC_MESSAGES/booktheme.po +++ b/_static/locales/ml/LC_MESSAGES/booktheme.po @@ -8,59 +8,59 @@ msgstr "" "Language: ml\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "PDF- ലേക്ക് പ്രിന്റുചെയ്യുക" + msgid "Theme by the" msgstr "പ്രമേയം" -msgid "Open an issue" -msgstr "ഒരു പ്രശ്നം തുറക്കുക" - -msgid "Download notebook file" -msgstr "നോട്ട്ബുക്ക് ഫയൽ ഡൺലോഡ് ചെയ്യുക" +msgid "Download source file" +msgstr "ഉറവിട ഫയൽ ഡൗൺലോഡുചെയ്യുക" -msgid "Sphinx Book Theme" -msgstr "സ്ഫിങ്ക്സ് പുസ്തക തീം" +msgid "open issue" +msgstr "തുറന്ന പ്രശ്നം" -msgid "Edit this page" -msgstr "ഈ പേജ് എഡിറ്റുചെയ്യുക" +msgid "previous page" +msgstr "മുൻപത്തെ താൾ" -msgid "By" -msgstr "എഴുതിയത്" +msgid "Download notebook file" +msgstr "നോട്ട്ബുക്ക് ഫയൽ ഡൺലോഡ് ചെയ്യുക" msgid "Copyright" msgstr "പകർപ്പവകാശം" +msgid "Download this page" +msgstr "ഈ പേജ് ഡൗൺലോഡുചെയ്യുക" + msgid "Source repository" msgstr "ഉറവിട ശേഖരം" -msgid "previous page" -msgstr "മുൻപത്തെ താൾ" +msgid "By" +msgstr "എഴുതിയത്" -msgid "next page" -msgstr "അടുത്ത പേജ്" +msgid "Last updated on" +msgstr "അവസാനം അപ്‌ഡേറ്റുചെയ്‌തത്" msgid "Toggle navigation" msgstr "നാവിഗേഷൻ ടോഗിൾ ചെയ്യുക" +msgid "Sphinx Book Theme" +msgstr "സ്ഫിങ്ക്സ് പുസ്തക തീം" + msgid "suggest edit" msgstr "എഡിറ്റുചെയ്യാൻ നിർദ്ദേശിക്കുക" -msgid "open issue" -msgstr "തുറന്ന പ്രശ്നം" +msgid "Open an issue" +msgstr "ഒരു പ്രശ്നം തുറക്കുക" msgid "Launch" msgstr "സമാരംഭിക്കുക" -msgid "Print to PDF" -msgstr "PDF- ലേക്ക് പ്രിന്റുചെയ്യുക" +msgid "Edit this page" +msgstr "ഈ പേജ് എഡിറ്റുചെയ്യുക" msgid "By the" msgstr "എഴുതിയത്" -msgid "Last updated on" -msgstr "അവസാനം അപ്‌ഡേറ്റുചെയ്‌തത്" - -msgid "Download source file" -msgstr "ഉറവിട ഫയൽ ഡൗൺലോഡുചെയ്യുക" - -msgid "Download this page" -msgstr "ഈ പേജ് ഡൗൺലോഡുചെയ്യുക" +msgid "next page" +msgstr "അടുത്ത പേജ്" diff --git a/_static/locales/mr/LC_MESSAGES/booktheme.po b/_static/locales/mr/LC_MESSAGES/booktheme.po index fd857bff..f3694acf 100644 --- a/_static/locales/mr/LC_MESSAGES/booktheme.po +++ b/_static/locales/mr/LC_MESSAGES/booktheme.po @@ -8,59 +8,59 @@ msgstr "" "Language: mr\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "पीडीएफवर मुद्रित करा" + msgid "Theme by the" msgstr "द्वारा थीम" -msgid "Open an issue" -msgstr "एक मुद्दा उघडा" - -msgid "Download notebook file" -msgstr "नोटबुक फाईल डाउनलोड करा" +msgid "Download source file" +msgstr "स्त्रोत फाइल डाउनलोड करा" -msgid "Sphinx Book Theme" -msgstr "स्फिंक्स बुक थीम" +msgid "open issue" +msgstr "खुला मुद्दा" -msgid "Edit this page" -msgstr "हे पृष्ठ संपादित करा" +msgid "previous page" +msgstr "मागील पान" -msgid "By" -msgstr "द्वारा" +msgid "Download notebook file" +msgstr "नोटबुक फाईल डाउनलोड करा" msgid "Copyright" msgstr "कॉपीराइट" +msgid "Download this page" +msgstr "हे पृष्ठ डाउनलोड करा" + msgid "Source repository" msgstr "स्त्रोत भांडार" -msgid "previous page" -msgstr "मागील पान" +msgid "By" +msgstr "द्वारा" -msgid "next page" -msgstr "पुढील पृष्ठ" +msgid "Last updated on" +msgstr "अखेरचे अद्यतनित" msgid "Toggle navigation" msgstr "नेव्हिगेशन टॉगल करा" +msgid "Sphinx Book Theme" +msgstr "स्फिंक्स बुक थीम" + msgid "suggest edit" msgstr "संपादन सुचवा" -msgid "open issue" -msgstr "खुला मुद्दा" +msgid "Open an issue" +msgstr "एक मुद्दा उघडा" msgid "Launch" msgstr "लाँच करा" -msgid "Print to PDF" -msgstr "पीडीएफवर मुद्रित करा" +msgid "Edit this page" +msgstr "हे पृष्ठ संपादित करा" msgid "By the" msgstr "द्वारा" -msgid "Last updated on" -msgstr "अखेरचे अद्यतनित" - -msgid "Download source file" -msgstr "स्त्रोत फाइल डाउनलोड करा" - -msgid "Download this page" -msgstr "हे पृष्ठ डाउनलोड करा" +msgid "next page" +msgstr "पुढील पृष्ठ" diff --git a/_static/locales/ms/LC_MESSAGES/booktheme.po b/_static/locales/ms/LC_MESSAGES/booktheme.po index b616d70f..65b7c602 100644 --- a/_static/locales/ms/LC_MESSAGES/booktheme.po +++ b/_static/locales/ms/LC_MESSAGES/booktheme.po @@ -8,59 +8,59 @@ msgstr "" "Language: ms\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "Cetak ke PDF" + msgid "Theme by the" msgstr "Tema oleh" -msgid "Open an issue" -msgstr "Buka masalah" - -msgid "Download notebook file" -msgstr "Muat turun fail buku nota" +msgid "Download source file" +msgstr "Muat turun fail sumber" -msgid "Sphinx Book Theme" -msgstr "Tema Buku Sphinx" +msgid "open issue" +msgstr "isu terbuka" -msgid "Edit this page" -msgstr "Edit halaman ini" +msgid "previous page" +msgstr "halaman sebelumnya" -msgid "By" -msgstr "Oleh" +msgid "Download notebook file" +msgstr "Muat turun fail buku nota" msgid "Copyright" msgstr "hak cipta" +msgid "Download this page" +msgstr "Muat turun halaman ini" + msgid "Source repository" msgstr "Repositori sumber" -msgid "previous page" -msgstr "halaman sebelumnya" +msgid "By" +msgstr "Oleh" -msgid "next page" -msgstr "muka surat seterusnya" +msgid "Last updated on" +msgstr "Terakhir dikemas kini pada" msgid "Toggle navigation" msgstr "Togol navigasi" +msgid "Sphinx Book Theme" +msgstr "Tema Buku Sphinx" + msgid "suggest edit" msgstr "cadangkan edit" -msgid "open issue" -msgstr "isu terbuka" +msgid "Open an issue" +msgstr "Buka masalah" msgid "Launch" msgstr "Lancarkan" -msgid "Print to PDF" -msgstr "Cetak ke PDF" +msgid "Edit this page" +msgstr "Edit halaman ini" msgid "By the" msgstr "Oleh" -msgid "Last updated on" -msgstr "Terakhir dikemas kini pada" - -msgid "Download source file" -msgstr "Muat turun fail sumber" - -msgid "Download this page" -msgstr "Muat turun halaman ini" +msgid "next page" +msgstr "muka surat seterusnya" diff --git a/_static/locales/nl/LC_MESSAGES/booktheme.po b/_static/locales/nl/LC_MESSAGES/booktheme.po index f16f4bcc..71bd1cda 100644 --- a/_static/locales/nl/LC_MESSAGES/booktheme.po +++ b/_static/locales/nl/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "Afdrukken naar pdf" + msgid "Theme by the" msgstr "Thema door de" -msgid "Open an issue" -msgstr "Open een probleem" +msgid "Download source file" +msgstr "Download het bronbestand" + +msgid "open issue" +msgstr "open probleem" msgid "Contents" msgstr "Inhoud" +msgid "previous page" +msgstr "vorige pagina" + msgid "Download notebook file" msgstr "Download notebookbestand" -msgid "Sphinx Book Theme" -msgstr "Sphinx-boekthema" - -msgid "Fullscreen mode" -msgstr "Volledig scherm" - -msgid "Edit this page" -msgstr "bewerk deze pagina" - -msgid "By" -msgstr "Door" - msgid "Copyright" msgstr "auteursrechten" +msgid "Download this page" +msgstr "Download deze pagina" + msgid "Source repository" msgstr "Bronopslagplaats" -msgid "previous page" -msgstr "vorige pagina" +msgid "By" +msgstr "Door" -msgid "next page" -msgstr "volgende bladzijde" +msgid "repository" +msgstr "repository" + +msgid "Last updated on" +msgstr "Laatst geupdate op" msgid "Toggle navigation" msgstr "Schakel navigatie" -msgid "repository" -msgstr "repository" +msgid "Sphinx Book Theme" +msgstr "Sphinx-boekthema" msgid "suggest edit" msgstr "suggereren bewerken" -msgid "open issue" -msgstr "open probleem" +msgid "Open an issue" +msgstr "Open een probleem" msgid "Launch" msgstr "Lancering" -msgid "Print to PDF" -msgstr "Afdrukken naar pdf" +msgid "Fullscreen mode" +msgstr "Volledig scherm" + +msgid "Edit this page" +msgstr "bewerk deze pagina" msgid "By the" msgstr "Door de" -msgid "Last updated on" -msgstr "Laatst geupdate op" - -msgid "Download source file" -msgstr "Download het bronbestand" - -msgid "Download this page" -msgstr "Download deze pagina" +msgid "next page" +msgstr "volgende bladzijde" diff --git a/_static/locales/no/LC_MESSAGES/booktheme.po b/_static/locales/no/LC_MESSAGES/booktheme.po index b1d304ee..b21346a5 100644 --- a/_static/locales/no/LC_MESSAGES/booktheme.po +++ b/_static/locales/no/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: no\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "Skriv ut til PDF" + msgid "Theme by the" msgstr "Tema av" -msgid "Open an issue" -msgstr "Åpne et problem" +msgid "Download source file" +msgstr "Last ned kildefilen" + +msgid "open issue" +msgstr "åpent nummer" msgid "Contents" msgstr "Innhold" +msgid "previous page" +msgstr "forrige side" + msgid "Download notebook file" msgstr "Last ned notatbokfilen" -msgid "Sphinx Book Theme" -msgstr "Sphinx boktema" - -msgid "Fullscreen mode" -msgstr "Fullskjerm-modus" - -msgid "Edit this page" -msgstr "Rediger denne siden" - -msgid "By" -msgstr "Av" - msgid "Copyright" msgstr "opphavsrett" +msgid "Download this page" +msgstr "Last ned denne siden" + msgid "Source repository" msgstr "Kildedepot" -msgid "previous page" -msgstr "forrige side" +msgid "By" +msgstr "Av" -msgid "next page" -msgstr "neste side" +msgid "repository" +msgstr "oppbevaringssted" + +msgid "Last updated on" +msgstr "Sist oppdatert den" msgid "Toggle navigation" msgstr "Bytt navigasjon" -msgid "repository" -msgstr "oppbevaringssted" +msgid "Sphinx Book Theme" +msgstr "Sphinx boktema" msgid "suggest edit" msgstr "foreslå redigering" -msgid "open issue" -msgstr "åpent nummer" +msgid "Open an issue" +msgstr "Åpne et problem" msgid "Launch" msgstr "Start" -msgid "Print to PDF" -msgstr "Skriv ut til PDF" +msgid "Fullscreen mode" +msgstr "Fullskjerm-modus" + +msgid "Edit this page" +msgstr "Rediger denne siden" msgid "By the" msgstr "Ved" -msgid "Last updated on" -msgstr "Sist oppdatert den" - -msgid "Download source file" -msgstr "Last ned kildefilen" - -msgid "Download this page" -msgstr "Last ned denne siden" +msgid "next page" +msgstr "neste side" diff --git a/_static/locales/pl/LC_MESSAGES/booktheme.po b/_static/locales/pl/LC_MESSAGES/booktheme.po index 80d2c896..1b7233f4 100644 --- a/_static/locales/pl/LC_MESSAGES/booktheme.po +++ b/_static/locales/pl/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: pl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "Drukuj do PDF" + msgid "Theme by the" msgstr "Motyw autorstwa" -msgid "Open an issue" -msgstr "Otwórz problem" +msgid "Download source file" +msgstr "Pobierz plik źródłowy" + +msgid "open issue" +msgstr "otwarty problem" msgid "Contents" msgstr "Zawartość" +msgid "previous page" +msgstr "Poprzednia strona" + msgid "Download notebook file" msgstr "Pobierz plik notatnika" -msgid "Sphinx Book Theme" -msgstr "Motyw książki Sphinx" - -msgid "Fullscreen mode" -msgstr "Pełny ekran" - -msgid "Edit this page" -msgstr "Edytuj tę strone" - -msgid "By" -msgstr "Przez" - msgid "Copyright" msgstr "prawa autorskie" +msgid "Download this page" +msgstr "Pobierz tę stronę" + msgid "Source repository" msgstr "Repozytorium źródłowe" -msgid "previous page" -msgstr "Poprzednia strona" +msgid "By" +msgstr "Przez" -msgid "next page" -msgstr "Następna strona" +msgid "repository" +msgstr "magazyn" + +msgid "Last updated on" +msgstr "Ostatnia aktualizacja" msgid "Toggle navigation" msgstr "Przełącz nawigację" -msgid "repository" -msgstr "magazyn" +msgid "Sphinx Book Theme" +msgstr "Motyw książki Sphinx" msgid "suggest edit" msgstr "zaproponuj edycję" -msgid "open issue" -msgstr "otwarty problem" +msgid "Open an issue" +msgstr "Otwórz problem" msgid "Launch" msgstr "Uruchomić" -msgid "Print to PDF" -msgstr "Drukuj do PDF" +msgid "Fullscreen mode" +msgstr "Pełny ekran" + +msgid "Edit this page" +msgstr "Edytuj tę strone" msgid "By the" msgstr "Przez" -msgid "Last updated on" -msgstr "Ostatnia aktualizacja" - -msgid "Download source file" -msgstr "Pobierz plik źródłowy" - -msgid "Download this page" -msgstr "Pobierz tę stronę" +msgid "next page" +msgstr "Następna strona" diff --git a/_static/locales/pt/LC_MESSAGES/booktheme.po b/_static/locales/pt/LC_MESSAGES/booktheme.po index 45ac847f..1b27314d 100644 --- a/_static/locales/pt/LC_MESSAGES/booktheme.po +++ b/_static/locales/pt/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "Imprimir em PDF" + msgid "Theme by the" msgstr "Tema por" -msgid "Open an issue" -msgstr "Abra um problema" +msgid "Download source file" +msgstr "Baixar arquivo fonte" + +msgid "open issue" +msgstr "questão aberta" msgid "Contents" msgstr "Conteúdo" +msgid "previous page" +msgstr "página anterior" + msgid "Download notebook file" msgstr "Baixar arquivo de notebook" -msgid "Sphinx Book Theme" -msgstr "Tema do livro Sphinx" - -msgid "Fullscreen mode" -msgstr "Modo tela cheia" - -msgid "Edit this page" -msgstr "Edite essa página" - -msgid "By" -msgstr "De" - msgid "Copyright" msgstr "direito autoral" +msgid "Download this page" +msgstr "Baixe esta página" + msgid "Source repository" msgstr "Repositório fonte" -msgid "previous page" -msgstr "página anterior" +msgid "By" +msgstr "De" -msgid "next page" -msgstr "próxima página" +msgid "repository" +msgstr "repositório" + +msgid "Last updated on" +msgstr "Última atualização em" msgid "Toggle navigation" msgstr "Alternar de navegação" -msgid "repository" -msgstr "repositório" +msgid "Sphinx Book Theme" +msgstr "Tema do livro Sphinx" msgid "suggest edit" msgstr "sugerir edição" -msgid "open issue" -msgstr "questão aberta" +msgid "Open an issue" +msgstr "Abra um problema" msgid "Launch" msgstr "Lançamento" -msgid "Print to PDF" -msgstr "Imprimir em PDF" +msgid "Fullscreen mode" +msgstr "Modo tela cheia" + +msgid "Edit this page" +msgstr "Edite essa página" msgid "By the" msgstr "Pelo" -msgid "Last updated on" -msgstr "Última atualização em" - -msgid "Download source file" -msgstr "Baixar arquivo fonte" - -msgid "Download this page" -msgstr "Baixe esta página" +msgid "next page" +msgstr "próxima página" diff --git a/_static/locales/ro/LC_MESSAGES/booktheme.po b/_static/locales/ro/LC_MESSAGES/booktheme.po index 532b3b84..1783ad2c 100644 --- a/_static/locales/ro/LC_MESSAGES/booktheme.po +++ b/_static/locales/ro/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: ro\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "Imprimați în PDF" + msgid "Theme by the" msgstr "Tema de" -msgid "Open an issue" -msgstr "Deschideți o problemă" +msgid "Download source file" +msgstr "Descărcați fișierul sursă" + +msgid "open issue" +msgstr "problema deschisă" msgid "Contents" msgstr "Cuprins" +msgid "previous page" +msgstr "pagina anterioară" + msgid "Download notebook file" msgstr "Descărcați fișierul notebook" -msgid "Sphinx Book Theme" -msgstr "Tema Sphinx Book" - -msgid "Fullscreen mode" -msgstr "Modul ecran întreg" - -msgid "Edit this page" -msgstr "Editați această pagină" - -msgid "By" -msgstr "De" - msgid "Copyright" msgstr "Drepturi de autor" +msgid "Download this page" +msgstr "Descarcă această pagină" + msgid "Source repository" msgstr "Depozit sursă" -msgid "previous page" -msgstr "pagina anterioară" +msgid "By" +msgstr "De" -msgid "next page" -msgstr "pagina următoare" +msgid "repository" +msgstr "repertoriu" + +msgid "Last updated on" +msgstr "Ultima actualizare la" msgid "Toggle navigation" msgstr "Comutare navigare" -msgid "repository" -msgstr "repertoriu" +msgid "Sphinx Book Theme" +msgstr "Tema Sphinx Book" msgid "suggest edit" msgstr "sugerează editare" -msgid "open issue" -msgstr "problema deschisă" +msgid "Open an issue" +msgstr "Deschideți o problemă" msgid "Launch" msgstr "Lansa" -msgid "Print to PDF" -msgstr "Imprimați în PDF" +msgid "Fullscreen mode" +msgstr "Modul ecran întreg" + +msgid "Edit this page" +msgstr "Editați această pagină" msgid "By the" msgstr "Langa" -msgid "Last updated on" -msgstr "Ultima actualizare la" - -msgid "Download source file" -msgstr "Descărcați fișierul sursă" - -msgid "Download this page" -msgstr "Descarcă această pagină" +msgid "next page" +msgstr "pagina următoare" diff --git a/_static/locales/ru/LC_MESSAGES/booktheme.po b/_static/locales/ru/LC_MESSAGES/booktheme.po index b718b482..b1176b7a 100644 --- a/_static/locales/ru/LC_MESSAGES/booktheme.po +++ b/_static/locales/ru/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: ru\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "Распечатать в PDF" + msgid "Theme by the" msgstr "Тема от" -msgid "Open an issue" -msgstr "Открыть вопрос" +msgid "Download source file" +msgstr "Скачать исходный файл" + +msgid "open issue" +msgstr "открытый вопрос" msgid "Contents" msgstr "Содержание" +msgid "previous page" +msgstr "Предыдущая страница" + msgid "Download notebook file" msgstr "Скачать файл записной книжки" -msgid "Sphinx Book Theme" -msgstr "Тема книги Сфинкс" - -msgid "Fullscreen mode" -msgstr "Полноэкранный режим" - -msgid "Edit this page" -msgstr "Редактировать эту страницу" - -msgid "By" -msgstr "По" - msgid "Copyright" msgstr "авторское право" +msgid "Download this page" +msgstr "Загрузите эту страницу" + msgid "Source repository" msgstr "Исходный репозиторий" -msgid "previous page" -msgstr "Предыдущая страница" +msgid "By" +msgstr "По" -msgid "next page" -msgstr "Следующая страница" +msgid "repository" +msgstr "хранилище" + +msgid "Last updated on" +msgstr "Последнее обновление" msgid "Toggle navigation" msgstr "Переключить навигацию" -msgid "repository" -msgstr "хранилище" +msgid "Sphinx Book Theme" +msgstr "Тема книги Сфинкс" msgid "suggest edit" msgstr "предложить редактировать" -msgid "open issue" -msgstr "открытый вопрос" +msgid "Open an issue" +msgstr "Открыть вопрос" msgid "Launch" msgstr "Запуск" -msgid "Print to PDF" -msgstr "Распечатать в PDF" +msgid "Fullscreen mode" +msgstr "Полноэкранный режим" + +msgid "Edit this page" +msgstr "Редактировать эту страницу" msgid "By the" msgstr "Посредством" -msgid "Last updated on" -msgstr "Последнее обновление" - -msgid "Download source file" -msgstr "Скачать исходный файл" - -msgid "Download this page" -msgstr "Загрузите эту страницу" +msgid "next page" +msgstr "Следующая страница" diff --git a/_static/locales/sk/LC_MESSAGES/booktheme.po b/_static/locales/sk/LC_MESSAGES/booktheme.po index f6c423b6..65012881 100644 --- a/_static/locales/sk/LC_MESSAGES/booktheme.po +++ b/_static/locales/sk/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: sk\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "Tlač do PDF" + msgid "Theme by the" msgstr "Téma od" -msgid "Open an issue" -msgstr "Otvorte problém" +msgid "Download source file" +msgstr "Stiahnite si zdrojový súbor" + +msgid "open issue" +msgstr "otvorené vydanie" msgid "Contents" msgstr "Obsah" +msgid "previous page" +msgstr "predchádzajúca strana" + msgid "Download notebook file" msgstr "Stiahnite si zošit" -msgid "Sphinx Book Theme" -msgstr "Téma knihy Sfinga" - -msgid "Fullscreen mode" -msgstr "Režim celej obrazovky" - -msgid "Edit this page" -msgstr "Upraviť túto stránku" - -msgid "By" -msgstr "Autor:" - msgid "Copyright" msgstr "Autorské práva" +msgid "Download this page" +msgstr "Stiahnite si túto stránku" + msgid "Source repository" msgstr "Zdrojové úložisko" -msgid "previous page" -msgstr "predchádzajúca strana" +msgid "By" +msgstr "Autor:" -msgid "next page" -msgstr "ďalšia strana" +msgid "repository" +msgstr "Úložisko" + +msgid "Last updated on" +msgstr "Posledná aktualizácia dňa" msgid "Toggle navigation" msgstr "Prepnúť navigáciu" -msgid "repository" -msgstr "Úložisko" +msgid "Sphinx Book Theme" +msgstr "Téma knihy Sfinga" msgid "suggest edit" msgstr "navrhnúť úpravu" -msgid "open issue" -msgstr "otvorené vydanie" +msgid "Open an issue" +msgstr "Otvorte problém" msgid "Launch" msgstr "Spustiť" -msgid "Print to PDF" -msgstr "Tlač do PDF" +msgid "Fullscreen mode" +msgstr "Režim celej obrazovky" + +msgid "Edit this page" +msgstr "Upraviť túto stránku" msgid "By the" msgstr "Podľa" -msgid "Last updated on" -msgstr "Posledná aktualizácia dňa" - -msgid "Download source file" -msgstr "Stiahnite si zdrojový súbor" - -msgid "Download this page" -msgstr "Stiahnite si túto stránku" +msgid "next page" +msgstr "ďalšia strana" diff --git a/_static/locales/sl/LC_MESSAGES/booktheme.po b/_static/locales/sl/LC_MESSAGES/booktheme.po index 9822dc58..3c7e3a86 100644 --- a/_static/locales/sl/LC_MESSAGES/booktheme.po +++ b/_static/locales/sl/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: sl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "Natisni v PDF" + msgid "Theme by the" msgstr "Tema avtorja" -msgid "Open an issue" -msgstr "Odprite številko" +msgid "Download source file" +msgstr "Prenesite izvorno datoteko" + +msgid "open issue" +msgstr "odprto vprašanje" msgid "Contents" msgstr "Vsebina" +msgid "previous page" +msgstr "Prejšnja stran" + msgid "Download notebook file" msgstr "Prenesite datoteko zvezka" -msgid "Sphinx Book Theme" -msgstr "Tema knjige Sphinx" - -msgid "Fullscreen mode" -msgstr "Celozaslonski način" - -msgid "Edit this page" -msgstr "Uredite to stran" - -msgid "By" -msgstr "Avtor" - msgid "Copyright" msgstr "avtorske pravice" +msgid "Download this page" +msgstr "Prenesite to stran" + msgid "Source repository" msgstr "Izvorno skladišče" -msgid "previous page" -msgstr "Prejšnja stran" +msgid "By" +msgstr "Avtor" -msgid "next page" -msgstr "Naslednja stran" +msgid "repository" +msgstr "odlagališče" + +msgid "Last updated on" +msgstr "Nazadnje posodobljeno dne" msgid "Toggle navigation" msgstr "Preklopi navigacijo" -msgid "repository" -msgstr "odlagališče" +msgid "Sphinx Book Theme" +msgstr "Tema knjige Sphinx" msgid "suggest edit" msgstr "predlagajte urejanje" -msgid "open issue" -msgstr "odprto vprašanje" +msgid "Open an issue" +msgstr "Odprite številko" msgid "Launch" msgstr "Kosilo" -msgid "Print to PDF" -msgstr "Natisni v PDF" +msgid "Fullscreen mode" +msgstr "Celozaslonski način" + +msgid "Edit this page" +msgstr "Uredite to stran" msgid "By the" msgstr "Avtor" -msgid "Last updated on" -msgstr "Nazadnje posodobljeno dne" - -msgid "Download source file" -msgstr "Prenesite izvorno datoteko" - -msgid "Download this page" -msgstr "Prenesite to stran" +msgid "next page" +msgstr "Naslednja stran" diff --git a/_static/locales/sr/LC_MESSAGES/booktheme.po b/_static/locales/sr/LC_MESSAGES/booktheme.po index e809230c..773b8ada 100644 --- a/_static/locales/sr/LC_MESSAGES/booktheme.po +++ b/_static/locales/sr/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: sr\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "Испис у ПДФ" + msgid "Theme by the" msgstr "Тхеме би" -msgid "Open an issue" -msgstr "Отворите издање" +msgid "Download source file" +msgstr "Преузми изворну датотеку" + +msgid "open issue" +msgstr "отворено издање" msgid "Contents" msgstr "Садржај" +msgid "previous page" +msgstr "Претходна страница" + msgid "Download notebook file" msgstr "Преузмите датотеку бележнице" -msgid "Sphinx Book Theme" -msgstr "Тема књиге Спхинк" - -msgid "Fullscreen mode" -msgstr "Режим целог екрана" - -msgid "Edit this page" -msgstr "Уредите ову страницу" - -msgid "By" -msgstr "Од стране" - msgid "Copyright" msgstr "Ауторско право" +msgid "Download this page" +msgstr "Преузмите ову страницу" + msgid "Source repository" msgstr "Изворно спремиште" -msgid "previous page" -msgstr "Претходна страница" +msgid "By" +msgstr "Од стране" -msgid "next page" -msgstr "Следећа страна" +msgid "repository" +msgstr "спремиште" + +msgid "Last updated on" +msgstr "Последње ажурирање" msgid "Toggle navigation" msgstr "Укључи / искључи навигацију" -msgid "repository" -msgstr "спремиште" +msgid "Sphinx Book Theme" +msgstr "Тема књиге Спхинк" msgid "suggest edit" msgstr "предложи уређивање" -msgid "open issue" -msgstr "отворено издање" +msgid "Open an issue" +msgstr "Отворите издање" msgid "Launch" msgstr "Лансирање" -msgid "Print to PDF" -msgstr "Испис у ПДФ" +msgid "Fullscreen mode" +msgstr "Режим целог екрана" + +msgid "Edit this page" +msgstr "Уредите ову страницу" msgid "By the" msgstr "Од" -msgid "Last updated on" -msgstr "Последње ажурирање" - -msgid "Download source file" -msgstr "Преузми изворну датотеку" - -msgid "Download this page" -msgstr "Преузмите ову страницу" +msgid "next page" +msgstr "Следећа страна" diff --git a/_static/locales/sv/LC_MESSAGES/booktheme.po b/_static/locales/sv/LC_MESSAGES/booktheme.po index 2421b001..bcac54c0 100644 --- a/_static/locales/sv/LC_MESSAGES/booktheme.po +++ b/_static/locales/sv/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: sv\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "Skriv ut till PDF" + msgid "Theme by the" msgstr "Tema av" -msgid "Open an issue" -msgstr "Öppna en problemrapport" +msgid "Download source file" +msgstr "Ladda ner källfil" + +msgid "open issue" +msgstr "öppna problemrapport" msgid "Contents" msgstr "Innehåll" +msgid "previous page" +msgstr "föregående sida" + msgid "Download notebook file" msgstr "Ladda ner notebook-fil" -msgid "Sphinx Book Theme" -msgstr "Sphinx Boktema" - -msgid "Fullscreen mode" -msgstr "Fullskärmsläge" - -msgid "Edit this page" -msgstr "Redigera den här sidan" - -msgid "By" -msgstr "Av" - msgid "Copyright" msgstr "Upphovsrätt" +msgid "Download this page" +msgstr "Ladda ner den här sidan" + msgid "Source repository" msgstr "Källkodsrepositorium" -msgid "previous page" -msgstr "föregående sida" +msgid "By" +msgstr "Av" -msgid "next page" -msgstr "nästa sida" +msgid "repository" +msgstr "repositorium" + +msgid "Last updated on" +msgstr "Senast uppdaterad den" msgid "Toggle navigation" msgstr "Växla navigering" -msgid "repository" -msgstr "repositorium" +msgid "Sphinx Book Theme" +msgstr "Sphinx Boktema" msgid "suggest edit" msgstr "föreslå ändring" -msgid "open issue" -msgstr "öppna problemrapport" +msgid "Open an issue" +msgstr "Öppna en problemrapport" msgid "Launch" msgstr "Öppna" -msgid "Print to PDF" -msgstr "Skriv ut till PDF" +msgid "Fullscreen mode" +msgstr "Fullskärmsläge" + +msgid "Edit this page" +msgstr "Redigera den här sidan" msgid "By the" msgstr "Av den" -msgid "Last updated on" -msgstr "Senast uppdaterad den" - -msgid "Download source file" -msgstr "Ladda ner källfil" - -msgid "Download this page" -msgstr "Ladda ner den här sidan" +msgid "next page" +msgstr "nästa sida" diff --git a/_static/locales/ta/LC_MESSAGES/booktheme.po b/_static/locales/ta/LC_MESSAGES/booktheme.po index 500042f4..b48bdfaf 100644 --- a/_static/locales/ta/LC_MESSAGES/booktheme.po +++ b/_static/locales/ta/LC_MESSAGES/booktheme.po @@ -8,59 +8,59 @@ msgstr "" "Language: ta\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "PDF இல் அச்சிடுக" + msgid "Theme by the" msgstr "வழங்கிய தீம்" -msgid "Open an issue" -msgstr "சிக்கலைத் திறக்கவும்" - -msgid "Download notebook file" -msgstr "நோட்புக் கோப்பைப் பதிவிறக்கவும்" +msgid "Download source file" +msgstr "மூல கோப்பைப் பதிவிறக்குக" -msgid "Sphinx Book Theme" -msgstr "ஸ்பிங்க்ஸ் புத்தக தீம்" +msgid "open issue" +msgstr "திறந்த பிரச்சினை" -msgid "Edit this page" -msgstr "இந்தப் பக்கத்தைத் திருத்தவும்" +msgid "previous page" +msgstr "முந்தைய பக்கம்" -msgid "By" -msgstr "வழங்கியவர்" +msgid "Download notebook file" +msgstr "நோட்புக் கோப்பைப் பதிவிறக்கவும்" msgid "Copyright" msgstr "பதிப்புரிமை" +msgid "Download this page" +msgstr "இந்தப் பக்கத்தைப் பதிவிறக்கவும்" + msgid "Source repository" msgstr "மூல களஞ்சியம்" -msgid "previous page" -msgstr "முந்தைய பக்கம்" +msgid "By" +msgstr "வழங்கியவர்" -msgid "next page" -msgstr "அடுத்த பக்கம்" +msgid "Last updated on" +msgstr "கடைசியாக புதுப்பிக்கப்பட்டது" msgid "Toggle navigation" msgstr "வழிசெலுத்தலை நிலைமாற்று" +msgid "Sphinx Book Theme" +msgstr "ஸ்பிங்க்ஸ் புத்தக தீம்" + msgid "suggest edit" msgstr "திருத்த பரிந்துரைக்கவும்" -msgid "open issue" -msgstr "திறந்த பிரச்சினை" +msgid "Open an issue" +msgstr "சிக்கலைத் திறக்கவும்" msgid "Launch" msgstr "தொடங்க" -msgid "Print to PDF" -msgstr "PDF இல் அச்சிடுக" +msgid "Edit this page" +msgstr "இந்தப் பக்கத்தைத் திருத்தவும்" msgid "By the" msgstr "மூலம்" -msgid "Last updated on" -msgstr "கடைசியாக புதுப்பிக்கப்பட்டது" - -msgid "Download source file" -msgstr "மூல கோப்பைப் பதிவிறக்குக" - -msgid "Download this page" -msgstr "இந்தப் பக்கத்தைப் பதிவிறக்கவும்" +msgid "next page" +msgstr "அடுத்த பக்கம்" diff --git a/_static/locales/te/LC_MESSAGES/booktheme.po b/_static/locales/te/LC_MESSAGES/booktheme.po index b1afebba..952278f5 100644 --- a/_static/locales/te/LC_MESSAGES/booktheme.po +++ b/_static/locales/te/LC_MESSAGES/booktheme.po @@ -8,59 +8,59 @@ msgstr "" "Language: te\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "PDF కి ముద్రించండి" + msgid "Theme by the" msgstr "ద్వారా థీమ్" -msgid "Open an issue" -msgstr "సమస్యను తెరవండి" - -msgid "Download notebook file" -msgstr "నోట్బుక్ ఫైల్ను డౌన్లోడ్ చేయండి" +msgid "Download source file" +msgstr "మూల ఫైల్‌ను డౌన్‌లోడ్ చేయండి" -msgid "Sphinx Book Theme" -msgstr "సింహిక పుస్తక థీమ్" +msgid "open issue" +msgstr "ఓపెన్ ఇష్యూ" -msgid "Edit this page" -msgstr "ఈ పేజీని సవరించండి" +msgid "previous page" +msgstr "ముందు పేజి" -msgid "By" -msgstr "ద్వారా" +msgid "Download notebook file" +msgstr "నోట్బుక్ ఫైల్ను డౌన్లోడ్ చేయండి" msgid "Copyright" msgstr "కాపీరైట్" +msgid "Download this page" +msgstr "ఈ పేజీని డౌన్‌లోడ్ చేయండి" + msgid "Source repository" msgstr "మూల రిపోజిటరీ" -msgid "previous page" -msgstr "ముందు పేజి" +msgid "By" +msgstr "ద్వారా" -msgid "next page" -msgstr "తరువాతి పేజీ" +msgid "Last updated on" +msgstr "చివరిగా నవీకరించబడింది" msgid "Toggle navigation" msgstr "నావిగేషన్‌ను టోగుల్ చేయండి" +msgid "Sphinx Book Theme" +msgstr "సింహిక పుస్తక థీమ్" + msgid "suggest edit" msgstr "సవరించమని సూచించండి" -msgid "open issue" -msgstr "ఓపెన్ ఇష్యూ" +msgid "Open an issue" +msgstr "సమస్యను తెరవండి" msgid "Launch" msgstr "ప్రారంభించండి" -msgid "Print to PDF" -msgstr "PDF కి ముద్రించండి" +msgid "Edit this page" +msgstr "ఈ పేజీని సవరించండి" msgid "By the" msgstr "ద్వారా" -msgid "Last updated on" -msgstr "చివరిగా నవీకరించబడింది" - -msgid "Download source file" -msgstr "మూల ఫైల్‌ను డౌన్‌లోడ్ చేయండి" - -msgid "Download this page" -msgstr "ఈ పేజీని డౌన్‌లోడ్ చేయండి" +msgid "next page" +msgstr "తరువాతి పేజీ" diff --git a/_static/locales/tg/LC_MESSAGES/booktheme.po b/_static/locales/tg/LC_MESSAGES/booktheme.po index 29b8237b..c33dc421 100644 --- a/_static/locales/tg/LC_MESSAGES/booktheme.po +++ b/_static/locales/tg/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: tg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "Чоп ба PDF" + msgid "Theme by the" msgstr "Мавзӯъи аз" -msgid "Open an issue" -msgstr "Масъаларо кушоед" +msgid "Download source file" +msgstr "Файли манбаъро зеркашӣ кунед" + +msgid "open issue" +msgstr "барориши кушод" msgid "Contents" msgstr "Мундариҷа" +msgid "previous page" +msgstr "саҳифаи қаблӣ" + msgid "Download notebook file" msgstr "Файли дафтарро зеркашӣ кунед" -msgid "Sphinx Book Theme" -msgstr "Сфинкс Мавзӯи китоб" - -msgid "Fullscreen mode" -msgstr "Ҳолати экрани пурра" - -msgid "Edit this page" -msgstr "Ин саҳифаро таҳрир кунед" - -msgid "By" -msgstr "Бо" - msgid "Copyright" msgstr "Ҳуқуқи муаллиф" +msgid "Download this page" +msgstr "Ин саҳифаро зеркашӣ кунед" + msgid "Source repository" msgstr "Анбори манбаъ" -msgid "previous page" -msgstr "саҳифаи қаблӣ" +msgid "By" +msgstr "Бо" -msgid "next page" -msgstr "саҳифаи оянда" +msgid "repository" +msgstr "анбор" + +msgid "Last updated on" +msgstr "Last навсозӣ дар" msgid "Toggle navigation" msgstr "Гузаришро иваз кунед" -msgid "repository" -msgstr "анбор" +msgid "Sphinx Book Theme" +msgstr "Сфинкс Мавзӯи китоб" msgid "suggest edit" msgstr "пешниҳод вироиш" -msgid "open issue" -msgstr "барориши кушод" +msgid "Open an issue" +msgstr "Масъаларо кушоед" msgid "Launch" msgstr "Оғоз" -msgid "Print to PDF" -msgstr "Чоп ба PDF" +msgid "Fullscreen mode" +msgstr "Ҳолати экрани пурра" + +msgid "Edit this page" +msgstr "Ин саҳифаро таҳрир кунед" msgid "By the" msgstr "Бо" -msgid "Last updated on" -msgstr "Last навсозӣ дар" - -msgid "Download source file" -msgstr "Файли манбаъро зеркашӣ кунед" - -msgid "Download this page" -msgstr "Ин саҳифаро зеркашӣ кунед" +msgid "next page" +msgstr "саҳифаи оянда" diff --git a/_static/locales/th/LC_MESSAGES/booktheme.po b/_static/locales/th/LC_MESSAGES/booktheme.po index ac65ee05..9d24294a 100644 --- a/_static/locales/th/LC_MESSAGES/booktheme.po +++ b/_static/locales/th/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: th\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "พิมพ์เป็น PDF" + msgid "Theme by the" msgstr "ธีมโดย" -msgid "Open an issue" +msgid "Download source file" +msgstr "ดาวน์โหลดไฟล์ต้นฉบับ" + +msgid "open issue" msgstr "เปิดปัญหา" msgid "Contents" msgstr "สารบัญ" +msgid "previous page" +msgstr "หน้าที่แล้ว" + msgid "Download notebook file" msgstr "ดาวน์โหลดไฟล์สมุดบันทึก" -msgid "Sphinx Book Theme" -msgstr "ธีมหนังสือสฟิงซ์" - -msgid "Fullscreen mode" -msgstr "โหมดเต็มหน้าจอ" - -msgid "Edit this page" -msgstr "แก้ไขหน้านี้" - -msgid "By" -msgstr "โดย" - msgid "Copyright" msgstr "ลิขสิทธิ์" +msgid "Download this page" +msgstr "ดาวน์โหลดหน้านี้" + msgid "Source repository" msgstr "ที่เก็บซอร์ส" -msgid "previous page" -msgstr "หน้าที่แล้ว" +msgid "By" +msgstr "โดย" -msgid "next page" -msgstr "หน้าต่อไป" +msgid "repository" +msgstr "ที่เก็บ" + +msgid "Last updated on" +msgstr "ปรับปรุงล่าสุดเมื่อ" msgid "Toggle navigation" msgstr "ไม่ต้องสลับช่องทาง" -msgid "repository" -msgstr "ที่เก็บ" +msgid "Sphinx Book Theme" +msgstr "ธีมหนังสือสฟิงซ์" msgid "suggest edit" msgstr "แนะนำแก้ไข" -msgid "open issue" +msgid "Open an issue" msgstr "เปิดปัญหา" msgid "Launch" msgstr "เปิด" -msgid "Print to PDF" -msgstr "พิมพ์เป็น PDF" +msgid "Fullscreen mode" +msgstr "โหมดเต็มหน้าจอ" + +msgid "Edit this page" +msgstr "แก้ไขหน้านี้" msgid "By the" msgstr "โดย" -msgid "Last updated on" -msgstr "ปรับปรุงล่าสุดเมื่อ" - -msgid "Download source file" -msgstr "ดาวน์โหลดไฟล์ต้นฉบับ" - -msgid "Download this page" -msgstr "ดาวน์โหลดหน้านี้" +msgid "next page" +msgstr "หน้าต่อไป" diff --git a/_static/locales/tl/LC_MESSAGES/booktheme.po b/_static/locales/tl/LC_MESSAGES/booktheme.po index 662d66ca..20e0d07c 100644 --- a/_static/locales/tl/LC_MESSAGES/booktheme.po +++ b/_static/locales/tl/LC_MESSAGES/booktheme.po @@ -8,59 +8,59 @@ msgstr "" "Language: tl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "I-print sa PDF" + msgid "Theme by the" msgstr "Tema ng" -msgid "Open an issue" -msgstr "Magbukas ng isyu" - -msgid "Download notebook file" -msgstr "Mag-download ng file ng notebook" +msgid "Download source file" +msgstr "Mag-download ng file ng pinagmulan" -msgid "Sphinx Book Theme" -msgstr "Tema ng Sphinx Book" +msgid "open issue" +msgstr "bukas na isyu" -msgid "Edit this page" -msgstr "I-edit ang pahinang ito" +msgid "previous page" +msgstr "Nakaraang pahina" -msgid "By" -msgstr "Ni" +msgid "Download notebook file" +msgstr "Mag-download ng file ng notebook" msgid "Copyright" msgstr "Copyright" +msgid "Download this page" +msgstr "I-download ang pahinang ito" + msgid "Source repository" msgstr "Pinagmulan ng imbakan" -msgid "previous page" -msgstr "Nakaraang pahina" +msgid "By" +msgstr "Ni" -msgid "next page" -msgstr "Susunod na pahina" +msgid "Last updated on" +msgstr "Huling na-update noong" msgid "Toggle navigation" msgstr "I-toggle ang pag-navigate" +msgid "Sphinx Book Theme" +msgstr "Tema ng Sphinx Book" + msgid "suggest edit" msgstr "iminumungkahi i-edit" -msgid "open issue" -msgstr "bukas na isyu" +msgid "Open an issue" +msgstr "Magbukas ng isyu" msgid "Launch" msgstr "Ilunsad" -msgid "Print to PDF" -msgstr "I-print sa PDF" +msgid "Edit this page" +msgstr "I-edit ang pahinang ito" msgid "By the" msgstr "Sa pamamagitan ng" -msgid "Last updated on" -msgstr "Huling na-update noong" - -msgid "Download source file" -msgstr "Mag-download ng file ng pinagmulan" - -msgid "Download this page" -msgstr "I-download ang pahinang ito" +msgid "next page" +msgstr "Susunod na pahina" diff --git a/_static/locales/tr/LC_MESSAGES/booktheme.po b/_static/locales/tr/LC_MESSAGES/booktheme.po index d1ae7233..a77eb027 100644 --- a/_static/locales/tr/LC_MESSAGES/booktheme.po +++ b/_static/locales/tr/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: tr\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "PDF olarak yazdır" + msgid "Theme by the" msgstr "Tarafından tema" -msgid "Open an issue" -msgstr "Bir sorunu açın" +msgid "Download source file" +msgstr "Kaynak dosyayı indirin" + +msgid "open issue" +msgstr "Açık konu" msgid "Contents" msgstr "İçindekiler" +msgid "previous page" +msgstr "önceki sayfa" + msgid "Download notebook file" msgstr "Defter dosyasını indirin" -msgid "Sphinx Book Theme" -msgstr "Sfenks Kitap Teması" - -msgid "Fullscreen mode" -msgstr "Tam ekran modu" - -msgid "Edit this page" -msgstr "Bu sayfayı düzenle" - -msgid "By" -msgstr "Tarafından" - msgid "Copyright" msgstr "Telif hakkı" +msgid "Download this page" +msgstr "Bu sayfayı indirin" + msgid "Source repository" msgstr "Kaynak kod deposu" -msgid "previous page" -msgstr "önceki sayfa" +msgid "By" +msgstr "Tarafından" -msgid "next page" -msgstr "sonraki Sayfa" +msgid "repository" +msgstr "depo" + +msgid "Last updated on" +msgstr "Son güncelleme tarihi" msgid "Toggle navigation" msgstr "Gezinmeyi değiştir" -msgid "repository" -msgstr "depo" +msgid "Sphinx Book Theme" +msgstr "Sfenks Kitap Teması" msgid "suggest edit" msgstr "düzenleme öner" -msgid "open issue" -msgstr "Açık konu" +msgid "Open an issue" +msgstr "Bir sorunu açın" msgid "Launch" msgstr "Başlatmak" -msgid "Print to PDF" -msgstr "PDF olarak yazdır" +msgid "Fullscreen mode" +msgstr "Tam ekran modu" + +msgid "Edit this page" +msgstr "Bu sayfayı düzenle" msgid "By the" msgstr "Tarafından" -msgid "Last updated on" -msgstr "Son güncelleme tarihi" - -msgid "Download source file" -msgstr "Kaynak dosyayı indirin" - -msgid "Download this page" -msgstr "Bu sayfayı indirin" +msgid "next page" +msgstr "sonraki Sayfa" diff --git a/_static/locales/uk/LC_MESSAGES/booktheme.po b/_static/locales/uk/LC_MESSAGES/booktheme.po index be49ab85..993dd078 100644 --- a/_static/locales/uk/LC_MESSAGES/booktheme.po +++ b/_static/locales/uk/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: uk\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "Друк у форматі PDF" + msgid "Theme by the" msgstr "Тема від" -msgid "Open an issue" -msgstr "Відкрийте випуск" +msgid "Download source file" +msgstr "Завантажити вихідний файл" + +msgid "open issue" +msgstr "відкритий випуск" msgid "Contents" msgstr "Зміст" +msgid "previous page" +msgstr "Попередня сторінка" + msgid "Download notebook file" msgstr "Завантажте файл блокнота" -msgid "Sphinx Book Theme" -msgstr "Тема книги \"Сфінкс\"" - -msgid "Fullscreen mode" -msgstr "Повноекранний режим" - -msgid "Edit this page" -msgstr "Редагувати цю сторінку" - -msgid "By" -msgstr "Автор" - msgid "Copyright" msgstr "Авторське право" +msgid "Download this page" +msgstr "Завантажте цю сторінку" + msgid "Source repository" msgstr "Джерело сховища" -msgid "previous page" -msgstr "Попередня сторінка" +msgid "By" +msgstr "Автор" -msgid "next page" -msgstr "Наступна сторінка" +msgid "repository" +msgstr "сховище" + +msgid "Last updated on" +msgstr "Останнє оновлення:" msgid "Toggle navigation" msgstr "Переключити навігацію" -msgid "repository" -msgstr "сховище" +msgid "Sphinx Book Theme" +msgstr "Тема книги \"Сфінкс\"" msgid "suggest edit" msgstr "запропонувати редагувати" -msgid "open issue" -msgstr "відкритий випуск" +msgid "Open an issue" +msgstr "Відкрийте випуск" msgid "Launch" msgstr "Запуск" -msgid "Print to PDF" -msgstr "Друк у форматі PDF" +msgid "Fullscreen mode" +msgstr "Повноекранний режим" + +msgid "Edit this page" +msgstr "Редагувати цю сторінку" msgid "By the" msgstr "По" -msgid "Last updated on" -msgstr "Останнє оновлення:" - -msgid "Download source file" -msgstr "Завантажити вихідний файл" - -msgid "Download this page" -msgstr "Завантажте цю сторінку" +msgid "next page" +msgstr "Наступна сторінка" diff --git a/_static/locales/ur/LC_MESSAGES/booktheme.po b/_static/locales/ur/LC_MESSAGES/booktheme.po index 94bcab33..2f774267 100644 --- a/_static/locales/ur/LC_MESSAGES/booktheme.po +++ b/_static/locales/ur/LC_MESSAGES/booktheme.po @@ -8,59 +8,59 @@ msgstr "" "Language: ur\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "پی ڈی ایف پرنٹ کریں" + msgid "Theme by the" msgstr "کے ذریعہ تھیم" -msgid "Open an issue" -msgstr "ایک مسئلہ کھولیں" - -msgid "Download notebook file" -msgstr "نوٹ بک فائل ڈاؤن لوڈ کریں" +msgid "Download source file" +msgstr "سورس فائل ڈاؤن لوڈ کریں" -msgid "Sphinx Book Theme" -msgstr "سپنکس بک تھیم" +msgid "open issue" +msgstr "کھلا مسئلہ" -msgid "Edit this page" -msgstr "اس صفحے میں ترمیم کریں" +msgid "previous page" +msgstr "سابقہ ​​صفحہ" -msgid "By" -msgstr "بذریعہ" +msgid "Download notebook file" +msgstr "نوٹ بک فائل ڈاؤن لوڈ کریں" msgid "Copyright" msgstr "کاپی رائٹ" +msgid "Download this page" +msgstr "اس صفحے کو ڈاؤن لوڈ کریں" + msgid "Source repository" msgstr "ماخذ ذخیرہ" -msgid "previous page" -msgstr "سابقہ ​​صفحہ" +msgid "By" +msgstr "بذریعہ" -msgid "next page" -msgstr "اگلا صفحہ" +msgid "Last updated on" +msgstr "آخری بار تازہ کاری ہوئی" msgid "Toggle navigation" msgstr "نیویگیشن ٹوگل کریں" +msgid "Sphinx Book Theme" +msgstr "سپنکس بک تھیم" + msgid "suggest edit" msgstr "ترمیم کی تجویز کریں" -msgid "open issue" -msgstr "کھلا مسئلہ" +msgid "Open an issue" +msgstr "ایک مسئلہ کھولیں" msgid "Launch" msgstr "لانچ کریں" -msgid "Print to PDF" -msgstr "پی ڈی ایف پرنٹ کریں" +msgid "Edit this page" +msgstr "اس صفحے میں ترمیم کریں" msgid "By the" msgstr "کی طرف" -msgid "Last updated on" -msgstr "آخری بار تازہ کاری ہوئی" - -msgid "Download source file" -msgstr "سورس فائل ڈاؤن لوڈ کریں" - -msgid "Download this page" -msgstr "اس صفحے کو ڈاؤن لوڈ کریں" +msgid "next page" +msgstr "اگلا صفحہ" diff --git a/_static/locales/vi/LC_MESSAGES/booktheme.po b/_static/locales/vi/LC_MESSAGES/booktheme.po index 116236dc..33159f3e 100644 --- a/_static/locales/vi/LC_MESSAGES/booktheme.po +++ b/_static/locales/vi/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: vi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "In sang PDF" + msgid "Theme by the" msgstr "Chủ đề của" -msgid "Open an issue" -msgstr "Mở một vấn đề" +msgid "Download source file" +msgstr "Tải xuống tệp nguồn" + +msgid "open issue" +msgstr "vấn đề mở" msgid "Contents" msgstr "Nội dung" +msgid "previous page" +msgstr "trang trước" + msgid "Download notebook file" msgstr "Tải xuống tệp sổ tay" -msgid "Sphinx Book Theme" -msgstr "Chủ đề sách nhân sư" - -msgid "Fullscreen mode" -msgstr "Chế độ toàn màn hình" - -msgid "Edit this page" -msgstr "chỉnh sửa trang này" - -msgid "By" -msgstr "Bởi" - msgid "Copyright" msgstr "Bản quyền" +msgid "Download this page" +msgstr "Tải xuống trang này" + msgid "Source repository" msgstr "Kho nguồn" -msgid "previous page" -msgstr "trang trước" +msgid "By" +msgstr "Bởi" -msgid "next page" -msgstr "Trang tiếp theo" +msgid "repository" +msgstr "kho" + +msgid "Last updated on" +msgstr "Cập nhật lần cuối vào" msgid "Toggle navigation" msgstr "Chuyển đổi điều hướng thành" -msgid "repository" -msgstr "kho" +msgid "Sphinx Book Theme" +msgstr "Chủ đề sách nhân sư" msgid "suggest edit" msgstr "đề nghị chỉnh sửa" -msgid "open issue" -msgstr "vấn đề mở" +msgid "Open an issue" +msgstr "Mở một vấn đề" msgid "Launch" msgstr "Phóng" -msgid "Print to PDF" -msgstr "In sang PDF" +msgid "Fullscreen mode" +msgstr "Chế độ toàn màn hình" + +msgid "Edit this page" +msgstr "chỉnh sửa trang này" msgid "By the" msgstr "Bằng" -msgid "Last updated on" -msgstr "Cập nhật lần cuối vào" - -msgid "Download source file" -msgstr "Tải xuống tệp nguồn" - -msgid "Download this page" -msgstr "Tải xuống trang này" +msgid "next page" +msgstr "Trang tiếp theo" diff --git a/_static/locales/zh_CN/LC_MESSAGES/booktheme.po b/_static/locales/zh_CN/LC_MESSAGES/booktheme.po index 4f4ab579..2e519ef4 100644 --- a/_static/locales/zh_CN/LC_MESSAGES/booktheme.po +++ b/_static/locales/zh_CN/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: zh_CN\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "列印成 PDF" + msgid "Theme by the" msgstr "主题作者:" -msgid "Open an issue" +msgid "Download source file" +msgstr "下载源文件" + +msgid "open issue" msgstr "创建议题" msgid "Contents" msgstr "目录" +msgid "previous page" +msgstr "上一页" + msgid "Download notebook file" msgstr "下载笔记本文件" -msgid "Sphinx Book Theme" -msgstr "Sphinx Book 主题" - -msgid "Fullscreen mode" -msgstr "全屏模式" - -msgid "Edit this page" -msgstr "编辑此页面" - -msgid "By" -msgstr "作者:" - msgid "Copyright" msgstr "版权" +msgid "Download this page" +msgstr "下载此页面" + msgid "Source repository" msgstr "源码库" -msgid "previous page" -msgstr "上一页" +msgid "By" +msgstr "作者:" -msgid "next page" -msgstr "下一页" +msgid "repository" +msgstr "仓库" + +msgid "Last updated on" +msgstr "上次更新时间:" msgid "Toggle navigation" msgstr "显示或隐藏导航栏" -msgid "repository" -msgstr "仓库" +msgid "Sphinx Book Theme" +msgstr "Sphinx Book 主题" msgid "suggest edit" msgstr "提出修改建议" -msgid "open issue" +msgid "Open an issue" msgstr "创建议题" msgid "Launch" msgstr "启动" -msgid "Print to PDF" -msgstr "列印成 PDF" +msgid "Fullscreen mode" +msgstr "全屏模式" + +msgid "Edit this page" +msgstr "编辑此页面" msgid "By the" msgstr "作者:" -msgid "Last updated on" -msgstr "上次更新时间:" - -msgid "Download source file" -msgstr "下载源文件" - -msgid "Download this page" -msgstr "下载此页面" +msgid "next page" +msgstr "下一页" diff --git a/_static/locales/zh_TW/LC_MESSAGES/booktheme.po b/_static/locales/zh_TW/LC_MESSAGES/booktheme.po index 42b43b86..beecb076 100644 --- a/_static/locales/zh_TW/LC_MESSAGES/booktheme.po +++ b/_static/locales/zh_TW/LC_MESSAGES/booktheme.po @@ -8,68 +8,68 @@ msgstr "" "Language: zh_TW\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Print to PDF" +msgstr "列印成 PDF" + msgid "Theme by the" msgstr "佈景主題作者:" -msgid "Open an issue" -msgstr "開啟議題" +msgid "Download source file" +msgstr "下載原始檔" + +msgid "open issue" +msgstr "公開的問題" msgid "Contents" msgstr "目錄" +msgid "previous page" +msgstr "上一頁" + msgid "Download notebook file" msgstr "下載 Notebook 檔案" -msgid "Sphinx Book Theme" -msgstr "Sphinx Book 佈景主題" - -msgid "Fullscreen mode" -msgstr "全螢幕模式" - -msgid "Edit this page" -msgstr "編輯此頁面" - -msgid "By" -msgstr "作者:" - msgid "Copyright" msgstr "Copyright" +msgid "Download this page" +msgstr "下載此頁面" + msgid "Source repository" msgstr "來源儲存庫" -msgid "previous page" -msgstr "上一頁" +msgid "By" +msgstr "作者:" -msgid "next page" -msgstr "下一頁" +msgid "repository" +msgstr "儲存庫" + +msgid "Last updated on" +msgstr "最後更新時間:" msgid "Toggle navigation" msgstr "顯示或隱藏導覽列" -msgid "repository" -msgstr "儲存庫" +msgid "Sphinx Book Theme" +msgstr "Sphinx Book 佈景主題" msgid "suggest edit" msgstr "提出修改建議" -msgid "open issue" -msgstr "公開的問題" +msgid "Open an issue" +msgstr "開啟議題" msgid "Launch" msgstr "啟動" -msgid "Print to PDF" -msgstr "列印成 PDF" +msgid "Fullscreen mode" +msgstr "全螢幕模式" + +msgid "Edit this page" +msgstr "編輯此頁面" msgid "By the" msgstr "作者:" -msgid "Last updated on" -msgstr "最後更新時間:" - -msgid "Download source file" -msgstr "下載原始檔" - -msgid "Download this page" -msgstr "下載此頁面" +msgid "next page" +msgstr "下一頁" diff --git a/_static/scripts/sphinx-book-theme.js b/_static/scripts/sphinx-book-theme.js index be9fa44d..481ba0c1 100644 --- a/_static/scripts/sphinx-book-theme.js +++ b/_static/scripts/sphinx-book-theme.js @@ -1,2 +1,2 @@ -!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){"use strict";n.r(t);n.p;var r=e=>{"loading"!=document.readyState?e():document.addEventListener?document.addEventListener("DOMContentLoaded",e):document.attachEvent("onreadystatechange",(function(){"complete"==document.readyState&&e()}))};window.initThebeSBT=()=>{var e=document.querySelector("section h1");e.nextElementSibling.classList.contains("thebe-launch-button")||e.insertAdjacentHTML("afterend",""),initThebe()},window.toggleFullScreen=()=>{var e=document.fullscreenElement&&null!==document.fullscreenElement||document.webkitFullscreenElement&&null!==document.webkitFullscreenElement;let t=document.documentElement;e?(console.log("[SBT]: Exiting full screen"),document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen&&document.webkitExitFullscreen()):(console.log("[SBT]: Entering full screen"),t.requestFullscreen?t.requestFullscreen():t.webkitRequestFullscreen&&t.webkitRequestFullscreen())},r(()=>{var e=[];let t=new IntersectionObserver((t,n)=>{t.forEach(t=>{if(t.isIntersecting)e.push(t.target);else for(let n=0;n0?document.querySelector("div.bd-sidebar-secondary").classList.add("hide"):document.querySelector("div.bd-sidebar-secondary").classList.remove("hide")},{rootMargin:"0px 0px -33% 0px"});let n=[];["marginnote","sidenote","margin","margin-caption","full-width","sidebar","popout"].forEach(e=>{n.push("."+e,".tag_"+e,"."+e.replace("-","_"),".tag_"+e.replace("-","_"))}),document.querySelectorAll(n.join(", ")).forEach(e=>{t.observe(e)}),new IntersectionObserver((e,t)=>{e[0].boundingClientRect.y<0?document.body.classList.add("scrolled"):document.body.classList.remove("scrolled")}).observe(document.querySelector(".sbt-scroll-pixel-helper"))}),r((function(){var e=[".bd-header-announcement",".bd-header",".bd-header-article",".bd-sidebar-primary",".bd-sidebar-secondary",".bd-footer-article",".bd-footer-content",".bd-footer"].join(",");document.querySelectorAll(e).forEach(e=>{e.classList.add("noprint")})}))}]); +(()=>{"use strict";var e=e=>{"loading"!=document.readyState?e():document.addEventListener?document.addEventListener("DOMContentLoaded",e):document.attachEvent("onreadystatechange",(function(){"complete"==document.readyState&&e()}))};window.initThebeSBT=()=>{var e=document.querySelector("section h1");e.nextElementSibling.classList.contains("thebe-launch-button")||e.insertAdjacentHTML("afterend",""),initThebe()},window.toggleFullScreen=()=>{var e=document.fullscreenElement&&null!==document.fullscreenElement||document.webkitFullscreenElement&&null!==document.webkitFullscreenElement;let t=document.documentElement;e?(console.log("[SBT]: Exiting full screen"),document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen&&document.webkitExitFullscreen()):(console.log("[SBT]: Entering full screen"),t.requestFullscreen?t.requestFullscreen():t.webkitRequestFullscreen&&t.webkitRequestFullscreen())},e((()=>{var e=[];let t=new IntersectionObserver(((t,n)=>{t.forEach((t=>{if(t.isIntersecting)e.push(t.target);else for(let n=0;n0?document.querySelector("div.bd-sidebar-secondary").classList.add("hide"):document.querySelector("div.bd-sidebar-secondary").classList.remove("hide")}),{rootMargin:"0px 0px -33% 0px"}),n=[];["marginnote","sidenote","margin","margin-caption","full-width","sidebar","popout"].forEach((e=>{n.push(`.${e}`,`.tag_${e}`,`.${e.replace("-","_")}`,`.tag_${e.replace("-","_")}`)})),document.querySelectorAll(n.join(", ")).forEach((e=>{t.observe(e)})),new IntersectionObserver(((e,t)=>{e[0].boundingClientRect.y<0?document.body.classList.add("scrolled"):document.body.classList.remove("scrolled")})).observe(document.querySelector(".sbt-scroll-pixel-helper"))})),e((function(){var e=[".bd-header-announcement",".bd-header",".bd-header-article",".bd-sidebar-primary",".bd-sidebar-secondary",".bd-footer-article",".bd-footer-content",".bd-footer"].join(",");document.querySelectorAll(e).forEach((e=>{e.classList.add("noprint")}))}))})(); //# sourceMappingURL=sphinx-book-theme.js.map \ No newline at end of file diff --git a/_static/scripts/sphinx-book-theme.js.map b/_static/scripts/sphinx-book-theme.js.map index b8abcf86..2cc145ab 100644 --- a/_static/scripts/sphinx-book-theme.js.map +++ b/_static/scripts/sphinx-book-theme.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/sphinx_book_theme/assets/styles/index.scss","webpack:///./src/sphinx_book_theme/assets/scripts/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","sbRunWhenDOMLoaded","cb","document","readyState","addEventListener","attachEvent","window","initThebeSBT","title","querySelector","nextElementSibling","classList","contains","insertAdjacentHTML","initThebe","toggleFullScreen","isInFullScreen","fullscreenElement","webkitFullscreenElement","docElm","documentElement","console","log","exitFullscreen","webkitExitFullscreen","requestFullscreen","webkitRequestFullscreen","onScreenItems","tocObserver","IntersectionObserver","entries","observer","forEach","entry","isIntersecting","push","target","ii","length","splice","add","remove","rootMargin","marginSelector","replace","querySelectorAll","join","observe","boundingClientRect","y","body","noPrintSelector"],"mappings":"aACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QAKfF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,GAIjBlC,EAAoBA,EAAoBmC,EAAI,G,sEClFtC,QCSXC,EAAsBC,IACG,WAAvBC,SAASC,WACXF,IACSC,SAASE,iBAClBF,SAASE,iBAAiB,mBAAoBH,GAE9CC,SAASG,YAAY,sBAAsB,WACd,YAAvBH,SAASC,YAA0BF,QAoK7CK,OAAOC,aAtCY,KACjB,IAAIC,EAAQN,SAASO,cAAc,cACrBD,EAAME,mBAGPC,UAAUC,SAAS,wBAC9BJ,EAAMK,mBACJ,WACA,iDAIJC,aA2BFR,OAAOS,iBAzJgB,KACrB,IAAIC,EACDd,SAASe,mBAAoD,OAA/Bf,SAASe,mBACvCf,SAASgB,yBAC6B,OAArChB,SAASgB,wBACb,IAAIC,EAASjB,SAASkB,gBACjBJ,GAQHK,QAAQC,IAAI,8BACRpB,SAASqB,eACXrB,SAASqB,iBACArB,SAASsB,sBAClBtB,SAASsB,yBAXXH,QAAQC,IAAI,+BACRH,EAAOM,kBACTN,EAAOM,oBACEN,EAAOO,yBAChBP,EAAOO,4BAmJb1B,EAzHkB,KAChB,IAAI2B,EAAgB,GACpB,IAwCIC,EAAc,IAAIC,qBAxCA,CAACC,EAASC,KAE9BD,EAAQE,QAASC,IACf,GAAIA,EAAMC,eAERP,EAAcQ,KAAKF,EAAMG,aAGzB,IAAK,IAAIC,EAAK,EAAGA,EAAKV,EAAcW,OAAQD,IAC1C,GAAIV,EAAcU,KAAQJ,EAAMG,OAAQ,CACtCT,EAAcY,OAAOF,EAAI,GACzB,SAOJV,EAAcW,OAAS,EACzBpC,SAASO,cAAc,4BAA4BE,UAAU6B,IAAI,QAEjEtC,SACGO,cAAc,4BACdE,UAAU8B,OAAO,SAaV,CAEZC,WAAY,qBAad,IAAIC,EAAiB,GATG,CACtB,aACA,WACA,SACA,iBACA,aACA,UACA,UAGcX,QAASK,IAEvBM,EAAeR,KAEX,IAAIE,EACJ,QAAQA,EACR,IAAIA,EAAGO,QAAQ,IAAK,KACpB,QAAQP,EAAGO,QAAQ,IAAK,QAI9B1C,SAAS2C,iBAAiBF,EAAeG,KAAK,OAAOd,QAASK,IAC5DT,EAAYmB,QAAQV,KAID,IAAIR,qBA1CO,CAACC,EAASC,KAEpCD,EAAQ,GAAGkB,mBAAmBC,EAAI,EACpC/C,SAASgD,KAAKvC,UAAU6B,IAAI,YAE5BtC,SAASgD,KAAKvC,UAAU8B,OAAO,cAsCpBM,QAAQ7C,SAASO,cAAc,+BAmDhDT,GA1BA,WACE,IAAImD,EAAkB,CACpB,0BACA,aACA,qBACA,sBACA,wBACA,qBACA,qBACA,cACAL,KAAK,KACP5C,SAAS2C,iBAAiBM,GAAiBnB,QAASK,IAClDA,EAAG1B,UAAU6B,IAAI","file":"scripts/sphinx-book-theme.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","export default __webpack_public_path__ + \"styles/sphinx-book-theme.css\";","// Import CSS variables\n// ref: https://css-tricks.com/getting-javascript-to-talk-to-css-and-sass/\nimport \"../styles/index.scss\";\n\n/**\n * A helper function to load scripts when the DOM is loaded.\n * This waits for everything to be on the page first before running, since\n * some functionality doesn't behave properly until everything is ready.\n */\nvar sbRunWhenDOMLoaded = (cb) => {\n if (document.readyState != \"loading\") {\n cb();\n } else if (document.addEventListener) {\n document.addEventListener(\"DOMContentLoaded\", cb);\n } else {\n document.attachEvent(\"onreadystatechange\", function () {\n if (document.readyState == \"complete\") cb();\n });\n }\n};\n\n/**\n * Toggle full-screen with button\n *\n * There are some browser-specific hacks in here:\n * - Safari requires a `webkit` prefix, so this uses conditionals to check for that\n * ref: https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API\n */\nvar toggleFullScreen = () => {\n var isInFullScreen =\n (document.fullscreenElement && document.fullscreenElement !== null) ||\n (document.webkitFullscreenElement &&\n document.webkitFullscreenElement !== null);\n let docElm = document.documentElement;\n if (!isInFullScreen) {\n console.log(\"[SBT]: Entering full screen\");\n if (docElm.requestFullscreen) {\n docElm.requestFullscreen();\n } else if (docElm.webkitRequestFullscreen) {\n docElm.webkitRequestFullscreen();\n }\n } else {\n console.log(\"[SBT]: Exiting full screen\");\n if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n }\n }\n};\n\n/**\n * Manage scrolling behavior. This is primarily two things:\n *\n * 1. Hide the Table of Contents any time sidebar content is on the screen.\n *\n * This will be triggered any time a sidebar item enters or exits the screen.\n * It adds/removes items from an array if they have entered the screen, and\n * removes them when they exit the screen. It hides the TOC if anything is\n * on-screen.\n *\n * ref: https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n *\n * 2. Add a `scrolled` class to to trigger CSS changes.\n */\nvar initTocHide = () => {\n var onScreenItems = [];\n let hideTocCallback = (entries, observer) => {\n // Check whether any sidebar item is displayed\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n // If an element just came on screen, add it our list\n onScreenItems.push(entry.target);\n } else {\n // Otherwise, if it's in our list then remove it\n for (let ii = 0; ii < onScreenItems.length; ii++) {\n if (onScreenItems[ii] === entry.target) {\n onScreenItems.splice(ii, 1);\n break;\n }\n }\n }\n });\n\n // Hide the TOC if any margin content is displayed on the screen\n if (onScreenItems.length > 0) {\n document.querySelector(\"div.bd-sidebar-secondary\").classList.add(\"hide\");\n } else {\n document\n .querySelector(\"div.bd-sidebar-secondary\")\n .classList.remove(\"hide\");\n }\n };\n let manageScrolledClassOnBody = (entries, observer) => {\n // The pixel is at the top, so if we're < 0 that it means we've scrolled\n if (entries[0].boundingClientRect.y < 0) {\n document.body.classList.add(\"scrolled\");\n } else {\n document.body.classList.remove(\"scrolled\");\n }\n };\n\n // Set up the intersection observer to watch all margin content\n let options = {\n // Trigger callback when the top of a margin item is 1/3 up the screen\n rootMargin: \"0px 0px -33% 0px\",\n };\n let tocObserver = new IntersectionObserver(hideTocCallback, options);\n // TODO: deprecate popout after v0.5.0\n const selectorClasses = [\n \"marginnote\",\n \"sidenote\",\n \"margin\",\n \"margin-caption\",\n \"full-width\",\n \"sidebar\",\n \"popout\",\n ];\n let marginSelector = [];\n selectorClasses.forEach((ii) => {\n // Use three permutations of each class name because `tag_` and `_` used to be supported\n marginSelector.push(\n ...[\n `.${ii}`,\n `.tag_${ii}`,\n `.${ii.replace(\"-\", \"_\")}`,\n `.tag_${ii.replace(\"-\", \"_\")}`,\n ],\n );\n });\n document.querySelectorAll(marginSelector.join(\", \")).forEach((ii) => {\n tocObserver.observe(ii);\n });\n\n // Set up the observer to check if we've scrolled from top of page\n let scrollObserver = new IntersectionObserver(manageScrolledClassOnBody);\n scrollObserver.observe(document.querySelector(\".sbt-scroll-pixel-helper\"));\n};\n\n/**\n * Activate Thebe with a custom button click.\n */\nvar initThebeSBT = () => {\n var title = document.querySelector(\"section h1\");\n var sibling = title.nextElementSibling;\n // If the next element after the title isn't a thebe button, add one now.\n // That way it is initiatlized when thebe is first-clicked and isn't re-added after.\n if (!sibling.classList.contains(\"thebe-launch-button\")) {\n title.insertAdjacentHTML(\n \"afterend\",\n \"\",\n );\n }\n // This function is provided by sphinx-thebe\n initThebe();\n};\n\n/**\n * Add no print class to certain DOM elements\n */\n\nfunction addNoPrint() {\n var noPrintSelector = [\n \".bd-header-announcement\",\n \".bd-header\",\n \".bd-header-article\",\n \".bd-sidebar-primary\",\n \".bd-sidebar-secondary\",\n \".bd-footer-article\",\n \".bd-footer-content\",\n \".bd-footer\",\n ].join(\",\");\n document.querySelectorAll(noPrintSelector).forEach((ii) => {\n ii.classList.add(\"noprint\");\n });\n}\n\n/**\n * Set up callback functions for UI click actions\n */\nwindow.initThebeSBT = initThebeSBT;\nwindow.toggleFullScreen = toggleFullScreen;\n\n/**\n * Set up functions to load when the DOM is ready\n */\nsbRunWhenDOMLoaded(initTocHide);\nsbRunWhenDOMLoaded(addNoPrint);\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"scripts/sphinx-book-theme.js","mappings":"mBASA,IAAIA,EAAsBC,IACG,WAAvBC,SAASC,WACXF,IACSC,SAASE,iBAClBF,SAASE,iBAAiB,mBAAoBH,GAE9CC,SAASG,YAAY,sBAAsB,WACd,YAAvBH,SAASC,YAA0BF,GACzC,GACF,EAkKFK,OAAOC,aAtCY,KACjB,IAAIC,EAAQN,SAASO,cAAc,cACrBD,EAAME,mBAGPC,UAAUC,SAAS,wBAC9BJ,EAAMK,mBACJ,WACA,iDAIJC,WAAW,EA2BbR,OAAOS,iBAzJgB,KACrB,IAAIC,EACDd,SAASe,mBAAoD,OAA/Bf,SAASe,mBACvCf,SAASgB,yBAC6B,OAArChB,SAASgB,wBACb,IAAIC,EAASjB,SAASkB,gBACjBJ,GAQHK,QAAQC,IAAI,8BACRpB,SAASqB,eACXrB,SAASqB,iBACArB,SAASsB,sBAClBtB,SAASsB,yBAXXH,QAAQC,IAAI,+BACRH,EAAOM,kBACTN,EAAOM,oBACEN,EAAOO,yBAChBP,EAAOO,0BASX,EA0IF1B,GAzHkB,KAChB,IAAI2B,EAAgB,GACpB,IAwCIC,EAAc,IAAIC,sBAxCA,CAACC,EAASC,KAE9BD,EAAQE,SAASC,IACf,GAAIA,EAAMC,eAERP,EAAcQ,KAAKF,EAAMG,aAGzB,IAAK,IAAIC,EAAK,EAAGA,EAAKV,EAAcW,OAAQD,IAC1C,GAAIV,EAAcU,KAAQJ,EAAMG,OAAQ,CACtCT,EAAcY,OAAOF,EAAI,GACzB,KACF,CAEJ,IAIEV,EAAcW,OAAS,EACzBpC,SAASO,cAAc,4BAA4BE,UAAU6B,IAAI,QAEjEtC,SACGO,cAAc,4BACdE,UAAU8B,OAAO,OACtB,GAYY,CAEZC,WAAY,qBAaVC,EAAiB,GATG,CACtB,aACA,WACA,SACA,iBACA,aACA,UACA,UAGcX,SAASK,IAEvBM,EAAeR,KAEX,IAAIE,IACJ,QAAQA,IACR,IAAIA,EAAGO,QAAQ,IAAK,OACpB,QAAQP,EAAGO,QAAQ,IAAK,OAE3B,IAEH1C,SAAS2C,iBAAiBF,EAAeG,KAAK,OAAOd,SAASK,IAC5DT,EAAYmB,QAAQV,EAAG,IAIJ,IAAIR,sBA1CO,CAACC,EAASC,KAEpCD,EAAQ,GAAGkB,mBAAmBC,EAAI,EACpC/C,SAASgD,KAAKvC,UAAU6B,IAAI,YAE5BtC,SAASgD,KAAKvC,UAAU8B,OAAO,WACjC,IAqCaM,QAAQ7C,SAASO,cAAc,4BAA4B,IAmD5ET,GA1BA,WACE,IAAImD,EAAkB,CACpB,0BACA,aACA,qBACA,sBACA,wBACA,qBACA,qBACA,cACAL,KAAK,KACP5C,SAAS2C,iBAAiBM,GAAiBnB,SAASK,IAClDA,EAAG1B,UAAU6B,IAAI,UAAU,GAE/B,G","sources":["webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/scripts/index.js"],"sourcesContent":["// Import CSS variables\n// ref: https://css-tricks.com/getting-javascript-to-talk-to-css-and-sass/\nimport \"../styles/index.scss\";\n\n/**\n * A helper function to load scripts when the DOM is loaded.\n * This waits for everything to be on the page first before running, since\n * some functionality doesn't behave properly until everything is ready.\n */\nvar sbRunWhenDOMLoaded = (cb) => {\n if (document.readyState != \"loading\") {\n cb();\n } else if (document.addEventListener) {\n document.addEventListener(\"DOMContentLoaded\", cb);\n } else {\n document.attachEvent(\"onreadystatechange\", function () {\n if (document.readyState == \"complete\") cb();\n });\n }\n};\n\n/**\n * Toggle full-screen with button\n *\n * There are some browser-specific hacks in here:\n * - Safari requires a `webkit` prefix, so this uses conditionals to check for that\n * ref: https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API\n */\nvar toggleFullScreen = () => {\n var isInFullScreen =\n (document.fullscreenElement && document.fullscreenElement !== null) ||\n (document.webkitFullscreenElement &&\n document.webkitFullscreenElement !== null);\n let docElm = document.documentElement;\n if (!isInFullScreen) {\n console.log(\"[SBT]: Entering full screen\");\n if (docElm.requestFullscreen) {\n docElm.requestFullscreen();\n } else if (docElm.webkitRequestFullscreen) {\n docElm.webkitRequestFullscreen();\n }\n } else {\n console.log(\"[SBT]: Exiting full screen\");\n if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n }\n }\n};\n\n/**\n * Manage scrolling behavior. This is primarily two things:\n *\n * 1. Hide the Table of Contents any time sidebar content is on the screen.\n *\n * This will be triggered any time a sidebar item enters or exits the screen.\n * It adds/removes items from an array if they have entered the screen, and\n * removes them when they exit the screen. It hides the TOC if anything is\n * on-screen.\n *\n * ref: https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n *\n * 2. Add a `scrolled` class to to trigger CSS changes.\n */\nvar initTocHide = () => {\n var onScreenItems = [];\n let hideTocCallback = (entries, observer) => {\n // Check whether any sidebar item is displayed\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n // If an element just came on screen, add it our list\n onScreenItems.push(entry.target);\n } else {\n // Otherwise, if it's in our list then remove it\n for (let ii = 0; ii < onScreenItems.length; ii++) {\n if (onScreenItems[ii] === entry.target) {\n onScreenItems.splice(ii, 1);\n break;\n }\n }\n }\n });\n\n // Hide the TOC if any margin content is displayed on the screen\n if (onScreenItems.length > 0) {\n document.querySelector(\"div.bd-sidebar-secondary\").classList.add(\"hide\");\n } else {\n document\n .querySelector(\"div.bd-sidebar-secondary\")\n .classList.remove(\"hide\");\n }\n };\n let manageScrolledClassOnBody = (entries, observer) => {\n // The pixel is at the top, so if we're < 0 that it means we've scrolled\n if (entries[0].boundingClientRect.y < 0) {\n document.body.classList.add(\"scrolled\");\n } else {\n document.body.classList.remove(\"scrolled\");\n }\n };\n\n // Set up the intersection observer to watch all margin content\n let options = {\n // Trigger callback when the top of a margin item is 1/3 up the screen\n rootMargin: \"0px 0px -33% 0px\",\n };\n let tocObserver = new IntersectionObserver(hideTocCallback, options);\n // TODO: deprecate popout after v0.5.0\n const selectorClasses = [\n \"marginnote\",\n \"sidenote\",\n \"margin\",\n \"margin-caption\",\n \"full-width\",\n \"sidebar\",\n \"popout\",\n ];\n let marginSelector = [];\n selectorClasses.forEach((ii) => {\n // Use three permutations of each class name because `tag_` and `_` used to be supported\n marginSelector.push(\n ...[\n `.${ii}`,\n `.tag_${ii}`,\n `.${ii.replace(\"-\", \"_\")}`,\n `.tag_${ii.replace(\"-\", \"_\")}`,\n ],\n );\n });\n document.querySelectorAll(marginSelector.join(\", \")).forEach((ii) => {\n tocObserver.observe(ii);\n });\n\n // Set up the observer to check if we've scrolled from top of page\n let scrollObserver = new IntersectionObserver(manageScrolledClassOnBody);\n scrollObserver.observe(document.querySelector(\".sbt-scroll-pixel-helper\"));\n};\n\n/**\n * Activate Thebe with a custom button click.\n */\nvar initThebeSBT = () => {\n var title = document.querySelector(\"section h1\");\n var sibling = title.nextElementSibling;\n // If the next element after the title isn't a thebe button, add one now.\n // That way it is initiatlized when thebe is first-clicked and isn't re-added after.\n if (!sibling.classList.contains(\"thebe-launch-button\")) {\n title.insertAdjacentHTML(\n \"afterend\",\n \"\",\n );\n }\n // This function is provided by sphinx-thebe\n initThebe();\n};\n\n/**\n * Add no print class to certain DOM elements\n */\n\nfunction addNoPrint() {\n var noPrintSelector = [\n \".bd-header-announcement\",\n \".bd-header\",\n \".bd-header-article\",\n \".bd-sidebar-primary\",\n \".bd-sidebar-secondary\",\n \".bd-footer-article\",\n \".bd-footer-content\",\n \".bd-footer\",\n ].join(\",\");\n document.querySelectorAll(noPrintSelector).forEach((ii) => {\n ii.classList.add(\"noprint\");\n });\n}\n\n/**\n * Set up callback functions for UI click actions\n */\nwindow.initThebeSBT = initThebeSBT;\nwindow.toggleFullScreen = toggleFullScreen;\n\n/**\n * Set up functions to load when the DOM is ready\n */\nsbRunWhenDOMLoaded(initTocHide);\nsbRunWhenDOMLoaded(addNoPrint);\n"],"names":["sbRunWhenDOMLoaded","cb","document","readyState","addEventListener","attachEvent","window","initThebeSBT","title","querySelector","nextElementSibling","classList","contains","insertAdjacentHTML","initThebe","toggleFullScreen","isInFullScreen","fullscreenElement","webkitFullscreenElement","docElm","documentElement","console","log","exitFullscreen","webkitExitFullscreen","requestFullscreen","webkitRequestFullscreen","onScreenItems","tocObserver","IntersectionObserver","entries","observer","forEach","entry","isIntersecting","push","target","ii","length","splice","add","remove","rootMargin","marginSelector","replace","querySelectorAll","join","observe","boundingClientRect","y","body","noPrintSelector"],"sourceRoot":""} \ No newline at end of file diff --git a/_static/searchtools.js b/_static/searchtools.js index 92da3f8b..b08d58c9 100644 --- a/_static/searchtools.js +++ b/_static/searchtools.js @@ -178,7 +178,7 @@ const Search = { htmlToText: (htmlString, anchor) => { const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); - for (const removalQuery of [".headerlinks", "script", "style"]) { + for (const removalQuery of [".headerlink", "script", "style"]) { htmlElement.querySelectorAll(removalQuery).forEach((el) => { el.remove() }); } if (anchor) { @@ -328,13 +328,14 @@ const Search = { for (const [title, foundTitles] of Object.entries(allTitles)) { if (title.toLowerCase().trim().includes(queryLower) && (queryLower.length >= title.length/2)) { for (const [file, id] of foundTitles) { - let score = Math.round(100 * queryLower.length / title.length) + const score = Math.round(Scorer.title * queryLower.length / title.length); + const boost = titles[file] === title ? 1 : 0; // add a boost for document titles normalResults.push([ docNames[file], titles[file] !== title ? `${titles[file]} > ${title}` : title, id !== null ? "#" + id : "", null, - score, + score + boost, filenames[file], ]); } diff --git a/_static/styles/sphinx-book-theme.css b/_static/styles/sphinx-book-theme.css index 56c23f18..5197540c 100644 --- a/_static/styles/sphinx-book-theme.css +++ b/_static/styles/sphinx-book-theme.css @@ -5,4 +5,5 @@ * * This follows the 7-1 pattern described here: * https://sass-guidelin.es/#architecture - */html[data-theme=dark],html[data-theme=light]{--pst-font-size-base:none;--pst-color-secondary:#e89217}html[data-theme=light]{--sbt-color-announcement:#616161;--pst-color-primary:#176de8}html[data-theme=dark]{--pst-color-primary:#528fe4;--sbt-color-announcement:#616161;--pst-color-background:#121212}html{scroll-padding-top:4rem}.sbt-scroll-pixel-helper{position:absolute;width:0;height:0;top:0;left:0}.d-n,.onlyprint{display:none}@media print{.onlyprint{display:block!important}}@media print{.noprint{display:none!important}}.bd-article-container h1,.bd-article-container h2,.bd-article-container h3,.bd-article-container h4,.bd-article-container h5,.bd-article-container p.caption{color:var(--pst-color-muted)}.bd-article-container h1,.bd-article-container h2{font-weight:500}a.brackets:before{color:inherit;font-family:inherit;margin-right:0}table{position:relative}@media print{.bd-main .bd-content{margin-left:2rem;height:auto}.bd-main .bd-content #jb-print-docs-body{margin-left:0}.bd-main .bd-content #jb-print-docs-body h1{font-size:3em;text-align:center;margin-bottom:0}.bd-main .bd-content .bd-article{padding-top:0}.bd-main .bd-content .bd-article h1:first-of-type{display:none}.bd-main .bd-content .container{min-width:0!important}.bd-main .bd-content h1{margin-top:1em;margin-bottom:1em}.bd-main .bd-content h1,.bd-main .bd-content h2,.bd-main .bd-content h3,.bd-main .bd-content h4{break-after:avoid;color:#000}.bd-main .bd-content table{break-inside:avoid}.bd-main .bd-content pre{word-wrap:break-word}.bd-main .bd-content a.headerlink{display:none}.bd-main .bd-content aside.margin,.bd-main .bd-content aside.sidebar,.bd-main .bd-content blockquote.epigraph{border:none}.bd-main .bd-content .footer{margin-top:1em}.bd-main .bd-content #jb-print-toc{margin-bottom:1.5rem;margin-left:0}.bd-main .bd-content #jb-print-toc .section-nav{border-left:0!important;list-style-type:disc!important;margin-left:3em!important}.bd-main .bd-content #jb-print-toc .section-nav a{text-decoration:none!important}.bd-main .bd-content #jb-print-toc .section-nav li{display:list-item!important}.bd-main .bd-content #jb-print-toc .section-nav .nav{display:none}.bd-main .bd-footer-content{display:none!important}}.bd-header-announcement{background-color:var(--sbt-color-announcement);color:#fff}.bd-main .bd-content{justify-content:left}.bd-main .bd-content .bd-article-container{padding:0;overflow-x:unset;min-width:0}@media (min-width:1200px){.bd-main .bd-content .bd-article-container{max-width:calc(100% - var(--pst-sidebar-secondary))}}.bd-main .bd-content .bd-article-container .bd-article{padding-right:2rem;padding-left:2rem}@media (max-width:768px){.bd-main .bd-content .bd-article-container .bd-article{padding-right:1rem;padding-left:1rem}}.bd-main .bd-content .bd-article-container details.above-input summary,.bd-main .bd-content .bd-article-container details.below-input summary{border-left:3px solid var(--pst-color-primary)}@media (min-width:768px){label.sidebar-toggle.primary-toggle{display:inline-block}}@media (max-width:768px){label.sidebar-toggle.primary-toggle{margin-bottom:0}}@media (min-width:992px){label.sidebar-toggle.secondary-toggle{display:none}}@media (max-width:768px){label.sidebar-toggle.secondary-toggle{margin-bottom:0}}.bd-header-article{display:flex;align-items:center;position:sticky;top:0;background-color:var(--pst-color-background);transition:left .2s;font-size:.9em;padding:0 1rem;z-index:1020}@media (max-width:768px){.bd-header-article{padding:0 .5rem;height:3.5rem}}.scrolled .bd-header-article{box-shadow:0 6px 6px -6px var(--pst-color-shadow)}.bd-header-article .header-article__inner{padding:0}.bd-header-article .header-article-items{display:flex;align-items:center;height:3rem;width:100%}.bd-header-article .header-article-item{display:flex;align-items:center}.bd-header-article .article-header-buttons{display:flex}.bd-header-article .btn{font-size:1.3rem;color:var(--pst-color-text-muted);border:none;padding:0 .5rem;display:flex;align-items:center}.bd-header-article .btn svg{width:1.3rem}.bd-header-article .btn.show,.bd-header-article .btn:hover{color:var(--pst-color-text-base);border:none}.bd-header-article .btn.show+.dropdown-menu,.bd-header-article .btn:hover+.dropdown-menu{display:block}.bd-header-article .btn:focus{box-shadow:none}.bd-header-article .btn.dropdown-toggle:after{display:none}.bd-header-article div.dropdown{display:flex;align-items:center}.bd-header-article .theme-switch-button{margin:0}.bd-header-article .theme-switch-button button,.bd-header-article .theme-switch-button i,.bd-header-article .theme-switch-button span{padding:0}.bd-header-article .theme-switch-button i,.bd-header-article .theme-switch-button span{transition:color .25s ease-out}.bd-header-article .theme-switch-button:active,.bd-header-article .theme-switch-button:hover{background-color:unset!important}.bd-header-article .theme-switch-button:active i,.bd-header-article .theme-switch-button:active span,.bd-header-article .theme-switch-button:hover i,.bd-header-article .theme-switch-button:hover span{color:var(--pst-color-text-base)}.bd-header-article .dropdown-menu{top:2rem;transform:translateX(-75%);box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow)!important;border-color:var(--pst-color-border);background-color:var(--pst-color-background);color:var(--pst-color-text-muted)}.bd-header-article .dropdown-menu:hover{display:block}.bd-header-article .dropdown-menu .dropdown-item{display:inline-flex;align-items:center;padding-left:.5em;font-size:1em}.bd-header-article .dropdown-menu .dropdown-item:hover{text-decoration:none;background-color:initial;color:var(--pst-color-text-base)}.bd-header-article .dropdown-menu .dropdown-item span img{height:1em}.bd-header-article .dropdown-menu .dropdown-item span.btn__icon-container{width:1.7em;align-items:center;display:inline-flex;justify-content:center}.bd-header{position:inherit}.bd-header label.sidebar-toggle{display:none}.bd-sidebar-primary{top:0;max-height:100vh;padding:1rem;transition:margin-left .25s ease 0s,opacity .25s ease 0s,visibility .25s ease 0s}@media (max-width:768px){.bd-sidebar-primary{z-index:1081}}.bd-sidebar-primary .sidebar-primary-items__start{border-top:none}@media (min-width:992px){.bd-sidebar-primary{flex-basis:20%}}@media (min-width:992px){input#__primary:checked~.bd-container .bd-sidebar-primary{margin-left:-20%;visibility:hidden;opacity:0}}.bd-sidebar-secondary{top:0}@media (max-width:992px){.bd-sidebar-secondary{z-index:1081}}.bd-sidebar-secondary .sidebar-secondary-items{padding:0;display:flex;gap:.5rem}.bd-sidebar-secondary .sidebar-secondary-items .sidebar-secondary-item{padding-top:0;padding-bottom:0}.bd-sidebar-secondary .onthispage{height:3rem;min-height:3rem;display:flex;gap:.5rem;align-items:center;margin:0;color:var(--pst-color-muted)}@media (min-width:992px){.bd-sidebar-secondary{background:var(--pst-color-background);height:fit-content;transition:max-height .4s ease;z-index:2;padding:0}.bd-sidebar-secondary .toc-item{border-left-color:var(--pst-color-surface);padding-top:0}.bd-sidebar-secondary .toc-item nav.page-toc{margin-bottom:0;transition:opacity .4s ease}.bd-sidebar-secondary.hide:not(:hover){max-height:3rem;overflow-y:hidden}.scrolled .bd-sidebar-secondary.hide:not(:hover){box-shadow:0 6px 6px -6px rgba(0,0,0,.3)}.bd-sidebar-secondary.hide:not(:hover) .onthispage:after{opacity:1;content:"\f107";font-family:Font Awesome\ 5 Free;font-weight:900;padding-left:.5em;transition:opacity .3s ease}.bd-sidebar-secondary.hide:not(:hover) nav.page-toc{opacity:0}}footer{font-size:var(--sbt-font-size-small-1)}footer.bd-footer-content{display:flex;flex-wrap:wrap;padding:15px;border-top:1px solid #ccc;font-size:87.5%}footer.bd-footer-content .bd-footer-content__inner{padding-left:0}footer.bd-footer-content .bd-footer-content__inner p{margin-bottom:0}.bd-footer-article{padding:0 1rem}@media (max-width:768px){.bd-footer-article{padding:0 .5rem}}#pst-back-to-top{font-size:.8rem}@media (min-width:1200px){#pst-back-to-top{display:none!important}}.bd-sidebar-primary .navbar-icon-links{column-gap:.5rem}.bd-sidebar-primary .navbar-icon-links .nav-link i,.bd-sidebar-primary .navbar-icon-links .nav-link span{font-size:1.2rem}.bd-sidebar-primary .navbar-icon-links .nav-link img{font-size:.8rem}.navbar-brand{height:unset;max-height:unset;flex-direction:column;justify-content:center;gap:.25rem}.navbar-brand:hover{text-decoration:none}.navbar-brand .logo__title{font-size:1.25rem;white-space:normal;text-align:center}.navbar-brand .logo__image{height:unset}.bd-search-container{margin:2em}.bd-search-container #search-results h2:first-child{display:none}.search-button-field{width:100%;font-size:.9rem;display:none}.search-button-field .search-button__kbd-shortcut{margin-left:auto}@media (min-width:992px){.search-button{display:none!important}.search-button-field{display:flex}}div#searchbox{padding-right:2rem;padding-left:2rem}@media (max-width:768px){div#searchbox{padding-right:1rem;padding-left:1rem}}@media (min-width:768px){div#searchbox p.highlight-link{margin-left:0}div#searchbox p.highlight-link a{font-size:1rem}}img{max-width:100%}img.align-center{margin-left:auto;margin-right:auto;display:block}img.align-left{clear:left;float:left;margin-right:1em}img.align-right{clear:right;float:right;margin-left:1em}div.figure{width:100%;margin-bottom:1em;text-align:center}div.figure.align-left{text-align:left}div.figure.align-left p.caption{margin-left:0}div.figure.align-right{text-align:right}div.figure.align-right p.caption{margin-right:0}div.figure p.caption{margin:.5em 10%}div.figure.margin-caption p.caption,div.figure.margin p.caption{margin:.5em 0}div.figure.margin-caption p.caption{text-align:left}div.figure span.caption-number{font-weight:700}div.figure span{font-size:.9rem}label.margin-toggle{margin-bottom:0}label.margin-toggle.marginnote-label{display:none}label.margin-toggle sup{user-select:none}@media (max-width:992px){label.margin-toggle{cursor:pointer;color:#0071bc}label.margin-toggle.marginnote-label{display:inline}label.margin-toggle.marginnote-label:after{content:"\2295"}}input.margin-toggle{display:none}@media (max-width:992px){input.margin-toggle:checked+.marginnote,input.margin-toggle:checked+.sidenote{display:block;float:left;left:1rem;clear:both;width:95%;margin:1rem 2.5%;position:relative}}span.marginnote,span.sidenote{z-index:2;position:relative;width:40%;float:right;background-color:unset;font-size:.9em;margin-left:.5rem;border-left:none}span.marginnote sup,span.sidenote sup{user-select:none}@media (min-width:992px),print{span.marginnote,span.sidenote{width:33%;margin:0 -36% 0 0;clear:right}span.marginnote p.sidebar-title,span.sidenote p.sidebar-title{margin-bottom:-1rem;border-bottom:none;padding-left:0}span.marginnote p.sidebar-title~*,span.sidenote p.sidebar-title~*{padding-left:0;padding-right:0}}@media (max-width:992px){span.marginnote,span.sidenote{display:none}}aside.sidebar .note{margin:1rem;padding:0 0 1rem}aside.sidebar .admonition-title{margin:0 -1rem 0 0}aside.sidebar.margin .sidebar-title:empty{display:none}aside.sidebar.margin .admonition{margin:.5rem;padding-left:0;padding-right:0}aside.sidebar.margin .admonition .admonition-title{margin-left:0;margin-right:0}@media (min-width:992px){aside.sidebar.margin{border:none}aside.sidebar.margin .admonition{margin:1rem 0;padding:0 0 1rem}}.cell.tag_margin,.cell.tag_popout,.margin.docutils.container,aside.margin,div.margin,figure.margin{z-index:2;position:relative;width:40%;float:right;background-color:unset;font-size:.9em;margin-left:.5rem}@media (min-width:992px),print{.cell.tag_margin,.cell.tag_popout,.margin.docutils.container,aside.margin,div.margin,figure.margin{width:33%;margin:0 -36% 0 0;clear:right}.cell.tag_margin p.sidebar-title,.cell.tag_popout p.sidebar-title,.margin.docutils.container p.sidebar-title,aside.margin p.sidebar-title,div.margin p.sidebar-title,figure.margin p.sidebar-title{margin-bottom:-1rem;border-bottom:none;padding-left:0}.cell.tag_margin p.sidebar-title~*,.cell.tag_popout p.sidebar-title~*,.margin.docutils.container p.sidebar-title~*,aside.margin p.sidebar-title~*,div.margin p.sidebar-title~*,figure.margin p.sidebar-title~*{padding-left:0;padding-right:0}}.cell.tag_margin div.cell.tag_margin .cell_output,.cell.tag_popout div.cell.tag_margin .cell_output,.margin.docutils.container div.cell.tag_margin .cell_output,aside.margin div.cell.tag_margin .cell_output,div.margin div.cell.tag_margin .cell_output,figure.margin div.cell.tag_margin .cell_output{padding-left:0}div.figure.margin-caption figcaption,div.figure.margin-caption p.caption,figure.margin-caption figcaption{z-index:2;position:relative;width:40%;float:right;background-color:unset;font-size:.9em;margin-left:.5rem}@media (min-width:992px),print{div.figure.margin-caption figcaption,div.figure.margin-caption p.caption,figure.margin-caption figcaption{width:33%;margin:0 -36% 0 0;clear:right}div.figure.margin-caption figcaption p.sidebar-title,div.figure.margin-caption p.caption p.sidebar-title,figure.margin-caption figcaption p.sidebar-title{margin-bottom:-1rem;border-bottom:none;padding-left:0}div.figure.margin-caption figcaption p.sidebar-title~*,div.figure.margin-caption p.caption p.sidebar-title~*,figure.margin-caption figcaption p.sidebar-title~*{padding-left:0;padding-right:0}}.margin-caption figcaption{text-align:left}div.cell.tag_full-width,div.cell.tag_full_width,div.full-width,div.full_width{z-index:2;position:relative}@media (min-width:992px){div.cell.tag_full-width,div.cell.tag_full_width,div.full-width,div.full_width{max-width:136%;width:136%}}blockquote.epigraph,blockquote.highlights,blockquote.pull-quote{font-size:1.25em;border-left:none;background-color:var(--pst-color-background)}blockquote div>p+p.attribution{font-style:normal;font-size:.9em;text-align:right;color:#6c757d;padding-right:2em}div[class*=highlight-],pre{clear:none}div.cell.tag_output_scroll div.cell_output,div.cell.tag_scroll-input div.cell_input,div.cell.tag_scroll-output div.cell_output{max-height:24em;overflow-y:auto}@media only print{div.utterances,hypothesis-sidebar{display:none}}.thebelab-cell{border:none!important;margin-right:.5em!important}.thebelab-cell .thebelab-input{padding-left:10px!important}.cell.docutils.container{padding-right:0!important}button.thebe-launch-button{height:2.5em;font-size:1em} \ No newline at end of file + */html[data-theme=dark],html[data-theme=light]{--pst-font-size-base:none;--pst-color-secondary:#e89217}html[data-theme=light]{--sbt-color-announcement:#616161;--pst-color-primary:#176de8}html[data-theme=dark]{--pst-color-primary:#528fe4;--sbt-color-announcement:#616161;--pst-color-background:#121212}html{scroll-padding-top:4rem}.sbt-scroll-pixel-helper{height:0;left:0;position:absolute;top:0;width:0}.d-n,.onlyprint{display:none}@media print{.onlyprint{display:block!important}.noprint{display:none!important}}.bd-article-container h1,.bd-article-container h2,.bd-article-container h3,.bd-article-container h4,.bd-article-container h5,.bd-article-container p.caption{color:var(--pst-color-muted)}.bd-article-container h1,.bd-article-container h2{font-weight:500}a.brackets:before{color:inherit;font-family:inherit;margin-right:0}table{position:relative}@media print{.bd-main .bd-content{height:auto;margin-left:2rem}.bd-main .bd-content #jb-print-docs-body{margin-left:0}.bd-main .bd-content #jb-print-docs-body h1{font-size:3em;margin-bottom:0;text-align:center}.bd-main .bd-content .bd-article{padding-top:0}.bd-main .bd-content .bd-article h1:first-of-type{display:none}.bd-main .bd-content .container{min-width:0!important}.bd-main .bd-content h1{margin-bottom:1em;margin-top:1em}.bd-main .bd-content h1,.bd-main .bd-content h2,.bd-main .bd-content h3,.bd-main .bd-content h4{break-after:avoid;color:#000}.bd-main .bd-content table{break-inside:avoid}.bd-main .bd-content pre{word-wrap:break-word}.bd-main .bd-content a.headerlink{display:none}.bd-main .bd-content aside.margin,.bd-main .bd-content aside.sidebar,.bd-main .bd-content blockquote.epigraph{border:none}.bd-main .bd-content .footer{margin-top:1em}.bd-main .bd-content #jb-print-toc{margin-bottom:1.5rem;margin-left:0}.bd-main .bd-content #jb-print-toc .section-nav{border-left:0!important;list-style-type:disc!important;margin-left:3em!important}.bd-main .bd-content #jb-print-toc .section-nav a{text-decoration:none!important}.bd-main .bd-content #jb-print-toc .section-nav li{display:list-item!important}.bd-main .bd-content #jb-print-toc .section-nav .nav{display:none}.bd-main .bd-footer-content{display:none!important}}.bd-header-announcement{background-color:var(--sbt-color-announcement);color:#fff}.bd-main .bd-content{justify-content:left}.bd-main .bd-content .bd-article-container{min-width:0;overflow-x:unset;padding:0}@media(min-width:1200px){.bd-main .bd-content .bd-article-container{max-width:calc(100% - var(--pst-sidebar-secondary))}}.bd-main .bd-content .bd-article-container .bd-article{padding-left:2rem;padding-right:2rem}@media(max-width:768px){.bd-main .bd-content .bd-article-container .bd-article{padding-left:1rem;padding-right:1rem}}.bd-main .bd-content .bd-article-container details.above-input summary,.bd-main .bd-content .bd-article-container details.below-input summary{border-left:3px solid var(--pst-color-primary)}@media(min-width:768px){button.sidebar-toggle.primary-toggle{display:inline-block}}@media(max-width:768px){button.sidebar-toggle.primary-toggle{margin-bottom:0}}@media(min-width:1200px){button.sidebar-toggle.secondary-toggle{display:none}}@media(max-width:768px){button.sidebar-toggle.secondary-toggle{margin-bottom:0}}.bd-header-article{align-items:center;background-color:var(--pst-color-background);display:flex;font-size:.9em;padding:0 1rem;position:sticky;top:0;transition:left .2s;z-index:1020}@media(max-width:768px){.bd-header-article{height:3.5rem;padding:0 .5rem}}.scrolled .bd-header-article{box-shadow:0 6px 6px -6px var(--pst-color-shadow)}.bd-header-article .header-article__inner{padding:0}.bd-header-article .header-article-items{align-items:center;display:flex;height:3rem;width:100%}.bd-header-article .header-article-item{align-items:center;display:flex}.bd-header-article .article-header-buttons{display:flex}.bd-header-article .btn{align-items:center;border:none;color:var(--pst-color-text-muted);display:flex;font-size:1.3rem;padding-left:.5rem;padding-right:.5rem}.bd-header-article .btn svg{width:1.3rem}.bd-header-article .btn.show,.bd-header-article .btn:hover{border:none;color:var(--pst-color-text-base)}.bd-header-article .btn.show+.dropdown-menu,.bd-header-article .btn:hover+.dropdown-menu{display:block}.bd-header-article .btn:focus{box-shadow:none}.bd-header-article .btn.dropdown-toggle:after{display:none}.bd-header-article div.dropdown{align-items:center;display:flex}.bd-header-article .theme-switch-button{margin:0}.bd-header-article .theme-switch-button button,.bd-header-article .theme-switch-button i,.bd-header-article .theme-switch-button span{padding:0}.bd-header-article .theme-switch-button i,.bd-header-article .theme-switch-button span{transition:color .25s ease-out}.bd-header-article .theme-switch-button:active,.bd-header-article .theme-switch-button:hover{background-color:unset!important}.bd-header-article .theme-switch-button:active i,.bd-header-article .theme-switch-button:active span,.bd-header-article .theme-switch-button:hover i,.bd-header-article .theme-switch-button:hover span{color:var(--pst-color-text-base)}.bd-header-article .dropdown-menu{background-color:var(--pst-color-background);border-color:var(--pst-color-border);box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow)!important;color:var(--pst-color-text-muted);top:2rem;transform:translateX(-75%)}.bd-header-article .dropdown-menu:hover{display:block}.bd-header-article .dropdown-menu .dropdown-item{align-items:center;display:inline-flex;font-size:1em;padding-left:.5em}.bd-header-article .dropdown-menu .dropdown-item:hover{background-color:initial;color:var(--pst-color-text-base);text-decoration:none}.bd-header-article .dropdown-menu .dropdown-item span img{height:1em}.bd-header-article .dropdown-menu .dropdown-item span.btn__icon-container{align-items:center;display:inline-flex;justify-content:center;width:1.7em}.bd-header{position:inherit}.bd-header button.sidebar-toggle{display:none}.bd-sidebar-primary{max-height:100vh;padding:1rem;top:0;transition:margin-left .25s ease 0s,opacity .25s ease 0s,visibility .25s ease 0s}@media(max-width:768px){.bd-sidebar-primary{z-index:1081}}.bd-sidebar-primary .sidebar-primary-items__start{border-top:none}@media(min-width:992px){.bd-sidebar-primary{flex-basis:20%}input#pst-primary-sidebar-checkbox:checked~.bd-container .bd-sidebar-primary{margin-left:-20%;opacity:0;visibility:hidden}}.bd-sidebar-secondary{top:0}@media(max-width:1200px){.bd-sidebar-secondary{z-index:1081}}.bd-sidebar-secondary .sidebar-secondary-items{display:flex;gap:.5rem;padding:0}.bd-sidebar-secondary .sidebar-secondary-items .sidebar-secondary-item{padding-bottom:0;padding-top:0}.bd-sidebar-secondary .onthispage{align-items:center;color:var(--pst-color-muted);display:flex;gap:.5rem;height:3rem;margin:0;min-height:3rem}@media(min-width:1200px){.bd-sidebar-secondary{background:var(--pst-color-background);height:fit-content;padding:0;transition:max-height .4s ease;z-index:2}.bd-sidebar-secondary .toc-item{border-left-color:var(--pst-color-surface);padding-top:0}.bd-sidebar-secondary .toc-item nav.page-toc{margin-bottom:0;transition:opacity .4s ease}.bd-sidebar-secondary.hide:not(:hover){max-height:3rem;overflow-y:hidden}.scrolled .bd-sidebar-secondary.hide:not(:hover){box-shadow:0 6px 6px -6px rgba(0,0,0,.3)}.bd-sidebar-secondary.hide:not(:hover) .onthispage:after{content:"";font-family:Font Awesome\ 5 Free;font-weight:900;opacity:1;padding-left:.5em;transition:opacity .3s ease}.bd-sidebar-secondary.hide:not(:hover) nav.page-toc{opacity:0}}footer{font-size:var(--sbt-font-size-small-1)}footer.bd-footer-content{border-top:1px solid #ccc;display:flex;flex-wrap:wrap;font-size:87.5%;padding:15px}footer.bd-footer-content .bd-footer-content__inner{padding-left:0}footer.bd-footer-content .bd-footer-content__inner p{margin-bottom:0}.bd-footer-article{padding:0 1rem}@media(max-width:768px){.bd-footer-article{padding:0 .5rem}}#pst-back-to-top{font-size:.8rem}@media(min-width:1200px){#pst-back-to-top{display:none!important}}.bd-sidebar-primary .navbar-icon-links{column-gap:.5rem}.bd-sidebar-primary .navbar-icon-links .nav-link i,.bd-sidebar-primary .navbar-icon-links .nav-link span{font-size:1.2rem}.bd-sidebar-primary .navbar-icon-links .nav-link img{font-size:.8rem}.navbar-brand{flex-direction:column;gap:.25rem;height:unset;justify-content:center;max-height:unset}.navbar-brand:hover{text-decoration:none}.navbar-brand .logo__title{font-size:1.25rem;text-align:center;white-space:normal}.navbar-brand .logo__image{height:unset}.bd-search-container{margin:2em}.bd-search-container #search-results h2:first-child{display:none}.search-button-field{display:none;font-size:.9rem;width:100%}.search-button-field .search-button__kbd-shortcut{margin-left:auto}@media(min-width:992px){.search-button{display:none!important}.search-button-field{display:flex}}div#searchbox{padding-left:2rem;padding-right:2rem}@media(max-width:768px){div#searchbox{padding-left:1rem;padding-right:1rem}}@media(min-width:768px){div#searchbox p.highlight-link{margin-left:0}div#searchbox p.highlight-link a{font-size:1rem}}img{max-width:100%}img.align-center{display:block;margin-left:auto;margin-right:auto}img.align-left{clear:left;float:left;margin-right:1em}img.align-right{clear:right;float:right;margin-left:1em}div.figure{margin-bottom:1em;text-align:center;width:100%}div.figure.align-left{text-align:left}div.figure.align-left p.caption{margin-left:0}div.figure.align-right{text-align:right}div.figure.align-right p.caption{margin-right:0}div.figure p.caption{margin:.5em 10%}div.figure.margin p.caption,div.figure.margin-caption p.caption{margin:.5em 0}div.figure.margin-caption p.caption{text-align:left}div.figure span.caption-number{font-weight:700}div.figure span{font-size:.9rem}label.margin-toggle{margin-bottom:0}label.margin-toggle.marginnote-label{display:none}label.margin-toggle sup{user-select:none}@media(max-width:992px){label.margin-toggle{color:#0071bc;cursor:pointer}label.margin-toggle.marginnote-label{display:inline}label.margin-toggle.marginnote-label:after{content:"⊕"}}input.margin-toggle{display:none}@media(max-width:992px){input.margin-toggle:checked+.marginnote,input.margin-toggle:checked+.sidenote{clear:both;display:block;float:left;left:1rem;margin:1rem 2.5%;position:relative;width:95%}}span.marginnote,span.sidenote{background-color:unset;border-left:none;float:right;font-size:.9em;margin-left:.5rem;position:relative;width:40%;z-index:2}span.marginnote sup,span.sidenote sup{user-select:none}@media(min-width:992px),print{span.marginnote,span.sidenote{clear:right;margin:0 -36% 0 0;width:33%}span.marginnote p.sidebar-title,span.sidenote p.sidebar-title{border-bottom:none;margin-bottom:-1rem;padding-left:0}span.marginnote p.sidebar-title~*,span.sidenote p.sidebar-title~*{padding-left:0;padding-right:0}}@media(max-width:992px){span.marginnote,span.sidenote{display:none}}aside.sidebar .note{margin:1rem;padding:0 0 1rem}aside.sidebar .admonition-title{margin:0 -1rem 0 0}aside.sidebar.margin .sidebar-title:empty{display:none}aside.sidebar.margin .admonition{margin:.5rem;padding-left:0;padding-right:0}aside.sidebar.margin .admonition .admonition-title{margin-left:0;margin-right:0}@media(min-width:992px){aside.sidebar.margin{border:none}aside.sidebar.margin .admonition{margin:1rem 0;padding:0 0 1rem}}.cell.tag_margin,.cell.tag_popout,.margin.docutils.container,aside.margin,div.margin,figure.margin{background-color:unset;float:right;font-size:.9em;margin-left:.5rem;position:relative;width:40%;z-index:2}@media(min-width:992px),print{.cell.tag_margin,.cell.tag_popout,.margin.docutils.container,aside.margin,div.margin,figure.margin{clear:right;margin:0 -36% 0 0;width:33%}.cell.tag_margin p.sidebar-title,.cell.tag_popout p.sidebar-title,.margin.docutils.container p.sidebar-title,aside.margin p.sidebar-title,div.margin p.sidebar-title,figure.margin p.sidebar-title{border-bottom:none;margin-bottom:-1rem;padding-left:0}.cell.tag_margin p.sidebar-title~*,.cell.tag_popout p.sidebar-title~*,.margin.docutils.container p.sidebar-title~*,aside.margin p.sidebar-title~*,div.margin p.sidebar-title~*,figure.margin p.sidebar-title~*{padding-left:0;padding-right:0}}.cell.tag_margin div.cell.tag_margin .cell_output,.cell.tag_popout div.cell.tag_margin .cell_output,.margin.docutils.container div.cell.tag_margin .cell_output,aside.margin div.cell.tag_margin .cell_output,div.margin div.cell.tag_margin .cell_output,figure.margin div.cell.tag_margin .cell_output{padding-left:0}div.figure.margin-caption figcaption,div.figure.margin-caption p.caption,figure.margin-caption figcaption{background-color:unset;float:right;font-size:.9em;margin-left:.5rem;position:relative;width:40%;z-index:2}@media(min-width:992px),print{div.figure.margin-caption figcaption,div.figure.margin-caption p.caption,figure.margin-caption figcaption{clear:right;margin:0 -36% 0 0;width:33%}div.figure.margin-caption figcaption p.sidebar-title,div.figure.margin-caption p.caption p.sidebar-title,figure.margin-caption figcaption p.sidebar-title{border-bottom:none;margin-bottom:-1rem;padding-left:0}div.figure.margin-caption figcaption p.sidebar-title~*,div.figure.margin-caption p.caption p.sidebar-title~*,figure.margin-caption figcaption p.sidebar-title~*{padding-left:0;padding-right:0}}.margin-caption figcaption{text-align:left}div.cell.tag_full-width,div.cell.tag_full_width,div.full-width,div.full_width{position:relative;z-index:2}@media(min-width:992px){div.cell.tag_full-width,div.cell.tag_full_width,div.full-width,div.full_width{max-width:136%;width:136%}}blockquote.epigraph,blockquote.highlights,blockquote.pull-quote{background-color:var(--pst-color-background);border-left:none;font-size:1.25em}blockquote div>p+p.attribution{color:#6c757d;font-size:.9em;font-style:normal;padding-right:2em;text-align:right}div[class*=highlight-],pre{clear:none}div.cell.tag_output_scroll div.cell_output,div.cell.tag_scroll-input div.cell_input,div.cell.tag_scroll-output div.cell_output{max-height:24em;overflow-y:auto}@media only print{div.utterances,hypothesis-sidebar{display:none}}.thebelab-cell{border:none!important;margin-right:.5em!important}.thebelab-cell .thebelab-input{padding-left:10px!important}.cell.docutils.container{padding-right:0!important}button.thebe-launch-button{font-size:1em;height:2.5em} +/*# sourceMappingURL=sphinx-book-theme.css.map*/ \ No newline at end of file diff --git a/_static/styles/sphinx-book-theme.css.map b/_static/styles/sphinx-book-theme.css.map new file mode 100644 index 00000000..be3f1326 --- /dev/null +++ b/_static/styles/sphinx-book-theme.css.map @@ -0,0 +1 @@ +{"version":3,"file":"styles/sphinx-book-theme.css","mappings":"AAAA;;;;;;;EAAA,CC0CA,6CAGE,yBAA0B,CAG1B,6BAA8B,CAKhC,uBAEE,gCAAyC,CAEzC,2BAA4B,CAG9B,sBAEE,2BAA4B,CAG5B,gCAAyC,CAEzC,8BAA+B,CChEjC,KAIE,wBAOF,yBAGE,SAEA,MAAK,CAJL,kBAGA,MAFA,OAGA,CAYF,gBACE,aAEA,aAHF,WAII,wBAKJ,SAEI,uBAPA,CC9BF,6JAME,6BAIF,kDAEE,gBAKJ,kBACE,cACA,oBACA,eAGF,MACE,kBC1BF,aAEI,qBAEE,YADA,gBACA,CAEA,yCACE,cAEA,4CACE,cAEA,eAAc,CADd,iBACA,CAIJ,iCACE,cAGA,kDACE,aAKJ,gCACE,sBAIF,wBAEE,kBADA,cACA,CAEF,gGAIE,kBACA,WAGF,2BACE,mBAGF,yBACE,qBAGF,kCACE,aAIF,8GAGE,YAGF,6BACE,eAGF,mCACE,qBACA,cACA,gDACE,wBACA,+BACA,0BACA,kDACE,+BAEF,mDACE,4BAEF,qDACE,aAOR,4BACE,wBC3FN,wBACE,+CACA,WCFF,qBAEE,qBCFF,2CAME,WAAU,CAFV,iBAFA,SAIA,CAEA,yBARF,2CAUI,qDAGF,uDAEE,kBADA,kBACA,CACA,wBAHF,uDAKI,kBADA,kBACA,EAKF,8IACE,+CCNJ,wBADF,qCAEI,sBAEF,wBAJF,qCAKI,iBAMF,yBADF,uCAEI,cAEF,wBAJF,uCAKI,iBAKJ,mBAEE,mBAGA,6CAJA,aAMA,eACA,eALA,gBACA,MAEA,oBAQA,YPjCc,CO6Bd,wBAVF,mBA5BI,cAwCA,iBAOF,6BACE,kDAIF,0CACE,UAIF,yCAEE,mBADA,aAEA,WP1CoB,CO2CpB,WAIF,wCAEE,mBADA,YACA,CAOF,2CACE,aAIF,wBAUE,mBANA,YADA,kCAMA,aAPA,iBAGA,mBACA,mBAIA,CAGA,4BACE,aAIF,2DAGE,YADA,gCACA,CACA,yFACE,cAGJ,8BACE,gBAKA,8CACE,aAMN,gCAEE,mBADA,YACA,CAGF,wCAEE,SAGA,sIAGE,UAIF,uFAEE,+BAEF,6FAEE,iCACA,wMAEE,iCAMN,kCAaE,6CADA,qCCvJF,+FACE,CDwJA,kCAPA,SACA,0BAMA,CAZA,wCACE,cAaF,iDAEE,mBADA,oBAYA,cAVA,iBAUA,CAPA,uDAEE,yBACA,iCAFA,oBAEA,CAOF,0DACE,WAGF,0EAEE,mBACA,oBACA,uBAHA,WAGA,CEvMR,WAEE,iBAIA,iCACE,aCHJ,oBAGE,iBAGA,aAJA,MAOA,gFACE,CAIF,wBAdF,oBAgBI,cAIF,kDACE,gBAIF,wBAzBF,oBA0BI,cVF+B,CUUjC,6EAGE,iBAEA,SAAQ,CADR,iBACA,CVf+B,CWxBnC,sBAEE,MAEA,yBAJF,sBAMI,cAIF,+CAEE,aACA,UAFA,SAEA,CAGA,uEAEE,gBAAe,CADf,aACA,CAKJ,kCAKE,mBAEA,6BAJA,aACA,UAHA,WXDoB,CWMpB,SAJA,eAKA,CAIF,yBAlCF,sBAmCI,uCACA,mBAOA,SAAQ,CANR,+BAGA,SAGA,CAGA,gCAEE,2CAEA,cAGA,6CAEE,gBAGA,4BAMJ,uCAEE,eX3CkB,CW4ClB,kBAGA,iDACE,yCAIF,yDAEE,YACA,iCACA,gBAHA,UAIA,kBACA,4BAIF,oDACE,WCvFR,OACE,uCACA,yBAIE,0BAHA,aACA,eAGA,gBAFA,YZ6BoB,CY1BpB,mDACE,eACA,qDACE,gBCdR,mBACE,eACA,wBAFF,mBAII,iBCJJ,iBASE,gBALA,yBAJF,iBAKI,wBCDF,uCACE,iBAIE,yGAEE,iBAIF,qDACE,gBChBR,cAKE,sBAEA,WANA,aAKA,uBAJA,gBAKA,CAGA,oBACE,qBAEF,2BACE,kBAEA,kBADA,kBACA,CAGF,2BACE,aCnBJ,qBACE,WAGE,oDACE,aAMN,qBAIE,aAFA,gBADA,UAGA,CAEA,kDACE,iBAKJ,wBACE,eACE,uBAGF,qBACE,cAMJ,cAEE,kBADA,kBACA,CACA,wBAHF,cAKI,kBADA,kBACA,EAKA,wBAFF,+BAGI,cACA,iCACE,gBChDR,IACE,eAEA,iBAGE,cAFA,iBACA,iBACA,CAGF,eACE,WACA,WACA,iBAGF,gBACE,YACA,YACA,gBAKJ,WAEE,kBACA,kBAFA,UAEA,CAEA,sBACE,gBACA,gCACE,cAGJ,uBACE,iBACA,iCACE,eAIJ,qBACE,gBAKA,gEACE,cAIJ,oCACE,gBAGF,+BACE,gBAGF,gBACE,gBCHJ,oBACE,gBACA,qCACE,aAEF,wBACE,iBAEF,wBARF,oBAUI,cADA,cACA,CACA,qCACE,eACA,2CACE,aAMR,oBACE,aACA,wBACE,8EAKE,WAHA,cACA,WACA,UAGA,iBACA,kBAFA,SAEA,EAKN,8BAlEE,uBA0EA,iBA3EA,YAEA,eACA,kBAmEA,kBAvEA,UAsEA,SAMA,CAJA,sCACE,iBAlEF,8BA6DF,8BAxDI,YAHA,kBADA,SAIA,CAEA,8DAEE,mBADA,oBAEA,eAGA,kEACE,eACA,iBAuDN,wBATF,8BAUI,cAKF,oBAEE,YACA,iBAGF,gCACE,mBAWF,0CACE,aAMF,iCACE,aACA,eACA,gBAGA,mDACE,cACA,eAIJ,wBAtBF,qBAwBI,YAGA,iCACE,cACA,kBAKN,mGAlIE,uBADA,YAEA,eACA,kBAuIA,kBA3IA,UA0IA,SAtIA,CAGA,8BA6HF,mGAxHI,YAHA,kBADA,SAIA,CAEA,mMAEE,mBADA,oBAEA,eAGA,+MACE,eACA,iBAyHN,ySACE,eAKJ,0GAnJE,uBADA,YAEA,eACA,kBAqJA,kBAzJA,UAwJA,SApJA,CAGA,8BA8IF,0GAzII,YAHA,kBADA,SAIA,CAEA,0JAEE,mBADA,oBAEA,eAGA,gKACE,eACA,iBAwIR,2BACE,gBAUF,8EAKE,kBADA,SACA,CACA,wBANF,8EAOI,cATsB,CAUtB,UAVsB,EC7LxB,gEAKE,6CADA,iBADA,gBAEA,CAGF,+BAIE,cAFA,eADA,kBAIA,kBAFA,gBAEA,CCjBJ,2BAEE,WCIF,+HACE,gBACA,gBCFF,kBACE,kCAEE,cCNJ,eACE,sBACA,4BAGF,+BACE,4BAGF,yBACE,0BAGF,2BAEE,cADA,YACA","sources":["webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/index.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/abstracts/_variables.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/base/_base.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/base/_typography.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/base/_print.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/sections/_announcement.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/sections/_article.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/sections/_article-container.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/sections/_header-article.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/abstracts/_mixins.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/sections/_header-primary.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/sections/_sidebar-primary.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/sections/_sidebar-secondary.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/sections/_footer-content.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/sections/_footer-article.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/components/_back-to-top.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/components/_icon-links.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/components/_logo.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/components/_search.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/content/_images.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/content/_margin.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/content/_quotes.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/content/_code.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/content/_notebooks.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/extensions/_comments.scss","webpack://sphinx_book_theme/./src/sphinx_book_theme/assets/styles/extensions/_thebe.scss"],"sourcesContent":["/*! sphinx-book-theme CSS\n * BSD 3-Clause License\n * Copyright (c) 2020, EBP\n * All rights reserved.\n *\n * This follows the 7-1 pattern described here:\n * https://sass-guidelin.es/#architecture\n */\n// Variables and re-usable SCSS functions\n@import \"abstracts/mixins\";\n@import \"abstracts/variables\";\n\n// Basic styling applied throughout site\n@import \"base/base\";\n@import \"base/typography\";\n@import \"base/print\";\n\n// Major theme layout, skeleton, and whitespace\n@import \"sections/announcement\";\n@import \"sections/article\";\n@import \"sections/article-container\";\n@import \"sections/header-article\";\n@import \"sections/header-primary\";\n@import \"sections/sidebar-primary\";\n@import \"sections/sidebar-secondary\";\n@import \"sections/footer-content\";\n@import \"sections/footer-article\";\n\n// Re-usable components across the theme\n@import \"components/back-to-top\";\n@import \"components/icon-links\";\n@import \"components/logo\";\n@import \"components/search\";\n\n// Content blocks in standard Sphinx\n@import \"content/images\";\n@import \"content/margin\";\n@import \"content/quotes\";\n@import \"content/code\";\n@import \"content/notebooks\";\n\n// Content blocks from Sphinx extensions\n\n@import \"extensions/comments\";\n@import \"extensions/thebe\";\n","/*********************************************\n* Variables *\n*********************************************/\n// Breakpoints from Bootstrap: https://getbootstrap.com/docs/5.0/layout/breakpoints/\n$breakpoint-xxl: 1200px;\n$breakpoint-xl: 1200px;\n$breakpoint-lg: 992px;\n$breakpoint-md: 768px;\n$breakpoint-sm: 576px;\n\n// A few semantic z-indices\n$zindex-bottom: 1;\n$zindex-middle: 2;\n$zindex-top: 3;\n\n// Semantic Z-index from bootstrap. Copied here so we can re-use if needed.\n// ref: https://getbootstrap.com/docs/5.0/layout/z-index/\n$zindex-dropdown: 1000;\n$zindex-sticky: 1020;\n$zindex-fixed: 1030;\n$zindex-modal-backdrop: 1040;\n$zindex-offcanvas: 1050;\n$zindex-modal: 1060;\n$zindex-popover: 1070;\n$zindex-tooltip: 1080;\n\n// Spacing\n$header-article-height: 3rem;\n$sidebar-primary-width-widescreen: 20%;\n$toc-width-mobile: 75%;\n\n// Consistent styling for page elements\n$box-border-radius: 0.4em;\n\n$animation-time: 0.25s;\n\n// Font sizes\n$sbt-font-size-small-1: 87.5%;\n\n/**\n * Variables that aren't impacted by light/dark\n */\nhtml[data-theme=\"light\"],\nhtml[data-theme=\"dark\"] {\n // Over-ride the pydata theme so that readers can use their system base\n --pst-font-size-base: none;\n // Default secondary color (has enough contrast on both light/dark so\n // no need to special case.\n --pst-color-secondary: #e89217;\n}\n\n// Overrides for pydata sphinx theme.\n// See https://github.com/pydata/pydata-sphinx-theme/blob/master/pydata_sphinx_theme/static/css/theme.css\nhtml[data-theme=\"light\"] {\n // Announcement\n --sbt-color-announcement: rgb(97, 97, 97);\n // Default primary color (need to adjust on dark theme due to bad contrast)\n --pst-color-primary: #176de8;\n}\n\nhtml[data-theme=\"dark\"] {\n // Slightly lighten these colors to make them stand out more on dark\n --pst-color-primary: #528fe4;\n\n // Over-ride the purple announcement color\n --sbt-color-announcement: rgb(97, 97, 97);\n // Desaturate the background\n --pst-color-background: #121212;\n}\n","/**\n * General structural things\n */\nhtml {\n // The PyData theme value for this is based on `header-height` variable.\n // We set the variable to 0 and have our own $article-header-height SCSS variable.\n // So here we follow the same pattern but now using our variable.\n scroll-padding-top: $header-article-height + 1rem;\n}\n\n/**\n* Utility classes used in a few places\n*/\n// For the helper pixel that we can watch to decide whether we've scrolled\n.sbt-scroll-pixel-helper {\n position: absolute;\n width: 0px;\n height: 0px;\n top: 0;\n left: 0;\n}\n\n// We define our own display-none class since bootstrap uses !important and we want to be able to over-ride\n.d-n {\n display: none;\n}\n\n/**\n * Printing behavior\n */\n// Only display upon printing\n.onlyprint {\n display: none;\n\n @media print {\n display: block !important;\n }\n}\n\n// Prevent an item from being printed\n.noprint {\n @media print {\n display: none !important;\n }\n}\n","/*********************************************\n* Basic text formatting and content structure *\n*********************************************/\n\n.bd-article-container {\n h1,\n h2,\n h3,\n h4,\n h5,\n p.caption {\n color: var(--pst-color-muted);\n }\n\n // Top two headers are slightly bolder\n h1,\n h2 {\n font-weight: 500;\n }\n}\n\n// counteracting pydata style on a::before, for citation style\na.brackets::before {\n color: inherit;\n font-family: inherit;\n margin-right: 0rem;\n}\n\ntable {\n position: relative;\n}\n","/*********************************************\n* Print-specific CSS *\n*********************************************/\n@media print {\n .bd-main {\n .bd-content {\n margin-left: 2rem;\n height: auto;\n // Structural elements\n #jb-print-docs-body {\n margin-left: 0rem;\n\n h1 {\n font-size: 3em;\n text-align: center;\n margin-bottom: 0;\n }\n }\n // Main content adjustments\n .bd-article {\n padding-top: 0;\n\n // The first H1 is the title, we've already displayed above\n h1:first-of-type {\n display: none;\n }\n }\n\n // HACK: Without this, some code cells take the whole width\n .container {\n min-width: 0% !important;\n }\n\n // Content\n h1 {\n margin-top: 1em;\n margin-bottom: 1em;\n }\n h1,\n h2,\n h3,\n h4 {\n break-after: avoid;\n color: black;\n }\n\n table {\n break-inside: avoid;\n }\n\n pre {\n word-wrap: break-word;\n }\n\n a.headerlink {\n display: none;\n }\n\n // Remove borders to save some ink\n blockquote.epigraph,\n aside.margin,\n aside.sidebar {\n border: none;\n }\n\n .footer {\n margin-top: 1em;\n }\n // Print-only table of contents\n #jb-print-toc {\n margin-bottom: 1.5rem;\n margin-left: 0rem;\n .section-nav {\n border-left: 0px !important;\n list-style-type: disc !important;\n margin-left: 3em !important;\n a {\n text-decoration: none !important;\n }\n li {\n display: list-item !important;\n }\n .nav {\n display: none;\n }\n }\n }\n }\n\n // Hide the footer on printing\n .bd-footer-content {\n display: none !important;\n }\n }\n}\n",".bd-header-announcement {\n background-color: var(--sbt-color-announcement);\n color: #fff;\n}\n",".bd-main .bd-content {\n // make article container left aligned in absence of sidebar\n justify-content: left;\n}\n",".bd-main .bd-content .bd-article-container {\n // Re-adjust padding defaults to be flush on the top and right\n padding: 0rem;\n // Unset overflow x so that sticky: top works for the article header\n overflow-x: unset;\n // prevent from overflowing the flex container\n min-width: 0;\n\n @media (min-width: $breakpoint-xl) {\n // keep article at reasonable width in absence of sidebar\n max-width: calc(100% - var(--pst-sidebar-secondary));\n }\n\n .bd-article {\n padding-right: 2rem;\n padding-left: 2rem;\n @media (max-width: $breakpoint-md) {\n padding-right: 1rem;\n padding-left: 1rem;\n }\n }\n details.above-input,\n details.below-input {\n summary {\n border-left: 3px solid var(--pst-color-primary);\n }\n }\n}\n","/*********************************************\n* Top Bar *\n*********************************************/\n/**\n * Mixin:\n * Header behavior on mobile\n */\n@mixin header-height-mobile {\n @media (max-width: $breakpoint-md) {\n height: $header-article-height + 0.5rem;\n }\n}\n\n/**\n * Sidebar toggle over-rides for PST\n */\n// Primary toggle is always visible\nbutton.sidebar-toggle.primary-toggle {\n @media (min-width: $breakpoint-md) {\n display: inline-block;\n }\n @media (max-width: $breakpoint-md) {\n margin-bottom: 0px;\n }\n}\n\n// Secondary toggle mimics behavior of \"persistent header\" div of PST\nbutton.sidebar-toggle.secondary-toggle {\n @media (min-width: $breakpoint-xl) {\n display: none;\n }\n @media (max-width: $breakpoint-md) {\n margin-bottom: 0px;\n }\n}\n\n// Wrapper container\n.bd-header-article {\n display: flex;\n align-items: center;\n position: sticky;\n top: 0;\n background-color: var(--pst-color-background);\n transition: left 0.2s;\n font-size: 0.9em;\n padding: 0 1rem;\n\n @media (max-width: $breakpoint-md) {\n // Give mobile view a bit more space for text\n padding: 0 0.5rem;\n }\n z-index: $zindex-sticky;\n\n @include header-height-mobile;\n\n // The box shadow that shows up when you've scrolled past the top\n .scrolled & {\n box-shadow: 0 6px 6px -6px var(--pst-color-shadow);\n }\n\n // Remove inner padding so that spacing of buttons is a bit tighter\n .header-article__inner {\n padding: 0;\n }\n\n // Inner container with items in it\n .header-article-items {\n display: flex;\n align-items: center;\n height: $header-article-height;\n width: 100%;\n }\n\n // Contains the individual item components so we want it centered\n .header-article-item {\n display: flex;\n align-items: center;\n }\n\n /**\n * Buttons in the header\n */\n // A series of buttons we special-case in the theme\n .article-header-buttons {\n display: flex;\n }\n\n // Generic button styles\n .btn {\n // Basic button size\n font-size: 1.3rem;\n color: var(--pst-color-text-muted);\n border: none;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n\n // Make sure anything inside is aligned vertically\n display: flex;\n align-items: center;\n\n // Fix width of buttons so they're all the same\n svg {\n width: 1.3rem;\n }\n\n // Hover / active behavior\n &.show,\n &:hover {\n color: var(--pst-color-text-base);\n border: none;\n & + .dropdown-menu {\n display: block;\n }\n }\n &:focus {\n box-shadow: none;\n }\n\n &.dropdown-toggle {\n // Hide the bootstrap caret\n &:after {\n display: none;\n }\n }\n }\n\n // Vertically align dropdown buttons\n div.dropdown {\n display: flex;\n align-items: center;\n }\n\n .theme-switch-button {\n // Removing some special-casing that was needed in PST\n margin: 0;\n\n // Remove extra padding since it is already there between sidebar items\n span,\n i,\n button {\n padding: 0;\n }\n\n // No background on hover. Need important to over-ride the PST which uses it too.\n span,\n i {\n transition: color $animation-time ease-out;\n }\n &:active,\n &:hover {\n background-color: unset !important;\n span,\n i {\n color: var(--pst-color-text-base);\n }\n }\n }\n\n // The menu that is normally hidden until you hover\n .dropdown-menu {\n // Hidden unless we are hovering\n &:hover {\n display: block;\n }\n\n // Positioning and layout of dropdown items to be standardized\n top: 2rem;\n transform: translateX(-75%);\n @include pst-box-shadow;\n\n // Color and shadowing\n border-color: var(--pst-color-border);\n background-color: var(--pst-color-background);\n color: var(--pst-color-text-muted);\n\n .dropdown-item {\n display: inline-flex;\n align-items: center;\n padding-left: 0.5em;\n\n // To prevent link underline from showing up\n &:hover {\n text-decoration: none;\n background-color: initial;\n color: var(--pst-color-text-base);\n }\n\n // Slightly smaller font for everything\n font-size: 1em;\n\n // Image icons should be the same height as icons\n span img {\n height: 1em;\n }\n\n span.btn__icon-container {\n width: 1.7em;\n align-items: center;\n display: inline-flex;\n justify-content: center;\n }\n }\n }\n}\n","/*********************************************\n* SASS Mixins\n*********************************************/\n/**\n* Hide the scrollbar until the element is hovered, so keep the page clean\n* Use this sparingly because it's not a great UX pattern.\n*/\n@mixin scrollbar-on-hover() {\n &:not(:hover) {\n &::-webkit-scrollbar-thumb {\n visibility: hidden;\n }\n }\n}\n\n/**\n * The PyData Sphinx Theme box shadow rule\n * Copied here in csae we need to re-use.\n*/\n@mixin pst-box-shadow() {\n box-shadow:\n 0 0.2rem 0.5rem var(--pst-color-shadow),\n 0 0 0.0625rem var(--pst-color-shadow) !important;\n}\n",".bd-header {\n // Turn off sticky positioning so that it scrolls\n position: inherit;\n\n // Turn these off because we'll show it in the article header\n // The primary sidebar toggle\n button.sidebar-toggle {\n display: none;\n }\n}\n","/*********************************************\n* Left Nav Bar *\n*********************************************/\n\n.bd-sidebar-primary {\n // So that it sticks to the top of the page instead of the header height\n top: 0;\n max-height: 100vh;\n\n // Tighter padding so the spacing is more equal\n padding: 1rem;\n\n // Draw open/close animation\n transition:\n margin-left $animation-time ease 0s,\n opacity $animation-time ease 0s,\n visibility $animation-time ease 0s;\n\n @media (max-width: $breakpoint-md) {\n // So that tooltips don't overlap\n z-index: $zindex-tooltip + 1;\n }\n\n // Remove the top border since there's often no header items above\n .sidebar-primary-items__start {\n border-top: none;\n }\n\n // On wide screens we have a smaller sidebar width than PST\n @media (min-width: $breakpoint-lg) {\n flex-basis: $sidebar-primary-width-widescreen;\n }\n}\n\n// Default visibility for left sidebar is the reverse of what it is on mobile.\n// It is shown by default, and hidden with a click.\n// Mobile behavior is defined in the pydata sphinx theme\n@media (min-width: $breakpoint-lg) {\n input#pst-primary-sidebar-checkbox:checked\n ~ .bd-container\n .bd-sidebar-primary {\n margin-left: -$sidebar-primary-width-widescreen;\n visibility: hidden;\n opacity: 0;\n }\n}\n","/*********************************************\n* Table of Contents (right nav bar) *\n*********************************************/\n\n.bd-sidebar-secondary {\n // So that it sticks to the top of the page instead of the header height\n top: 0;\n\n @media (max-width: $breakpoint-xl) {\n // So that tooltips don't overlap\n z-index: $zindex-tooltip + 1;\n }\n\n // So that we can center the TOC button with the article header buttons\n .sidebar-secondary-items {\n padding: 0;\n display: flex;\n gap: 0.5rem;\n\n // Remove the manual padding since we'll use `gap`\n .sidebar-secondary-item {\n padding-top: 0;\n padding-bottom: 0;\n }\n }\n\n // The 'on this page' title div should take up the full header\n .onthispage {\n height: $header-article-height;\n min-height: $header-article-height;\n display: flex;\n gap: 0.5rem;\n align-items: center;\n margin: 0;\n color: var(--pst-color-muted);\n }\n\n // Wide screen behavior\n @media (min-width: $breakpoint-xl) {\n background: var(--pst-color-background);\n height: fit-content;\n transition: max-height 0.4s ease;\n\n // To make sure it shows above the page content\n z-index: $zindex-middle;\n\n // Remove padding so that it's flush on the top and left\n padding: 0;\n\n // This is the container div for the secondary sidebar nav\n .toc-item {\n // Border is a bit less prominent\n border-left-color: var(--pst-color-surface);\n // Flush with the top so that we can fix the height of the toc header div\n padding-top: 0;\n\n // The table of contents