tquota.Quota
is a lightweight processing timer module designed to monitor time effectively when running code on cloud platforms with quota limitations, such as Kaggle and Google Colab. These platforms impose a limit of x
hours of processing per session, the Quota
class allows users to set a processing quota time and a buffer time before the quota limit ends, ensuring efficient resource management.
- Quota Management: Easily track and manage session time to avoid overuse of limited resources on platforms with quota restrictions.
-
Dynamic Gap Timing: Automatically adjusts the buffer time (
gap_time
) based on the remaining session time when set to'auto'
. -
Auto Gap Calculation: When
gap_time
is set to'auto'
, the system dynamically calculates the optimal gap before the session ends, ensuring efficient timing without the need for manual setup. - Simple Interface: The class provides Easy-to-use and intuitive methods to check whether time is still available or if the session has reached its limit.
- Optional Logging: Enable logging to track quota usage and gap timing for debugging or monitoring purposes.
- Compatibility: It can work with Python versions 2.7 and 3.0+.
The package tquota
includes a single class, Quota
, which has two main parameters and an optional one:
-
quota_time: (str) Default value:
6h
. Represents the maximum processing time for the session. -
gap_time: (str) Default value:
'auto'
. Represents the buffer time before the session closes, adjusted dynamically based on elapsed time. -
enable_logging: (bool, optional) Default value:
False
. Whether to enable logging or not.
The time should be specified in a strict format, consisting of two parts: dw
, where:
-
d: Represents the time as digits
-
w: Represents the time unit with one character:
[ s: Seconds, m: Minutes, h: Hours, d: Days]
The Quota
class provides the following key methods:
time_up
:
- Description: This method checks whether the processing time has reached or exceeded its quota limit.
-
Returns:
-
True
: If the process has reached or exceeded the defined quota time. -
False
: If there is still time remaining within the quota limit.
-
-
Usage:
if qt.time_up(): print('Time limit reached.')
hastime
:
- Description: This method checks whether there is still time left before the process reaches the quota limit.
-
Returns:
-
True
: If there is still time remaining before reaching the quota. -
False
: If the process has exceeded the quota time or is within the gap buffer.
-
-
Usage:
if qt.hastime(): print('Thereās still time to process.')
remaining_time
:
- Description: This method returns the remaining time before the quota limit is reached in a human-readable format.
-
Returns: A string representing the remaining time formatted as
"xh:xm:xs"
(e.g.,"0h:10m:15s"
for 10 minutes and 15 seconds remaining). -
Usage:
remaining = qt.remaining_time() print(f'Remaining time: {remaining}')
You can install the package from PyPI using the following command:
pip install tquota
Alternatively, you can clone the repository and install the package directly:
git clone https://github.com/aljbri/tquota.git
cd tquota
pip install .
Import the Quota
class as follows:
from tquota import Quota
- Using the time_up function:
from tquota import Quota
import time
# Quota time is set for 1 minute and gap time is auto-adjusted
qt = Quota('1m')
# Set quota_time for 1 minute and gap_time for 30 seconds
# qt = Quota('1m', '30s')
for i in range(1000):
time.sleep(1)
if qt.time_up():
print('The process has reached the limited time.')
break
- Using the hastime function:
from tquota import Quota
import time
# Quota time is set for 1 minute and gap time is auto-adjusted
# qt = Quota('1m')
# Set quota_time for 1 minute and gap_time for 30 seconds
qt = Quota('1m', '30s')
for i in range(1000):
time.sleep(1)
if not qt.hastime():
print('The process has reached the limited time.')
break
The Quota
class may raise the following exceptions:
-
ValueError
: Raised for invalid time formats or non-positive time values. -
TypeError
: Raised if non-string values are provided for time parameters. -
AttributeError
: Raised if internal properties are accessed incorrectly.
This project is licensed under the MIT License. See the LICENSE file for details.
- Initial implementation of the
quota
class.
- Major error fix
quota
class.
-
Auto Gap Time: Added support for automatic calculation of
gap_time
when it is set to'auto'
, dynamically adjusting the buffer time based on the session duration. -
Error Handling Enhancements: Improved validation for time formats, with clearer exceptions raised (
ValueError
,TypeError
,AttributeError
) for invalid inputs or improper usage. - Optimized Logging: Added an optional logging feature that provides detailed output for quota time, gap time, and overall usage when enabled.
- Performance Improvements: Optimized the time-tracking logic for smoother integration into various cloud platforms.
- Python Compatibility: Compatible with Python versions 2.7 and 3.0+.
Contributions are welcome! If you have suggestions or improvements, please feel free to submit a pull request or open an issue.
For inquiries or feedback, please contact the author at mr.aljbri@gmail.com.