Releases: RussellDash332/autokattis
v2.1.3
Skipped v2.1.2 because I forgot to make a release note for it.
What's new:
- Minor bugfixes as shown in the change log
- Rename of test cases for easier tracing
Full Changelog: v2.1.1...v2.1.3
v2.1.1
v2.1.0 release is skipped due to bugs found as soon as I published it 😄
What's new:
- Everything related about university is changed to affiliation: the URL endpoints, the fields, and so on
problemsin LDM mode will always show you all existing problems, without any filter applied- Legacy bugfix for
achievements - Fixes for
problem_authors, andproblem_sourcesdue to new table columns introduced - Fixes for
problemwhen there is partial scoring- Thanks to @hugo-morvan for spotting this issue!
- Added
breakpointsfield for more information on partial grading
Full Changelog: v2.0.2...v2.1.1
v2.0.2
Full Changelog: v2.0.1...v2.0.2
v2.0.1
What's new:
- Minor bug fixes found a day after the release of
v2.0. Not a fatal bug unless your connection is bad so it takes more than one attempt to perform a request
Full Changelog: v2.0...v2.0.1
v2.0
v2.0 is out!
The main motivation was mainly due to the design itself, though a bit on the functional requirements. I hope this makes it easier to maintain or to add more features in the future. Do take note of these changes should you upgrade it from v1.6.5 or lower.
TLDR: If you're just using the basic functions as per default settings, there is essentially little to no change.
What's new (in ascending order of importance, probably):
- Logging. This should be able to distinguish if you're using
v1.x.xorv2.0.# before Candidate username(s): ['...'] Successfully logged in to Kattis! # after [login] Candidate username(s): ['...'] [login] Successfully logged in to Kattis as ...! [database] Listed all available languages! [database] Listed all available countries! [database] Listed all available universities! - Better testing. I wanted to have a generalized testing function so it's easier to add more tests in the future. Simply provide a test name, the function, and the arguments, then you're good to go.
- More documentation. README changes are basic, so I decided to up the ante by adding example JSON return values within each method's docstring whenever necessary. Use the Python
helpfunction to read them! - Decoupling of main classes. I decided to not make
NUSKattisinheritOpenKattisbut decouple both and make them inherit a single (abstract) class. This makes it easier to implement more Kattis classes in the future. - Database manager. Instead of hardcoding them on a single file, a
DatabaseManagerthat takes the same data directly from Kattis should provide more accurate results, especially the languages provided since they might differ on different Kattis classes. With this, we no longer need thedatabaseand thescraperdirectories. - Login manager. Similar to the database manager, this is also made into a separate class
LoginManagerso that it's easier to handle different login behaviors in the future. - More common utilities. Be it a bunch of functions, or just more enums recently added to avoid magic numbers. However, to avoid grandparent relative importing like
from ..grandparent import something, I decided to moveutils/__init__.pytoapi/utils.py. Let's see how well that works out later. - The methods themselves. Here's some exhaustive changes should you cannot care less about the detailed changes:
- For
OpenKattis- You can still use
Kattis, but moving forward this package will be usingOpenKattisas the term for anything happening atopen.kattis.com. problems
Can still use as usual, except it now supports full/low detail mode. You can still get all existing problems by just doingproblems(*[True]*4)as per example on the README.problems_v2
Is now disabled. Please useproblemswithlow_detail_mode=Truearguments. For the record,problems_v2(show_non_ac=True)is currently implemented asproblems(low_detail_mode=True, show_solved=False).problem
Instead of providing variable arguments, aggregate them within a sequence/iterable. For example, useproblem(['a', 'b', 'c'])instead ofproblem('a', 'b', 'c'). It is now optional for you to download the files from the metadata by settingdownload_files=True.stats
Same asproblem, without the file downloading part.achievements
verboseis no longer a parameter (with a default value) because I did not see a good reason to have it 😄ranklist
Now divided to five separate methods:ranklist,user_ranklist,country_ranklist,university_ranklist, andchallenge_ranklist.- The default remains the same: get users around you.
- To get the top 100 user ranklist, we no longer use
ranklist(top_100=True). Instead, useuser_ranklist(). - To get the country ranklist, we can now get either the top 100 countries or the top 50 users in a specific country (as opposed to only being able to get the latter). So, instead of using
ranklist(country=<country>), use eithercountry_ranklist()orcountry_ranklist(<country>). - To get the university ranklist, we can now get either the top 100 universities or the top 50 users in a specific university (as opposed to only being able to get the latter). So, instead of using
ranklist(university=<university>), use eitheruniversity_ranklist()oruniversity_ranklist(<university>). - Added challenge ranklist by using the
challenge_ranklistmethod.
- You can still use
- For
NUSKattisproblems
Can still use as usual, except it now ONLY supports low detail mode. You can NO LONGER get all existing problems by just doingproblems(*[True]*4)as per example on the old README. Instead, treat this as the newproblems_v2. For the record again,problems_v2(show_non_ac=True)is currently implemented asproblems(show_solved=False).problems_v2
Same as the one forOpenKattis, i.e. disabled.problem
In terms of how you call this method, same as the one forOpenKattis.
In terms of what it does now, due to security issues, you can't treat it the same as the one forOpenKattis. It will only be accessible (i.e. show some non-empty result) if it is part of an existing course offering, be it a past one or a current one. Check out the docstring for more information about its JSON fields.stats
Same as the one forOpenKattis.
- For
I hope you enjoy reading all of that (or not?). If any changes are required, v2.0.1 or v2.1 shall await, depending on the significance of the change!
Full Changelog: v1.6.5...v2.0
v1.6.5
Some considerable changes in the UI/UX that made this update to be:
NUSKattisnow returns 403 upon access to problem statistics, which encourages the use ofproblems_v2forNUSKattisNUSKattisdoesn't "give" you the problem statement right away when searching for one, so technically it is now inaccessible. This should only affect the tests removal- Group/team name is officially a new column in the self-statistics page (both open and NUS Kattis), this affects
problems_v2andstatsmethods - Searching beyond the last page on the
problemstable will give you an empty table instead of wrapping around the last page
Full Changelog: v1.6.4...v1.6.5
v1.6.4
What's new:
problems_v2method that runs faster due to possible gateway (error code 502 and 504) issues fromproblemsespecially forNUSKattis- This only lists down the problem (ID)s and not the statistics such as the shortest/fastest solution
Full Changelog: v1.6.3...v1.6.4
v1.6.3
What's new:
- NUS course assignments are now displaying the problem name instead of the problem ID, so the ID has to be obtained from the hyperlink
Full Changelog: v1.6.2...v1.6.3
v1.6.2
What's new:
- Due to precision issues, the seaborn plot generated seems to combine multiple bins in one and let the neighboring bins empty, which is not an intended behavior
Full Changelog: v1.6.1...v1.6.2