Saravanan666/pypi-org huggingface dataset:
Package: pyerrors
pyerrorspyerrorsis a python framework for error computation and propagation of Markov chain Monte Carlo data from lattice field theory and statistical mechanics simulations.Documentation:https://fjosw.github.io/pyerrors/pyerrors.htmlExamples:https://github.com/fjosw/pyerrors/tree/develop/examplesAsk a question:https://github.com/fjosw/pyerrors/discussions/new?category=q-aChangelog:https://github.com/fjosw/pyerrors/blob/develop/CHANGELOG.mdBug reports:https://github.com/fjosw/pyerrors/issuesInstallationInstall the most recent release using pip andpypi:python-mpipinstallpyerrors# Fresh installpython-mpipinstall-Upyerrors# UpdateInstall the most recent release using conda andconda-forge:condainstall-cconda-forgepyerrors# Fresh installcondaupdate-cconda-forgepyerrors# UpdateContributingWe appreciate all contributions to the code, the documentation and the examples. If you want to get involved please have a look at ourcontribution guideline.Citing pyerrorsIf you usepyerrorsfor research that leads to a publication we suggest citing the following papers:Fabian Joswig, Simon Kuberski, Justus T. Kuhlmann, Jan Neuendorf,pyerrors: a python framework for error analysis of Monte Carlo data. Comput.Phys.Commun. 288 (2023) 108750.Ulli Wolff,Monte Carlo errors with less errors. Comput.Phys.Commun. 156 (2004) 143-153, Comput.Phys.Commun. 176 (2007) 383 (erratum).Alberto Ramos,Automatic differentiation for error analysis of Monte Carlo data. Comput.Phys.Commun. 238 (2019) 19-35.Stefan Schaefer, Rainer Sommer, Francesco Virotta,Critical slowing down and error analysis in lattice QCD simulations. Nucl.Phys.B 845 (2011) 93-119.
Package: pyersinia
pyersinia=========![Logo](https://raw.githubusercontent.com/abirtone/STB/master/stb_lib/doc/images/logo.png)*pyersinia: Herramienta para ataques de capa de enlace*Code | https://github.com/nottinghamprisateam/pyersinia---- | ----------------------------------------------Issues | https://github.com/nottinghamprisateam/pyersinia/issues/Python version | Python 3 & 2What's pyersinia----------------Framework realizado en python utilizando la libreria scapy para implementar ataques a protocolos de la capa de enlace.What's new?-----------This pyersinia version, add a lot of new features and fixes, like:Version 1.0.0+++++++++++++- First version releasedYou can read entire list in CHANGELOG file.Installation------------Install pyersinia is so easy:```$ python -m pip install pyersinia```**Remember that pyersinia only runs in Python 3**.Quick start-----------You can display inline help writing:```bashpython pyersinia.py -h```Advanced options----------------There are the advanced options:- **-v**, **-vv**, **-vvv**: Enable verbose mode.References----------* OMSTD (Open Methodology for Security Tool Developers): http://omstd.readthedocs.org* STB (Security Tool Builder): https://github.com/abirtone/STB
Package: pyes
Web:http://pypi.python.org/pypi/pyes/Download:http://pypi.python.org/pypi/pyes/Source:http://github.com/aparo/pyes/Documentation:http://pyes.rtfd.org/Keywords:search, elastisearch, distribute search–[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/aparo/pyes?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)pyes is a pythonic way to use ElasticSearch since 2010.This version requires elasticsearch 1.x or above. It’s a pre release for pyes 1.x. Give a look to migrations documentation to upgrade you code for ElasticSearch 1.x.We are working to provide full support to ElasticSearch 1.x (check the develop branch: we are using the git-flow workflow) that’ll have:connection based on Official ElasticSearch client ??full support to ElasticSearch 1.x (removed old support due incompatibility with old version of ES)migration from multi_field to >field>.fieldsrefactory of old code to be more pythonicperformance improvementsFeaturesPython3 support (only HTTP, thrift lib is not available on python3)Thrift/HTTP protocolsBulk insert/deleteIndex managementEvery search query typesFacet SupportAggregation SupportGeolocalization supportHighlightingPercolatorRiver supportChangelog0.99.0:Migrated many code to ElasticSearch 1.xFull coverage for actual queries0.99:Added aggregationFix for python3 compatibilityUpgraded code to use ElasticSearch 1.x or above0.90.1:Bug Fix releases for some python3 introduced regression0.90.0:A lot of improvements.Python 3 support.Migration to version 0.99CustomScoreQuery has been removed. The FunctionScoreQuery with its functions cover the previous functionalities.
For scripting use ScriptScoreFunction.TODOmuch more documentationadd coverageadd jython native client protocolLicenseThis software is licensed under theNew BSD License. See theLICENSEfile in the top distribution directory for the full license text.
Package: pyesasky
pyESASkyWelcome to the ESASky Jupyter widget page.RequirementsJupytercomes together with anaconda.Installation$pipinstallpyesaskypyesasky in Jupyter lab$jupyterlabextensioninstallpyesaskyIn some cases you might also have to run these 2 commands to enable PyESASky in Jupyter$jupyternbextensioninstall--pypyesasky--sys-prefix
$jupyternbextensionenable--pypyeasky--sys-prefixIn order to be able to run pyesasky in Jupyter lab it is necessary to install the labextension ivywidgets by the following command:$jupyterlabextensioninstall@jupyter-widgets/jupyterlab-managerNOTE that this requiresnode.jsto be installed.If you use conda, you can get it with:condainstall-cconda-forgenodejsIf you use Homebrew on Mac OS X:brewinstallnodeYou can also downloadNode.jsfrom the Node.js websitehttps://nodejs.org/and install it directly.Running pyESASky samples:Multiple sample notebooks of the functionality in pyESASky can be found inhttps://github.com/esdc-esac-esa-int/pyesasky/tree/master/samplesFor the basic functionalities, open the pyESASky-Basic.ipynb. To check how to overlay a catalogue, run the pyESASky-Catalogue.ipynb. To overlay a set of footprints, open pyESASky-Footprints.ipynb .Run pyesaskyIn general, it is possible to instantiate pyESASky by running the folowing code in your Jupyter Notebook.frompyesaskyimportESASkyWidgetesasky=ESASkyWidget()esaskyTo be able to use catalogue features, the following additional classes must be imported:frompyesaskyimportCataloguefrompyesaskyimportCatalogueDescriptorfrompyesaskyimportMetadataDescriptorfrompyesaskyimportMetadataTypeTo be able to use footprints features, the following additional classes must be imported:frompyesaskyimportFootprintSetfrompyesaskyimportFootprintSetDescriptorfrompyesaskyimportMetadataDescriptorfrompyesaskyimportMetadataTypeSource code installationFor a development installation (requires npm),$gitclonehttps://github.com/esdc-esac-esa-int/pyesasky
$cdpyesasky
$shinstall.sh
Package: pyescape
EscapeEscapeis a package handling charactersthat should be escaped such as: '" \n\t.Installationpipinstallpyescape-URequirementsPython 3.6+FeaturesEscape classUsagefromosimportsystemfromescapeimportEscapefromsysimportexecutableescape=Escape('"\'')executable='"'+executable+'"'# python executable with special characterssystem(executable+' -c "print(\'hello world\')"')
Package: pyesdoc
Python client for the esdoc eco-system, more commonly referred to as pyesdoc.What is ES-DOC ?ES-DOC stands for Earth Science - Documentation.  It’s goal is to provide software tools and services in order to support the distribution of earth science documentation.What is pyesdoc ?pyesdoc is a python client library for exploiting the ES-DOC eco-system.  It supports documentation creation, validation, serialization, publishing, I/O & search use cases.Why pyesdoc ?A documentation eco-system is only as good as the available client tools.  ES-DOC provides the pyesdoc client tool so as to simplify leveraging the ES-DOC eco-ssytem in the python programming language.Who uses pyesdoc ?Developers building value added software ontop of the ES-DOC eco-system.Further Information ?Seehttp:es-doc.org.
Package: pyesef
pyesefA library for extracting XBRL-files in the ESEF-format using theArelle module.How to useDownload XBRL-reports in a zip-format and place them in thearchivesfolder. Then runpython3 pyesef -eto export all facts to a CSV-file.Interesting resources:https://filings.xbrl.org/: a list of available financial reports for European companies, per country.
Package: pyes-fatisar
Web:http://pypi.python.org/pypi/pyes/Download:http://pypi.python.org/pypi/pyes/Source:http://github.com/aparo/pyes/Documentation:http://pyes.rtfd.org/Keywords:search, elastisearch, distribute search–[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/aparo/pyes?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)pyes is a pythonic way to use ElasticSearch since 2010.This version requires elasticsearch 1.x or above. It’s a pre release for pyes 1.x. Give a look to migrations documentation to upgrade you code for ElasticSearch 1.x.We are working to provide full support to ElasticSearch 1.x (check the develop branch: we are using the git-flow workflow) that’ll have:connection based on Official ElasticSearch client ??full support to ElasticSearch 1.x (removed old support due incompatibility with old version of ES)migration from multi_field to >field>.fieldsrefactory of old code to be more pythonicperformance improvementsFeaturesPython3 support (only HTTP, thrift lib is not available on python3)Thrift/HTTP protocolsBulk insert/deleteIndex managementEvery search query typesFacet SupportAggregation SupportGeolocalization supportHighlightingPercolatorRiver supportChangelog0.99.0:Migrated many code to ElasticSearch 1.xFull coverage for actual queries0.99:Added aggregationFix for python3 compatibilityUpgraded code to use ElasticSearch 1.x or above0.90.1:Bug Fix releases for some python3 introduced regression0.90.0:A lot of improvements.Python 3 support.Migration to version 0.99CustomScoreQuery has been removed. The FunctionScoreQuery with its functions cover the previous functionalities.
For scripting use ScriptScoreFunction.TODOmuch more documentationadd coverageadd jython native client protocolLicenseThis software is licensed under theNew BSD License. See theLICENSEfile in the top distribution directory for the full license text.
Package: pyESI
pyESI: Ensemble Spatial Interpolation with PythonWhat is it?pyESIis a Python package that provides an implementation for Ensemble
Spatial Interpolation method. It aims to be an easy-to-use alternative to
traditional spatial interpolators in Python.Where to get itThe source code is currently hosted on GitHub at:https://github.com/alges/pyESIBinary installers for the latest released version are available at thePython
Package Index (PyPI).PyPIpipinstallpyESIDependenciesNumPy - Powerful n-dimensional arrays and numerical computing toolspandas - Fast, powerful, flexible and easy to use open source data analysis and manipulation toolLicenseMITAcknowledgePlease cite the following paper when publishing work relating this code:@inproceedings{egana2021,
  Author = {},
  Title = {},
  Booktitle = {},
  Series = {},
  Year = {2021},
  doi = {},
  pages = {1--12}
}
Package: pyesios
ESIOSAccess to the ESIOS data, the Spanish electricity market entity, in python 3
(python 2.7 might work but it is not supported)This API is made to make it painless to access the market published data.First you need a token string. You should ask for yours to: Consultas Siosconsultasios@ree.esIt looks like this'615e6d8c80629b8eef25c8f3d0c36094e23db4ed50ce5458f3462129d7c46dba'To use the ESIOS module, just do:from ESIOS import *

token = '615e6d8c80629b8eef25c8f3d0c36094e23db4ed50ce5458f3462129d7c46dba'

esios = ESIOS(token)

indicators_ = [1293, 600]  # demand (MW) and SPOT price (€)

names = esios.get_names(indicators_)

dfmul, df_list, names = esios.get_multiple_series(indicators_, start_, end_)
df = dfmul[names]  # get the actual series and neglect the rest of the infoThis is an example of what you can get:If you have any suggestion please write to:santiago.penate.vera@gmail.com(Español e Inglés)To install ESIOS packagepip install pyesios

# To build the graphs in the examples
pip install pyesios[graphs]ContribuitingWARNINGThe API is having troubles with request made from 2022 on, There is a limiter in place to not go to those dates.
Package: pyesp
pyesp included:
pyesp - command line toolexample 1: $ pyesp –help
— display help for pyesp toolexample 2: $ pyesp –platform MPY –command listdir
— Listed files/directories on EPS8266 file systemexample 3: $ pyesp -p MPY -c listdir -d example
— Listed files/directories on EPS8266 file system from ‘./example’ directoryexample 4: $ pyesp -p MPY -c fileread -f sht21.py
— Read file ‘sht21.py’ from EPS8266 file systemexample 5: $ pyesp -p MPY -c fileread -f main.py,sht21.py,lm75.py
— Read files [ main.py, sht21.py, lm75.py ] from EPS8266 file systemexample 6: $ pyesp -p MPY -c filewrite -f main.py –data  import osrn import machine
— Create file ‘main.py’ on EPS8266 and write ‘import osrn import machine
Package: py-espeak-ng
Some simple wrappers around eSpeak NG intended to make using this
excellent TTS for waveform and IPA generation as convenient as possible.Target audience are developers who would like to use eSpeak NG as-is for
speech synthesis in their Python application on GNU/Linux operating
systems.Constructive comments, patches and pull-requests are very welcome.Examples### Direct TTS Audio OutputFirst, import the ESpeakNG engine wrapper:from espeakng import ESpeakNGnow for some simple direct TTS output:esng = ESpeakNG()
esng.say(‘Hello World!’)lower pitch and speed:esng.pitch = 32
esng.speed = 150
esng.say(‘Hello World!’)try a different language:esng.voice = ‘german’
esng.say(‘Hallo Welt!’)specify phonemes instead of words:esng.voice = ‘english-us’
esng.say(“[[h@l’oUw’3:ld]]”)### Synthesize Wave File without Playing It>From Text:import wave
import StringIOesng.voice = ‘english-us’
wavs = esng.synth_wav(‘Hello World!’)
wav = wave.open(StringIO.StringIO(wavs))
print wav.getnchannels(), wav.getframerate(), wav.getnframes()result:1 22050 24210### List Available Voicesl = esng.voicesresult:>>> l[0]
{'pty': '5', 'language': 'af', 'gender': 'M', 'age': '--', 'voice_name': 'afrikaans', 'file': 'gmw/af'}
>>> l[1]
{'pty': '5', 'language': 'am', 'gender': '-', 'age': '--', 'voice_name': 'amharic', 'file': 'sem/am'}
>>> l[2]
{'pty': '5', 'language': 'an', 'gender': 'M', 'age': '--', 'voice_name': 'aragonese', 'file': 'roa/an'}
...### Grapheme to Phoneme (G2P) Conversionipa = esng.g2p (‘Hello World!’, ipa=2)result:>>> print ipa
həlˈo͡ʊ wˈɜːldLinks<https://github.com/espeak-ng/espeak-ng> [eSpeak NG]RequirementsPython 2 or 3espeak-ng binary installed and in PATHLicenseMy own code is Apache-2.0 licensed unless otherwise noted in the
script’s copyright headers.AuthorGuenter Bartsch <<guenter@zamia.org>>
Package: pyesprima
A Python port of [Esprima][1], the JavaScript parser.Why shouldn’t I use it?It’s pretty slow – about two orders of magnitude slower to parse a 116k JS
file. The code was semi-automatically translated from JavaScript, and it does a
lot of string appending, which is fast in JS but slow in Python.Why should I use it?Shelling out to a NodeJS process is likely to be a better way to use Esprima
from Python. However, writing the interprocess data-marshaling code is a bit
annoying, so if you want to do a quick hack on small amounts of data, PyEsprima
is a good way to get down to business. The API is exactly the same, so you can
easily swap in an interface to the external Node process later on.Also, since the code is semi-automatically translated using [js2py][2], it’s
pretty easy to keep up-to-date. You could even do it yourself. Don’t fear the
bit rot!APIPretty much the same as Esprima’s / SpiderMonkey’s API:>>> import pyesprima

>>> print pyesprima.tokenize("1 + 1")
[{'type': 'Numeric', 'value': '1'},
 {'type': 'Punctuator', 'value': '+'},
 {'type': 'Numeric', 'value': '1'}]

>>> pyesprima.parse("1 + 1", loc=True)
{'body': [{'type': 'ExpressionStatement', 'expression': {'operator': '+',
'loc': {'start': {'column': 0, 'line': 1}, 'end': ...Installingpip install pyesprima[1]:http://esprima.org/[2]:https://github.com/int3/js2py
Package: pyessh
# Pyessh
A tool for easy to use SSH execute commands at multi-server.![gif](https://github.com/Leviathan1995/pyessh/blob/master/doc/pyessh.gif)## Usage#### Installation` # pip3 install pyessh `#### Editing the Configuration File` # vim /etc/local/pyessh.conf `add remote server IP addresses at pyessh.conf` 127.0.0.1 ... `#### Get Started` # pyessh `and type your command## LicenseMIT
Package: pyessv
Python earth system standard vocabularies.What is ES-DOC ?ES-DOC stands for Earth Science - Documentation.  Its goal is to provide software tools and services in order to support the distribution of earth science documentation.What is pyessv ?pyessv is a python client library for managing vocabularies.  It supports vocabulary creation, validation, serialization, governance & I/O use cases.Why pyessv ?A documentation eco-system is only as good as the available vocabularies.  ES-DOC provides the pyessv client tool so as to simplify leveraging the ES-DOC eco-system in the python programming language.Who uses pyessv ?Developers building value added software on top of the ES-DOC eco-system.Further Information ?Seehttp:es-doc.org.
Package: pyesytime
PyesyTimeA module to make time easier	一个让时间更好获取的模块Notice:The lastest version is 2022.3	注意：最新版本2022.30. Name	名称Pyesytimepython easy time1.Download	下载pip install pyesytime==2022.32. Import Package	导入import pyesytime3.What‘s New	更新内容​	(1) You can enter a parameter in ONLY_HOUR_12_ENGLISH and ONLY_HOUR_12_CHINESE​		 你可以在 ONLY_HOUR_12_ENGLISH 和 ONLY_HOUR_12_CHINESE中输入参数​	(2) More functions have been added, as detailed below​		 添加了更多函数，详情请见下方4. Function	函数​	(1) ALL_IN_ONE()​		Return all the time like this:  2022-01-01 00:00:00​		像这样显示所有时间：2022-01-01 00:00:00​	(2)YEAR_MONTH_DAY_LINE()​		Return the time like this: 2022-01-01​		像这样显示所有时间：2022-01-01​	(3)YEAR_MONTH_DAY_DIAGONAL()​		Return the time like this: 2022/01/01​		像这样显示所有时间：2022/01/01​	(4)HOUR_MINUTE_SECOND_24_COLON()​		Return the time like this: 13:00:00​		像这样显示所有时间：13:00:00​	(5)HOUR_MINUTE_SECOND_12_COLON_ENGLISH()​		Return the time like this: 1:00:00 pm​		像这样显示所有时间：1:00:00 pm​	(6)HOUR_MINUTE_SECOND_12_COLON_ENGLISH()​		Return the time like this: 下午 1:00:00​		像这样显示所有时间：下午 1:00:00​	(7)ONLY_HOUR_24()​		Return the time like this: 13​		像这样显示所有时间：13​	(8)ONLY_HOUR_12_ENGLISH(hour)					（NEW!）​		Return the time like this: 1 pm​		像这样显示所有时间：1 pm​		You can enter a time and change it into this.​		你可以写入一个数字参数让函数来转换显示形式​	(9)ONLY_HOUR_12_CHINESE(hour)					（NEW!）​		Return the time like this: 下午1时​		像这样显示所有时间：下午1时​		You can enter a time and change it into this.​		你可以写入一个数字参数让函数来转换显示形式​	(10)ISO_STANDARD_CALENDAR_AS_TUPLE()					（NEW!）​		Return the tuple of time as ISO standard calendar: (2022, 1, 1)​		像这样以元组类型显示ISO标准日历时间：(2022, 1, 1)​	(11)ISO_STANDARD_CALENDAR_AS_LIST()					（NEW!）​		Return the list of time as ISO standard calendar: [2022, 1, 1]​		像这样以列表类型显示ISO标准日历时间：[2022, 1, 1]​	(12)NOW_WEEKDAY_ENGLISH()					（NEW!）​		Return the weekday as English like this: Monday​		像这样用英文返回今天的星期：Monday
Package: pyETA
pyETAI wanted to automate measure some sensor values of my ETA heating system.
So this python package for communicating over the network was born.Preconditions on your heating system to use the ETA apiIn order to use the ETA REST api you need to ensure the following preconditions (In this order):You must have installed system software version 1.20.0 or higher on your ETAtouch device.You must have registered your ETAtouch device athttp://www.meineta.atYou must have applied for LAN access athttp://www.meineta.atfor your ETA-touch device.You must have activated LAN access on your ETAtouch device in the system settings.Usage of the package in your codeBasically you need to create a connection to your ETAtouch via anEtaobject.
From that object the available variables can be read with theget_nodes()method.
It will give you a big dictionary with structural information about your system, but no data.To retrieve the data aVariableorVariableListobject needs to be updated via theupdate_eta_objectmethod.
This will update the given parameter with the retrieved data of you system.A simple example can be found in theexample_use.pyfile at project root.Additional flags on theEtaclasshide_io_variables: Hides the Input and Output variables. (Default: true)MoreETAtouch RESTful Webservices Dockumentation V1.2
Package: pyetaler
PyEtalerThis is the offical Python binding for Etaler. PyEtaler generates Python binging usingcppyyand adds additional feature on top of the automatically generated bindings.Note:As of now, installing cppyy (thus PyEtaler) will causeROOTto fail to load due to dependency clash.InstallationNote:You must have Etaler and cppyy installed globally before building the binding.Note:Since the binding is generated to load the actual Etaler installation. You'll need to re-compile the binding everytime Etaler is updated.If you are building from source (building via directly interacting with the generator).pipinstallcppyy# must installed globallypython3genbinding.py
cp*.soetaler/
cp*.pcmetaler/# Then copy the resulting files into your package directoryLocally build via PIPpip3install.Alternativelly you can install it directly via PyPI.pipinstallpyetalerUsageAfter installation, you can use Etaler from python. The API is exactly like it is in C++.>>>frometalerimportet>>>et.ones([2,2]){{1,1},{1,1}}>>>sp=et.SpatialPooler([128],[32])>>>x=et.encoder.scalar(0.1,0,1,128,12)>>>sp.compute(x){0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,0}CaveatsPyEtaler tries it's best to make the Python API similar to the C++ API (so ou can use the C++ documents as the Python document). There are some caveats. A few changes are made in an effort to make the Python API Pythonic. The changes are:Tensor.toHost and Tensor.item are not templatesSince Python is a dynamically typed language. There's really no point have functions maintaining a template. Your code in C++autot=et::ones({4,4});autovec=t.toHost<int>()becomest=et.ones([4,4])vec=t.toHost()No more brace arround tensor indicesIt is quite annoning having to have extra braces when indexing. So we removed them in Python!autot=et::ones({4,4});autoq=t[{2,2}];becomest=et.ones([4,4])q=t[2,2]Logical operators doesn't workDue to how Python works. It is impossible to provide the logical operators in the wrapper.autor=t&&q;Should have become:r=tandqBut instead of mappingoperator &&. Python will try castinget.Tensorinto aboolthen performing the and operation.
So instead of usingand. Please use thelogical_andfunction.r=et.logical_and(t,q)Hacking PyEtalerIn case that you need to use C++ STL - maybe because the wrapper is doing something stupid. You can access the STL usingetaler.std.For example>>>frometalerimportstd>>>std.vector[int](10)<cppyy.gbl.std.vector<int>objectat0x1ef112c0>
Package: pyetbd
pyetbdThis is an open-source Python package to implement McDowell's (2004) Evolutionary Theory of Behavior Dynamics. See McDowell (2019) for a review of the ETBD.The package is currently under development. This version has successfully replicated the results of McDowell et al. (2008). It is not recommended to run experiments for publication until the package has been validated by replicating more results from the literature.Visit thepyetbd Wikifor more info!Note: This package is currently not compatible with Python 3.12. Python 3.11.7 is the recommended version.ReferencesMcDowell, J. J (2004). A computational model of selection by consequences. Journal of the Experimental Analysis of Behavior, 81(3), 297-317.https://doi.org/10.1901/jeab.2004.81-297McDowell, J. J (2019), On the current status of the evolutionary theory of behavior dynamics. Journal of the Experimental Analysis of Behavior, 111: 130-145.https://doi.org/10.1002/jeab.495McDowell, J. J, Caron, M. L., Kulubekova, S., & Berg, J. P. (2008). A computational theory of selection by consequences applied to concurrent schedules. Journal of the Experimental Analysis of Behavior, 90(3), 387-403.https://doi.org/10.1901/jeab.2008.90-387