{ "info": { "author": "Daniel Monteiro", "author_email": "up201806185@fe.up.pt", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8" ], "description": "# The sigarra scraping library no one asked for\n[![image](https://img.shields.io/pypi/v/feupy)](https://pypi.org/project/feupy/)\n[![image](https://img.shields.io/pypi/status/feupy)](https://pypi.org/project/feupy/)\n[![Documentation Status](https://readthedocs.org/projects/feupy/badge/?version=master)](https://feupy.readthedocs.io/en/master/?badge=master)\n[![image](https://img.shields.io/pypi/pyversions/feupy.svg)](https://pypi.org/project/feupy/)\n\n**Feupy** is a Python library that provides an interface to [FEUP](https://sigarra.up.pt/feup/en/WEB_PAGE.INICIAL \"FEUP's Homepage\")'s information system, [SIGARRA](https://sigarra.up.pt/up/en/web_page.inicial \"SIGARRA's Homepage\"). SIGARRA stands for **S**istema de **I**nforma\u00e7\u00e3o para **G**est\u00e3o **A**gregada dos **R**ecursos e dos **R**egistos **A**cad\u00e9micos (Academic Register and Aggregated Resource Management Information System, give or take).\n\nAll web requests that don't need a special permission (that is, you don't need to log in to see the page) are stored in a persistent cache with timeouts, in order to minimize latency and the number of requests made to sigarra. All web requests that need a special permission (i.e. you need to be logged in) are stored in a non-persistent cache.\n\n## Installation\n```\npip install feupy\n```\n\n## [Documentation](https://feupy.readthedocs.io/en/master)\nClick this [link](https://feupy.readthedocs.io/en/master)\n\n## Building the package and uploading to PyPI\n1. Change your working directory to the root of this project in your computer\n2. Run these two commands\n ```\n python setup.py sdist bdist_wheel\n python -m twine upload dist/*\n ```\n3. Enter your PyPI credentials when prompted\n4. Celebrate!\n\n## Building the docs and checking them out locally\n1. Make sure you have latest version of [sphinx](https://pypi.org/project/sphinx/) installed\n2. Change your working directory to docs/\n3. Run this command\n ```\n sphinx-build -b html source build\n ```\n4. Change your working directory to docs/build/\n5. Run this command\n ```\n python -m http.server 8080\n ```\n6. Open a web browser at [localhost:8080](http://127.0.0.1:8080)\n\n\n## Acknowledgements\nI would like to thank the following people:\n+ The maintainers of the [requests](https://pypi.org/project/requests/) package\n+ The maintainers of the [requests_futures](https://pypi.org/project/requests-futures/) package\n+ The maintainers of the [beautifulsoup4](https://pypi.org/project/beautifulsoup4/) package\n+ The maintainers of the [lxml](https://pypi.org/project/lxml/) package\n+ The maintainers of the [Pillow](https://pypi.org/project/Pillow/) package\n+ [Miguel Ramalho](https://github.com/msramalho) for creating [sigpy](https://github.com/msramalho/sigpy)\n\n## Examples\n\n### Logging in\n```python\n>>> # For a function to be able to access pages where you need to be logged in,\n>>> # you need to pass a Credentials object as an argument to that function.\n>>> \n>>> # You can tell whether or not a function needs a Credentials object by\n>>> # checking if the function needs a parameter called \"credentials\"\n>>> \n>>> from feupy import Credentials\n>>> \n>>> credentials = Credentials()\nUsername?\n:> up201806185\nPassword for 201806185?\n:>\n>>> credentials\nCredentials(201806185)\n```\n\n### Student info\n```python\n>>> from feupy import Student\n>>> from pprint import pprint\n>>> \n>>> daniel = Student(201806185) # That's me!\n>>> print(f\"Hello, {daniel.name}!\")\nHello, Daniel Filipe Amaro Monteiro!\n>>> pprint(daniel.courses)\n({'course': Course(742, 2019), # MIEIC\n 'first academic year': 2018, # (2018/2019)\n 'institution': 'Faculty of Engineering'},) # Best faculty\n```\n\n### Teacher info\n```python\n>>> from feupy import Teacher\n>>> \n>>> jlopes = Teacher(230756)\n>>> \n>>> print(f\"Thanks for teaching us Python, {jlopes.name}!\")\nThanks for teaching us Python, Jo\u00e3o Ant\u00f3nio Correia Lopes!\n>>> \n>>> print(jlopes.presentation)\nPersonal Presentation\nJo\u00e3o Correia Lopes is an Assistant Professor in Informatics Engineering at the Universidade do Porto and a senior researcher at INESC TEC. He has graduated in Electrical Engineering in the University of Porto in 1984 and holds a PhD in Computing Science by Glasgow University in 1997. His teaching includes undergraduate and graduate courses in databases and web applications, software engineering and programming, markup languages and semantic web. He has been involved in research projects in the area of data management, service-oriented architectures and e-Science. Currently his main research interests are e-Science and research data management.\nResearcherID ORCID Google Scholar Citations DBLP Author Scopus Author\n>>> \n>>> pprint(vars(jlopes))\n{'acronym': 'JCL',\n 'career': 'Pessoal Docente de Universidades',\n 'category': 'Professor Auxiliar',\n 'department': 'Department of Informatics Engineering',\n 'email': None,\n 'links': ('http://www.fe.up.pt/~jlopes/',\n 'https://www.authenticus.pt/R-000-6RX',\n 'http://orcid.org/0000-0002-9040-0889'),\n 'name': 'Jo\u00e3o Ant\u00f3nio Correia Lopes',\n 'p_codigo': 230756,\n 'personal_webpage': 'http://www.fe.up.pt/~jlopes/',\n 'presentation': 'Personal Presentation\\n'\n 'Jo\u00e3o Correia Lopes is an Assistant Professor in Informatics '\n 'Engineering at the Universidade do Porto and...', #etc\n 'profession': 'Docente',\n 'rooms': 'I129',\n 'status': 'Active',\n 'url': 'https://sigarra.up.pt/feup/en/func_geral.formview?p_codigo=230756',\n 'voip': 3375}\n```\n\n### Curricular unit info\n```python\n>>> from feupy import CurricularUnit\n>>> \n>>> fpro = CurricularUnit(419983)\n>>> \n>>> fpro.name\n'Programming Fundamentals'\n>>> fpro.acronym\n'FPRO'\n>>> \n>>> pprint(vars(fpro))\n{'ECTS_credits': 6.0,\n 'academic_year': 2018,\n 'acronym': 'FPRO',\n 'code': 'EIC0005',\n 'curricular_year': 1,\n 'has_moodle': True,\n 'is_active': True,\n 'name': 'Programming Fundamentals',\n 'number_of_students': 182,\n 'pv_ocorrencia_id': 419983,\n 'regents': (Teacher(230756),),\n 'semester': 1,\n 'teachers': (Teacher(230756),\n Teacher(230756),\n Teacher(520205),\n Teacher(552793),\n Teacher(209847)),\n 'text': 'Teaching language\\n'\n 'Portuguese\\n'\n 'Objectives\\n'\n '1 - BACKGROUND\\n'\n 'Fluency in the process of software development is a basic '\n 'prerequisite to the work of Informatics Engineers. In order to use '\n 'computers to solve problems effectively, students must be competent '\n 'at reading and writing programs using higher-order programming '\n 'languages.\\n'\n '2 - SPECIFIC AIMS...', # etc\n 'url': 'https://sigarra.up.pt/feup/en/ucurr_geral.ficha_uc_view?pv_ocorrencia_id=419983',\n 'webpage_url': 'https://web.fe.up.pt/~jlopes/doku.php/teach/fpro/index'}\n>>> \n>>> pprint(fpro.other_occurrences())\n(CurricularUnit(436425),\n CurricularUnit(419983),\n CurricularUnit(399878),\n CurricularUnit(384923),\n CurricularUnit(368689),\n CurricularUnit(350482),\n CurricularUnit(332985),\n CurricularUnit(272575),\n CurricularUnit(272574),\n CurricularUnit(272573),\n CurricularUnit(272572),\n CurricularUnit(272571),\n CurricularUnit(272570),\n CurricularUnit(272569))\n>>> [uc.academic_year for uc in fpro.other_occurrences()]\n[2019, 2018, 2017, 2016, 2015, 2014, 2013, 2012, 2011, 2010, 2009, 2008, 2007, 2006]\n>>> \n>>> pprint(fpro.classes(credentials)) # Remember the Credentials object we created earlier?\n{\n '1MIEIC01': [Student(201800000),\n Student(201800001),\n Student(201800002),\n Student(201800003)],\n '1MIEIC02': [Student(201800004),\n Student(201800005),\n Student(201800006),\n Student(201800007),\n Student(201800008),\n Student(201800009),\n Student(201800010),\n Student(201800011),\n Student(201800012)],\n '...' : [...] # etc\n}\n>>>\n>>> pprint(fpro.students(credentials))\n# (student, status, number of registrations, student type)\n[(Student(201800001), 'Ordin\u00e1rio', 1, 'Normal'), \n (Student(201800002), 'Ordin\u00e1rio', 1, 'Normal'),\n (Student(201800003), 'Ordin\u00e1rio', 1, 'Normal'),\n (Student(201800004), 'Estudante internacional', 1, 'Normal'),\n (Student(201800005), 'Estudante internacional', 1, 'Normal'),\n (Student(201800006), 'Ordin\u00e1rio', 1, 'Normal'),\n (Student(201800007), 'Ordin\u00e1rio', 1, 'Normal'),\n (Student(201800008), 'Ordin\u00e1rio', 2, 'Normal'),\n (Student(201800009), 'Ordin\u00e1rio', 2, 'Normal'),\n (Student(201800010), 'Ordin\u00e1rio', 1, 'Normal'),\n (Student(201800011), 'Estudante internacional', 1, 'Normal'),\n (Student(201800012), 'Trabalhador-Estudante', 1, 'Normal'),\n ... # etc\n ]\n>>> \n>>> pprint(fpro.results(credentials)) # Get the results from the exams\n{'\u00c9poca Normal (1\u00baS)': [(Student(201800001), 10),\n (Student(201800002), 13),\n (Student(201800003), 10),\n (Student(201800004), 'RFE'),\n (Student(201800005), 'RFF'),\n (Student(201800006), 'RFF'),\n ...], # etc\n'\u00c9poca Recurso (1\u00baS)': [(Student(201800008), 11),\n (Student(201800009), 7),\n (Student(201800010), 8),\n (Student(201800011), 8),\n (Student(201800012), 'RFE'),\n (Student(201800013), 13),\n (Student(201800014), 5),\n (Student(201800019), 'RFC'),\n ...]} # etc\n>>> \n>>> pprint(fpro.timetable(credentials)) # Returns the classes from the timetable as dicts\n[{'class type': 'TP',\n 'classes': ('1MIEIC04',),\n 'curricular unit': CurricularUnit(419983),\n 'finish': datetime.time(10, 0),\n 'room': ('B307',),\n 'start': datetime.time(8, 0),\n 'teachers': (Teacher(209847), Teacher(520205)),\n 'weekday': 'Monday'},\n {'class type': 'TP',\n 'classes': ('1MIEIC01',),\n 'curricular unit': CurricularUnit(419983),\n 'finish': datetime.time(10, 30),\n 'room': ('B302',),\n 'start': datetime.time(8, 30),\n 'teachers': (Teacher(230756),),\n 'weekday': 'Tuesday'},\n {'class type': 'T',\n 'classes': ('1MIEIC01',\n '1MIEIC02',\n '1MIEIC03',\n '1MIEIC04',\n '1MIEIC05',\n '1MIEIC06',\n '1MIEIC07',\n '1MIEIC08'),\n 'curricular unit': CurricularUnit(419983),\n 'finish': datetime.time(13, 30),\n 'room': ('B002',),\n 'start': datetime.time(12, 0),\n 'teachers': (Teacher(230756),),\n 'weekday': 'Tuesday'},\n {'class type': 'TP',\n 'classes': ('1MIEIC06',),\n 'curricular unit': CurricularUnit(419983),\n 'finish': datetime.time(13, 30),\n 'room': ('B310',),\n 'start': datetime.time(11, 30),\n 'teachers': (Teacher(209847), Teacher(552793)),\n 'weekday': 'Wednesday'},\n ...] # etc\n```\n\n### Course info\n```python\n>>> from feupy import Course\n>>> \n>>> mieic = Course(742)\n>>> \n>>> mieic.name\n'Master in Informatics and Computing Engineering'\n>>> mieic.acronym\n'MIEIC'\n>>> [director.name for director in mieic.directors] # Let's see the names of the directors\n['Jo\u00e3o Carlos Pascoal Faria', 'Maria Cristina de Carvalho Alves Ribeiro']\n>>> \n>>> pprint(vars(mieic))\n{'acronym': 'MIEIC',\n 'directors': (Teacher(210006), Teacher(209566)),\n 'name': 'Master in Informatics and Computing Engineering',\n 'official_code': 9459,\n 'pv_ano_lectivo': 2019,\n 'pv_curso_id': 742,\n 'text': 'The Integrated Master in Informatics and Computing Engineering has '\n 'been awarded the international EUR-ACE quality label. This certifies '\n 'MIEIC as a high-quality programme which meets the international '\n 'standards for professional engineering education at the masters '\n 'level. [+ info]\\n'\n '\\n'\n 'Accreditation by A3ES\\r\\n'\n 'The Agency for Assessment and Accreditation of Higher Education '\n '(A3ES), at 20th of June, 2014, and in accordance with the '\n 'recomendation and fundamentation produced by the respective External '\n ... , # etc\n 'url': 'https://sigarra.up.pt/feup/en/cur_geral.cur_view?pv_curso_id=742&pv_ano_lectivo=2019'}\n>>> \n>>> pprint(mieic.exams()) # Let's see this courses's currently scheduled exams\n[{'curricular unit': CurricularUnit(420037),\n 'finish': datetime.datetime(2019, 9, 6, 20, 0),\n 'observations': 'Tenho um exame de outra disciplina marcado para esse '\n 'hor\u00e1rio e assim juntava os dois.\\r\\n'\n 'Jos\u00e9 Lu\u00eds Moura Borges\\r\\n',\n 'rooms': ('B222',),\n 'season': 'Especial de Conclus\u00e3o - SET-E-ESPECIAL',\n 'start': datetime.datetime(2019, 9, 6, 17, 0)},\n ..., # etc\n {'curricular unit': CurricularUnit(438941),\n 'finish': datetime.datetime(2019, 9, 26, 13, 0),\n 'observations': None,\n 'rooms': ('B104', 'B208', 'B213'),\n 'season': 'Exames ao abrigo de estatutos especiais - Mini-testes (1\u00baS)',\n 'start': datetime.datetime(2019, 9, 26, 9, 0)},\n {'curricular unit': CurricularUnit(438941),\n 'finish': datetime.datetime(2019, 9, 26, 17, 30),\n 'observations': None,\n 'rooms': ('B104', 'B213', 'B208', 'B207'),\n 'season': 'Exames ao abrigo de estatutos especiais - Mini-testes (1\u00baS)',\n 'start': datetime.datetime(2019, 9, 26, 13, 30)}]\n>>> \n>>> mieic.curricular_units() # All the curricular units (with a link) from that course\n[CurricularUnit(446081), CurricularUnit(437142), CurricularUnit(438941), \nCurricularUnit(436401), CurricularUnit(436402), CurricularUnit(436403), \nCurricularUnit(436404), CurricularUnit(436405), CurricularUnit(436406), \nCurricularUnit(436407), CurricularUnit(436408), CurricularUnit(436409), \nCurricularUnit(436410), CurricularUnit(436411), CurricularUnit(436412), \nCurricularUnit(436413), CurricularUnit(436414), CurricularUnit(436415), \nCurricularUnit(436416), CurricularUnit(436417), CurricularUnit(436418), \nCurricularUnit(436419), CurricularUnit(436420), CurricularUnit(436421), \nCurricularUnit(436422), CurricularUnit(436423), CurricularUnit(436424), \nCurricularUnit(436425), CurricularUnit(436426), CurricularUnit(436427), \nCurricularUnit(436428), CurricularUnit(436429), CurricularUnit(436430), \nCurricularUnit(436431), CurricularUnit(436432), CurricularUnit(436433), \nCurricularUnit(436434), CurricularUnit(436435), CurricularUnit(436436), \nCurricularUnit(436437), CurricularUnit(436438), CurricularUnit(436439), \nCurricularUnit(436440), CurricularUnit(436441), CurricularUnit(436442), \nCurricularUnit(436443), CurricularUnit(436444), CurricularUnit(436445), \nCurricularUnit(436446), CurricularUnit(436447), CurricularUnit(436448), \nCurricularUnit(436449), CurricularUnit(436450), CurricularUnit(436451), \nCurricularUnit(436452), CurricularUnit(436453), CurricularUnit(436454), \nCurricularUnit(436455), CurricularUnit(436456), CurricularUnit(436457), \nCurricularUnit(436458), CurricularUnit(436459), CurricularUnit(436460), \nCurricularUnit(436461), CurricularUnit(436462), CurricularUnit(436463), \nCurricularUnit(436464), CurricularUnit(436465), CurricularUnit(436466), \nCurricularUnit(436467), CurricularUnit(436468), CurricularUnit(436469), \nCurricularUnit(436470), CurricularUnit(436471)]\n>>> len(mieic.curricular_units()) # Just out of curiosity\n74\n>>> [uc for uc in mieic.curricular_units() if uc.curricular_year == 2 and uc.semester == 1] # The uc's I will have this semester\n[CurricularUnit(436433), CurricularUnit(436434), CurricularUnit(436435), CurricularUnit(436436), CurricularUnit(436437)]\n```\n\n### Personal info\n```python\n>>> from feupy import User\n>>> \n>>> me = User.from_credentials(credentials)\n>>> me.course.acronym\n'MIEIC'\n>>> \n>>> pprint(me.courses_units())\n# Curricular unit , grade\n[(CurricularUnit(436433), None),\n (CurricularUnit(436434), None),\n (CurricularUnit(436435), None),\n (CurricularUnit(436436), None),\n (CurricularUnit(436437), None),\n (CurricularUnit(436439), None),\n (CurricularUnit(436438), None),\n (CurricularUnit(436441), None),\n (CurricularUnit(436442), None),\n (CurricularUnit(436440), None),\n (CurricularUnit(419981), 10),\n (CurricularUnit(419982), 11),\n (CurricularUnit(419985), 12),\n (CurricularUnit(419983), 13),\n (CurricularUnit(419984), 14),\n (CurricularUnit(420521), 15),\n (CurricularUnit(419986), 16),\n (CurricularUnit(419987), 17),\n (CurricularUnit(419990), 18),\n (CurricularUnit(419989), 19),\n (CurricularUnit(419988), 20)]\n```\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/up201806185/feupy", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "feupy", "package_url": "https://pypi.org/project/feupy/", "platform": "", "project_url": "https://pypi.org/project/feupy/", "project_urls": { "Homepage": "https://github.com/up201806185/feupy" }, "release_url": "https://pypi.org/project/feupy/0.3.4/", "requires_dist": [ "Pillow (==6.1.0)", "beautifulsoup4 (==4.8.0)", "lxml (==4.4.1)", "requests (==2.22.0)", "requests-futures (==1.0.0)" ], "requires_python": ">=3.6", "summary": "The sigarra scraping library no one asked for", "version": "0.3.4" }, "last_serial": 5920978, "releases": { "0.0.2": [ { "comment_text": "", "digests": { "md5": "1b7302be6e7d513d4e72aeb299f688a7", "sha256": "009c880b39c556877a4144edf2161b1eb0467206149152dff93866083a463487" }, "downloads": -1, "filename": "feupy-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "1b7302be6e7d513d4e72aeb299f688a7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 33645, "upload_time": "2019-08-16T18:20:16", "url": "https://files.pythonhosted.org/packages/f5/29/fb06444a45e772430e50434775da3c3bf94fe2fa1bce71eb8c0e15c20dac/feupy-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6254a1d9d55b376fc935d6c08140a47f", "sha256": "d6ac032a20fc99d312d529ae3db29b8e054dd366115872089c85aaa0f2cdec14" }, "downloads": -1, "filename": "feupy-0.0.2.tar.gz", "has_sig": false, "md5_digest": "6254a1d9d55b376fc935d6c08140a47f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 26026, "upload_time": "2019-08-16T18:20:17", "url": "https://files.pythonhosted.org/packages/19/bf/e661a45048e3cfd89ba85b32903636b26c5641b5bfdac724c7e0a84003da/feupy-0.0.2.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "3f572bd3934bce146436dd4b45e8c28b", "sha256": "b82f7364df9e33f095b7b109380eeb02abe81cfe14190de5eefecff6fc1714d1" }, "downloads": -1, "filename": "feupy-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3f572bd3934bce146436dd4b45e8c28b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 3165, "upload_time": "2019-08-13T22:11:44", "url": "https://files.pythonhosted.org/packages/78/ce/1b711002cd12f50f51f588be9113e4b9145b66be78736fe337236db370ec/feupy-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "aa1e5f1606966a8336e88c91a121e54f", "sha256": "ac27c4925823b939a7db5606fb4fcbf299f3b306b7c71bc98e895e1c5f61d584" }, "downloads": -1, "filename": "feupy-0.1.0.tar.gz", "has_sig": false, "md5_digest": "aa1e5f1606966a8336e88c91a121e54f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7778, "upload_time": "2019-08-13T22:11:46", "url": "https://files.pythonhosted.org/packages/6e/2a/9573226368bfb4e85d8129172087c25c7e7557036356c3c1ca4e236b3fac/feupy-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "d372c88a957e90f4e80e9bfa0cf317d1", "sha256": "befc028bea10e610b86e0d349a2209482bcac66bed58c3827625defb59a36112" }, "downloads": -1, "filename": "feupy-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d372c88a957e90f4e80e9bfa0cf317d1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 34173, "upload_time": "2019-08-13T22:45:22", "url": "https://files.pythonhosted.org/packages/66/bf/db1f36e3233a9d145b4b3360064c73bf0f5d6ee88481e9d4d4f9d0f7c883/feupy-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ee1f3269e291930f7508d7e049fc20bd", "sha256": "3694b934663a4fce8c5cb1c32afdf94119885738cf3f57ba443c5ee29611b07f" }, "downloads": -1, "filename": "feupy-0.1.1.tar.gz", "has_sig": false, "md5_digest": "ee1f3269e291930f7508d7e049fc20bd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31837, "upload_time": "2019-08-13T22:45:23", "url": "https://files.pythonhosted.org/packages/65/ad/689492567e90311d218df3ea6744138e4c0103b38ff4638dee6734ee3199/feupy-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "560f09c2a4728dde076ec13674747706", "sha256": "9dec11a13118316a1820c1bd70f842ea4db969e95a2fd77b6363a133e6146dd5" }, "downloads": -1, "filename": "feupy-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "560f09c2a4728dde076ec13674747706", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 33645, "upload_time": "2019-08-16T18:27:53", "url": "https://files.pythonhosted.org/packages/8f/7a/c77495d322f74ff6dfd3e7b4f2e4bb7115fe0b071fbff2125bb7edd05c01/feupy-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "422dbafaca85ba45900712e8e7bafbcc", "sha256": "cd3f6eff0924bf8ae317ac2b7e657292e5a84992e14abb1adb82327c6a402eb0" }, "downloads": -1, "filename": "feupy-0.1.2.tar.gz", "has_sig": false, "md5_digest": "422dbafaca85ba45900712e8e7bafbcc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 26023, "upload_time": "2019-08-16T18:27:55", "url": "https://files.pythonhosted.org/packages/cb/0c/f7d2694ec4f9e9ee6e7fee462f30805d95cf35e5204922f1d24d5e805f02/feupy-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "da65f1fdaaa99bb58929966966ac7634", "sha256": "2b078fc53b6a4b494be8e2c942abed34fc092884de0ab6903ada1d09f1f1d183" }, "downloads": -1, "filename": "feupy-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "da65f1fdaaa99bb58929966966ac7634", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 33635, "upload_time": "2019-08-16T18:34:06", "url": "https://files.pythonhosted.org/packages/2f/44/01de857f2e226ad1831f947e3eb1e883f69ccdf91336ef630a52a786efd1/feupy-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "810817a90463fa9849b80cd388738650", "sha256": "3d61f6753885b3929a6810f4a6c5452121e8917920f1753956b93bcb4e48ddc4" }, "downloads": -1, "filename": "feupy-0.1.3.tar.gz", "has_sig": false, "md5_digest": "810817a90463fa9849b80cd388738650", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 26013, "upload_time": "2019-08-16T18:34:09", "url": "https://files.pythonhosted.org/packages/52/b6/0f6462fca9261d8ce53c491af421fd40346ea48e0ee956c2b6a98440658c/feupy-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "648dd5d7e6a36ff29640b9e9282ea0e9", "sha256": "517256d30595ced1c1c8d643a355f6fd3e1ce58994590c9275adf0b297195491" }, "downloads": -1, "filename": "feupy-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "648dd5d7e6a36ff29640b9e9282ea0e9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 33608, "upload_time": "2019-08-16T18:54:06", "url": "https://files.pythonhosted.org/packages/5f/7f/c70d5c9721ed182157ae4a5457b706100e460c70a2991ea2cbe96d8028a7/feupy-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "63979e06a939bccd1f09cc95eaa6ebb9", "sha256": "42618b39403d0a26c53f9e20100bd99727bf264e0b77f6e32453072a20026cc9" }, "downloads": -1, "filename": "feupy-0.1.4.tar.gz", "has_sig": false, "md5_digest": "63979e06a939bccd1f09cc95eaa6ebb9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 25974, "upload_time": "2019-08-16T18:54:10", "url": "https://files.pythonhosted.org/packages/55/d2/285614110d1602c68ccc4a0d9d8683e5fc972fb3132a5a15699f93ebe634/feupy-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "334b90f7c9288a66b73d914f8528f7f6", "sha256": "0fe009dd6a4bd358a3c4f4f1ee22e384c62c0e9f7c66170385bb44c7f1c9c056" }, "downloads": -1, "filename": "feupy-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "334b90f7c9288a66b73d914f8528f7f6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 33850, "upload_time": "2019-08-21T22:27:17", "url": "https://files.pythonhosted.org/packages/bc/a7/653f9e5484ab09e47055825f82de6e9efed22d666cd8184d57af172bf1b8/feupy-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "07d3bb07dbff29ed186f7a4d9a5f3165", "sha256": "da66fdbb8a46a889d0387f33794d79c217a07d637bd2b2f83bd2d9f148769366" }, "downloads": -1, "filename": "feupy-0.1.5.tar.gz", "has_sig": false, "md5_digest": "07d3bb07dbff29ed186f7a4d9a5f3165", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 26477, "upload_time": "2019-08-21T22:27:22", "url": "https://files.pythonhosted.org/packages/20/88/681c9491b2805ae2bb07f9c135fc4a838b6d8b67d9e1b32374ee2b300764/feupy-0.1.5.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "f5cdc25bb79966d6ee3f26248910a6c9", "sha256": "81b1cbc7561a2abe225ee631035edc421bf99686a30bea9b2bb3d5447c7e4109" }, "downloads": -1, "filename": "feupy-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "f5cdc25bb79966d6ee3f26248910a6c9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 34391, "upload_time": "2019-08-22T17:28:58", "url": "https://files.pythonhosted.org/packages/7e/aa/dffaaee9a0990f5745d68feef606f3a4bba6bab7b20e798d0c99671ddd78/feupy-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "77b7ca10673d3a092f1e5e6bdbfe06c5", "sha256": "816fd853f78607c9208bd5a2d2f391f837fbd834f304ca7fcb4170bc10a3aaab" }, "downloads": -1, "filename": "feupy-0.2.0.tar.gz", "has_sig": false, "md5_digest": "77b7ca10673d3a092f1e5e6bdbfe06c5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 27414, "upload_time": "2019-08-22T17:29:04", "url": "https://files.pythonhosted.org/packages/dd/c9/23b29601d7d159d07d008006a144fdcb38ec5886758ada191b20c4c8f8da/feupy-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "c29f1caa3b9e04e93e8dc78fdb4fec5a", "sha256": "d4ed3a04a5d8e8f315770251d73fc40b664ce97e117f257500ae6d9e4d14b7f3" }, "downloads": -1, "filename": "feupy-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "c29f1caa3b9e04e93e8dc78fdb4fec5a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 38254, "upload_time": "2019-08-24T12:27:22", "url": "https://files.pythonhosted.org/packages/d6/13/7f2973820e95c13c9e73f5f3a5838037c1268ba8196f8dc6b47c9c32a58f/feupy-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c2f5d896108ffdf5cc0eac7dd9c4a2c9", "sha256": "26dd7ae62d04b3ab17f7e5c7d70014b6c645bc958a1d35187c2ee02adba262e1" }, "downloads": -1, "filename": "feupy-0.2.1.tar.gz", "has_sig": false, "md5_digest": "c2f5d896108ffdf5cc0eac7dd9c4a2c9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 36016, "upload_time": "2019-08-24T12:27:25", "url": "https://files.pythonhosted.org/packages/7c/00/407f9a7fc2fec62b826baf92a9dde740dd2999fe2dc24fc4702a0652d4f8/feupy-0.2.1.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "a70573dde68c678a4f1fc6749c556d81", "sha256": "fba7e0ffff9e69e5de9416acb53b0743f66a5815d3677ffbb7e33138ff934c67" }, "downloads": -1, "filename": "feupy-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "a70573dde68c678a4f1fc6749c556d81", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 41868, "upload_time": "2019-08-28T16:11:18", "url": "https://files.pythonhosted.org/packages/2c/0d/282994d62be9ffb164885a07f51ad85936c02873fb24169f7ff1a631bbc9/feupy-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "91b98fe2a35e4dbf085161b83eae3991", "sha256": "2fcad4ae5cb4dbd883aca7ebde735c4befae7e977471c8cb864afcae0cc54229" }, "downloads": -1, "filename": "feupy-0.3.0.tar.gz", "has_sig": false, "md5_digest": "91b98fe2a35e4dbf085161b83eae3991", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 39907, "upload_time": "2019-08-28T16:11:21", "url": "https://files.pythonhosted.org/packages/50/16/8371496892fe0daedbe4c2440855930414aac2c6c64492d41dabf036659a/feupy-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "a6b591bce71089569968d8ab692e2754", "sha256": "1c260e4b45af82b557facfe64fcf5bcad48ad3afcbfb739e352aa1baac80c1c5" }, "downloads": -1, "filename": "feupy-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "a6b591bce71089569968d8ab692e2754", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 41965, "upload_time": "2019-09-02T18:42:08", "url": "https://files.pythonhosted.org/packages/db/ee/87efee37660d2abb5ce9f2178b6c80edc77482d682290b0e778e3a39ec02/feupy-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7dc7138f31c60f30e7fd7af217e3e1bd", "sha256": "c9716d2c605f8b39746a5b736aafbd3856c2b1f2d6ae041fa41183fc51d6dd03" }, "downloads": -1, "filename": "feupy-0.3.1.tar.gz", "has_sig": false, "md5_digest": "7dc7138f31c60f30e7fd7af217e3e1bd", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 40072, "upload_time": "2019-09-02T18:42:12", "url": "https://files.pythonhosted.org/packages/02/c5/0f20f01bdcc97253c42ea51a00e84a47583d7fefd8fa3cd4bde32411e223/feupy-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "e2c8db3da5dee0ec0bfadc61ab6a0db5", "sha256": "4306b47c679bccfcf8a4e51215639742fb2f41809a94f99e5c1c0a518777066f" }, "downloads": -1, "filename": "feupy-0.3.2-py2-none-any.whl", "has_sig": false, "md5_digest": "e2c8db3da5dee0ec0bfadc61ab6a0db5", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=3.6", "size": 41756, "upload_time": "2019-10-02T22:39:46", "url": "https://files.pythonhosted.org/packages/de/9b/5d4242302a1d18ac193dc557129d71e9073c5060620d8e9c9d841964e75d/feupy-0.3.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "718ac31a6275e7da3e22ead4deac0605", "sha256": "ad2fa481640efbecc55c1ba5650aa207811b9469d8e44bf28cc9ad49ae616bbe" }, "downloads": -1, "filename": "feupy-0.3.2.tar.gz", "has_sig": false, "md5_digest": "718ac31a6275e7da3e22ead4deac0605", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 158148, "upload_time": "2019-10-02T22:39:48", "url": "https://files.pythonhosted.org/packages/16/24/21d677fab0bfa217570df4d9bbbf83c4dacda91247e645ba03616d354928/feupy-0.3.2.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "09937ed7292d7f9ce42c0b720bf86152", "sha256": "ad9f42bd507c25cab9fa284654b22fd524d8b5ff00cf2c29fcc7f937263aa2b7" }, "downloads": -1, "filename": "feupy-0.3.4-py3-none-any.whl", "has_sig": false, "md5_digest": "09937ed7292d7f9ce42c0b720bf86152", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 41756, "upload_time": "2019-10-02T23:03:05", "url": "https://files.pythonhosted.org/packages/a7/25/e616e6f08082856f900311de64b216f6aa99031e4e66f30393b509bf95cb/feupy-0.3.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cb740e2424c80729896e2c408dd14ed2", "sha256": "e3c5be418de41a37097551195622bb030ed2d88087548dc88f8c583dc89fd1ab" }, "downloads": -1, "filename": "feupy-0.3.4.tar.gz", "has_sig": false, "md5_digest": "cb740e2424c80729896e2c408dd14ed2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 157673, "upload_time": "2019-10-02T23:03:09", "url": "https://files.pythonhosted.org/packages/a5/0e/1ba4852b179d05b8002a65ce58b57feb6fe8e355ef20b34f66958ec9d6ca/feupy-0.3.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "09937ed7292d7f9ce42c0b720bf86152", "sha256": "ad9f42bd507c25cab9fa284654b22fd524d8b5ff00cf2c29fcc7f937263aa2b7" }, "downloads": -1, "filename": "feupy-0.3.4-py3-none-any.whl", "has_sig": false, "md5_digest": "09937ed7292d7f9ce42c0b720bf86152", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 41756, "upload_time": "2019-10-02T23:03:05", "url": "https://files.pythonhosted.org/packages/a7/25/e616e6f08082856f900311de64b216f6aa99031e4e66f30393b509bf95cb/feupy-0.3.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cb740e2424c80729896e2c408dd14ed2", "sha256": "e3c5be418de41a37097551195622bb030ed2d88087548dc88f8c583dc89fd1ab" }, "downloads": -1, "filename": "feupy-0.3.4.tar.gz", "has_sig": false, "md5_digest": "cb740e2424c80729896e2c408dd14ed2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 157673, "upload_time": "2019-10-02T23:03:09", "url": "https://files.pythonhosted.org/packages/a5/0e/1ba4852b179d05b8002a65ce58b57feb6fe8e355ef20b34f66958ec9d6ca/feupy-0.3.4.tar.gz" } ] }