redditadmin 0.0.4__tar.gz → 0.0.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. redditadmin-0.0.6/.idea/workspace.xml +113 -0
  2. redditadmin-0.0.6/PKG-INFO +166 -0
  3. redditadmin-0.0.6/README.md +152 -0
  4. {redditadmin-0.0.4 → redditadmin-0.0.6}/pyproject.toml +1 -1
  5. redditadmin-0.0.6/requirements.txt +2 -0
  6. redditadmin-0.0.4/.idea/workspace.xml +0 -184
  7. redditadmin-0.0.4/PKG-INFO +0 -15
  8. redditadmin-0.0.4/README.md +0 -1
  9. {redditadmin-0.0.4 → redditadmin-0.0.6}/.gitignore +0 -0
  10. {redditadmin-0.0.4 → redditadmin-0.0.6}/.idea/.gitignore +0 -0
  11. {redditadmin-0.0.4 → redditadmin-0.0.6}/.idea/inspectionProfiles/profiles_settings.xml +0 -0
  12. {redditadmin-0.0.4 → redditadmin-0.0.6}/.idea/misc.xml +0 -0
  13. {redditadmin-0.0.4 → redditadmin-0.0.6}/.idea/modules.xml +0 -0
  14. {redditadmin-0.0.4 → redditadmin-0.0.6}/.idea/reddit-admin.iml +0 -0
  15. {redditadmin-0.0.4 → redditadmin-0.0.6}/.idea/vcs.xml +0 -0
  16. {redditadmin-0.0.4 → redditadmin-0.0.6}/.prettierrc +0 -0
  17. {redditadmin-0.0.4 → redditadmin-0.0.6}/.vscode/settings.json +0 -0
  18. {redditadmin-0.0.4 → redditadmin-0.0.6}/LICENSE +0 -0
  19. {redditadmin-0.0.4 → redditadmin-0.0.6}/praw.ini +0 -0
  20. {redditadmin-0.0.4 → redditadmin-0.0.6}/src/__init__.py +0 -0
  21. {redditadmin-0.0.4 → redditadmin-0.0.6}/src/redditadmin/__init__.py +0 -0
  22. {redditadmin-0.0.4 → redditadmin-0.0.6}/src/redditadmin/core.py +0 -0
  23. {redditadmin-0.0.4 → redditadmin-0.0.6}/src/redditadmin/plugin/__init__.py +0 -0
  24. {redditadmin-0.0.4 → redditadmin-0.0.6}/src/redditadmin/plugin/asynchronouspluginsexecutor.py +0 -0
  25. {redditadmin-0.0.4 → redditadmin-0.0.6}/src/redditadmin/plugin/exceptions.py +0 -0
  26. {redditadmin-0.0.4 → redditadmin-0.0.6}/src/redditadmin/plugin/plugin.py +0 -0
  27. {redditadmin-0.0.4 → redditadmin-0.0.6}/src/redditadmin/plugin/pluginsexecutor.py +0 -0
  28. {redditadmin-0.0.4 → redditadmin-0.0.6}/src/redditadmin/plugin/redditinterfacefactory.py +0 -0
  29. {redditadmin-0.0.4 → redditadmin-0.0.6}/src/redditadmin/program/__init__.py +0 -0
  30. {redditadmin-0.0.4 → redditadmin-0.0.6}/src/redditadmin/program/program.py +0 -0
  31. {redditadmin-0.0.4 → redditadmin-0.0.6}/src/redditadmin/program/streamprocessingprogram.py +0 -0
  32. {redditadmin-0.0.4 → redditadmin-0.0.6}/src/redditadmin/utility/__init__.py +0 -0
  33. {redditadmin-0.0.4 → redditadmin-0.0.6}/src/redditadmin/utility/botcredentials.py +0 -0
  34. {redditadmin-0.0.4 → redditadmin-0.0.6}/src/redditadmin/utility/contributionsutility.py +0 -0
  35. {redditadmin-0.0.4 → redditadmin-0.0.6}/src/redditadmin/utility/decorators.py +0 -0
  36. {redditadmin-0.0.4 → redditadmin-0.0.6}/src/redditadmin/utility/exceptions.py +0 -0
  37. {redditadmin-0.0.4 → redditadmin-0.0.6}/src/redditadmin/utility/redditinterface.py +0 -0
  38. {redditadmin-0.0.4 → redditadmin-0.0.6}/src/redditadmin/utility/redditsubmission.py +0 -0
@@ -0,0 +1,113 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="AutoImportSettings">
4
+ <option name="autoReloadType" value="SELECTIVE" />
5
+ </component>
6
+ <component name="ChangeListManager">
7
+ <list default="true" id="195f63d3-192c-4e64-8cd8-909be23b7f21" name="Changes" comment="" />
8
+ <option name="SHOW_DIALOG" value="false" />
9
+ <option name="HIGHLIGHT_CONFLICTS" value="true" />
10
+ <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
11
+ <option name="LAST_RESOLUTION" value="IGNORE" />
12
+ </component>
13
+ <component name="FileTemplateManagerImpl">
14
+ <option name="RECENT_TEMPLATES">
15
+ <list>
16
+ <option value="Python Script" />
17
+ </list>
18
+ </option>
19
+ </component>
20
+ <component name="Git.Settings">
21
+ <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
22
+ </component>
23
+ <component name="MarkdownSettingsMigration">
24
+ <option name="stateVersion" value="1" />
25
+ </component>
26
+ <component name="ProjectId" id="32p8OlMlwQ8WROlkny3tCkSz7AU" />
27
+ <component name="ProjectLevelVcsManager">
28
+ <ConfirmationsSetting value="1" id="Add" />
29
+ </component>
30
+ <component name="ProjectViewState">
31
+ <option name="hideEmptyMiddlePackages" value="true" />
32
+ <option name="showLibraryContents" value="true" />
33
+ </component>
34
+ <component name="PropertiesComponent">
35
+ <property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
36
+ <property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
37
+ <property name="last_opened_file_path" value="$PROJECT_DIR$/../reddit-admin-configurator" />
38
+ <property name="settings.editor.selected.configurable" value="preferences.keymap" />
39
+ </component>
40
+ <component name="RecentsManager">
41
+ <key name="MoveFile.RECENT_KEYS">
42
+ <recent name="C:\Users\IT DIR\Documents\sys\Software Projects\reddit-admin\src\redditadmin" />
43
+ <recent name="C:\Users\IT DIR\Documents\sys\Software Projects\reddit-admin\src\redditadmin\plugin" />
44
+ <recent name="C:\Users\IT DIR\Documents\sys\Software Projects\reddit-admin\src\redditadmin\pluginsexecutor" />
45
+ <recent name="C:\Users\IT DIR\Documents\sys\Software Projects\reddit-admin\src\redditadmin\core" />
46
+ <recent name="C:\Users\IT DIR\Documents\sys\Software Projects\reddit-admin\src\redditadmin\main" />
47
+ </key>
48
+ </component>
49
+ <component name="RunManager">
50
+ <configuration name="test" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
51
+ <module name="reddit-admin" />
52
+ <option name="INTERPRETER_OPTIONS" value="" />
53
+ <option name="PARENT_ENVS" value="true" />
54
+ <envs>
55
+ <env name="PYTHONUNBUFFERED" value="1" />
56
+ </envs>
57
+ <option name="SDK_HOME" value="" />
58
+ <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
59
+ <option name="IS_MODULE_SDK" value="true" />
60
+ <option name="ADD_CONTENT_ROOTS" value="true" />
61
+ <option name="ADD_SOURCE_ROOTS" value="true" />
62
+ <option name="SCRIPT_NAME" value="$PROJECT_DIR$/test.py" />
63
+ <option name="PARAMETERS" value="" />
64
+ <option name="SHOW_COMMAND_LINE" value="false" />
65
+ <option name="EMULATE_TERMINAL" value="false" />
66
+ <option name="MODULE_MODE" value="false" />
67
+ <option name="REDIRECT_INPUT" value="false" />
68
+ <option name="INPUT_FILE" value="" />
69
+ <method v="2" />
70
+ </configuration>
71
+ <recent_temporary>
72
+ <list>
73
+ <item itemvalue="Python.test" />
74
+ </list>
75
+ </recent_temporary>
76
+ </component>
77
+ <component name="SharedIndexes">
78
+ <attachedChunks>
79
+ <set>
80
+ <option value="bundled-js-predefined-d6986cc7102b-b598e85cdad2-JavaScript-PY-252.25557.178" />
81
+ <option value="bundled-python-sdk-ce6832f46686-7b97d883f26b-com.jetbrains.pycharm.pro.sharedIndexes.bundled-PY-252.25557.178" />
82
+ </set>
83
+ </attachedChunks>
84
+ </component>
85
+ <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
86
+ <component name="TaskManager">
87
+ <task active="true" id="Default" summary="Default task">
88
+ <changelist id="195f63d3-192c-4e64-8cd8-909be23b7f21" name="Changes" comment="" />
89
+ <created>1758106143570</created>
90
+ <option name="number" value="Default" />
91
+ <option name="presentableId" value="Default" />
92
+ <updated>1758106143570</updated>
93
+ <workItem from="1758106901905" duration="242000" />
94
+ <workItem from="1758116790749" duration="4796000" />
95
+ <workItem from="1758191562568" duration="1286000" />
96
+ </task>
97
+ <servers />
98
+ </component>
99
+ <component name="TypeScriptGeneratedFilesManager">
100
+ <option name="version" value="3" />
101
+ </component>
102
+ <component name="Vcs.Log.Tabs.Properties">
103
+ <option name="TAB_STATES">
104
+ <map>
105
+ <entry key="MAIN">
106
+ <value>
107
+ <State />
108
+ </value>
109
+ </entry>
110
+ </map>
111
+ </option>
112
+ </component>
113
+ </project>
@@ -0,0 +1,166 @@
1
+ Metadata-Version: 2.4
2
+ Name: redditadmin
3
+ Version: 0.0.6
4
+ Summary: Extensible Python administrative bot
5
+ Project-URL: Homepage, https://github.com/Grod56/reddit-admin
6
+ Project-URL: Issues, https://github.com/Grod56/reddit-admin/issues
7
+ Author-email: Grod56 <providenceuniversalstudios@gmail.com>
8
+ License-Expression: MIT
9
+ License-File: LICENSE
10
+ Classifier: Operating System :: OS Independent
11
+ Classifier: Programming Language :: Python :: 3
12
+ Requires-Python: >=3.9
13
+ Description-Content-Type: text/markdown
14
+
15
+ # Reddit Admin
16
+
17
+ [![pypi](https://img.shields.io/pypi/v/redditadmin.svg)](https://pypi.org/project/redditadmin/)
18
+
19
+ Plugin-based, extensible administrative Reddit bot framework capable of managing and running multiple 'plugins' (i.e. scripts) asynchronously. Built on top of the PRAW API client wrapper.
20
+
21
+ It includes a working implementation of the bot itself and tools to build plugins for the bot to run.
22
+
23
+ ## Installation
24
+
25
+ ```console
26
+ pip install redditadmin
27
+ ```
28
+
29
+ For instructions on installing Python and `pip` see "The Hitchhiker's Guide to Python"
30
+ [Installation Guides](https://docs.python-guide.org/en/latest/starting/installation/).
31
+
32
+ ## Quickstart
33
+
34
+ `reddit-admin` requires two things in order for it to work:
35
+
36
+ - Valid OAuth script application credentials i.e. `client_id`, `client_secret`, `username`, `password` and `user_agent` (see more about that [here](https://github.com/reddit-archive/reddit/wiki/OAuth2-Quick-Start-Example#first-steps))
37
+ - A list of plugins (will discuss more about how to implement these later)
38
+
39
+ Assuming that both of these are provided for, the bot may be run in this way:
40
+
41
+ ```py
42
+ from redditadmin import get_reddit_admin, BotCredentials
43
+
44
+ # Enter the OAuth credentials into the BotCredentials constructor
45
+ bot_credentials = BotCredentials(
46
+ client_id="example_id",
47
+ client_secret="example_secret",
48
+ user_agent="example_useragent",
49
+ username="example_username",
50
+ password="example_password"
51
+ )
52
+
53
+ # List of plugins provided by the user
54
+ plugins = [plugin1, plugin2, ...]
55
+
56
+ # Built-in function to get an instance of the reddit-admin bot
57
+ reddit_admin = get_reddit_admin(
58
+ plugins=plugins
59
+ )
60
+
61
+ # Running the bot
62
+ reddit_admin.run(
63
+ bot_credentials=bot_credentials,
64
+ listen=False # (Default value)
65
+ )
66
+ ```
67
+
68
+ _NOTE: `RedditAdmin.run()` is a blocking command, meaning that no further code will execute until either the `RedditAdmin.stop()` function is called elsewhere, or if the bot receives a `SIGINT` or `SIGTERM` signal._
69
+
70
+ Console output:
71
+
72
+ ```
73
+ redditadmin.core : Initializing the bot
74
+ Asynchronous Plugins Executor : Initializing Plugins Executor
75
+ Asynchronous Plugins Executor : Retrieving initial program commands
76
+ Asynchronous Plugins Executor : Executing initial program commands
77
+ Asynchronous Plugins Executor : Running program 'plugin1_program'
78
+ Asynchronous Plugins Executor : Running program 'plugin2_program'
79
+ Asynchronous Plugins Executor : Programs Executor initialized
80
+ redditadmin.core : Bot successfully initialized
81
+ redditadmin.core : The bot is now running
82
+ ```
83
+
84
+ ### Bot modes
85
+
86
+ The bot runs in two modes: 'listening' mode and 'autonomous' mode. In listening mode, the bot is capable of receiving commands through the console input, while in autonomous mode, the bot only responds to system signals (e.g. `SIGINT`).
87
+
88
+ Listening mode bot commands:
89
+
90
+ - `status` - displays the status of running plugin programs
91
+ - `run` - runs a plugin program (provided one is not already running)
92
+ - `shutdown/quit/exit` - shuts down the bot
93
+
94
+ ## Plugins
95
+
96
+ Plugins are mini-applications run and managed by Reddit Admin which instantiate a specific task or program.
97
+
98
+ The `redditadminplugins` Python package contains some useful plugins which may be adapted to the user's needs (see more [here](https://pypi.org/project/redditadminplugins/)).
99
+
100
+ To create a custom plugin, you need to do 2 things:
101
+
102
+ - To implement a `Program`
103
+ - To implement a `Plugin` based on the implemented program
104
+
105
+ For example, we may create a plugin which automatically posts a submission to the r/test subreddit when run as follows:
106
+
107
+ Program:
108
+
109
+ ```py
110
+ from redditadmin import Plugin, Program, get_reddit_admin
111
+
112
+
113
+ class MyProgram[Program]:
114
+ """The program to post our submission"""
115
+
116
+ def __init__(praw_reddit):
117
+ super().__init__("My Program")
118
+ self.praw_reddit = praw_reddit
119
+
120
+ def execute(self, *args, **kwargs):
121
+ """Overriden from the Program superclass"""
122
+
123
+ self.praw_reddit.subreddit('test').submit(
124
+ title="Testing 123",
125
+ url="https://google.com"
126
+ )
127
+ ```
128
+
129
+ Plugin:
130
+
131
+ ```py
132
+ class MyPlugin[Plugin[MyProgram]]
133
+ """The plugin for our program"""
134
+
135
+ def __init__():
136
+ super().__init__("myprogram")
137
+
138
+ def get_program(self, reddit_interface):
139
+ """Overriden from Plugin superclass"""
140
+
141
+ praw_reddit = reddit_interface.get_praw_reddit
142
+
143
+ return MyProgram(praw_reddit)
144
+ ```
145
+
146
+ Voila! We may now supply our plugin to the bot and run it just as we did before
147
+
148
+ ```py
149
+ plugin = MyPlugin()
150
+ bot_credentials = ...
151
+
152
+ reddit_admin = get_reddit_admin(
153
+ plugins=[plugin]
154
+ )
155
+
156
+ reddit_admin.run(
157
+ bot_credentials=bot_credentials
158
+ )
159
+ ```
160
+
161
+ For more information on how to use PRAW in your plugins, see the official repository [here](https://github.com/praw-dev/praw).
162
+
163
+ ## See more
164
+
165
+ - [reddit-admin-plugins](https://github.com/Grod56/reddit-admin-plugins)
166
+ - [PRAW](https://github.com/praw-dev/praw)
@@ -0,0 +1,152 @@
1
+ # Reddit Admin
2
+
3
+ [![pypi](https://img.shields.io/pypi/v/redditadmin.svg)](https://pypi.org/project/redditadmin/)
4
+
5
+ Plugin-based, extensible administrative Reddit bot framework capable of managing and running multiple 'plugins' (i.e. scripts) asynchronously. Built on top of the PRAW API client wrapper.
6
+
7
+ It includes a working implementation of the bot itself and tools to build plugins for the bot to run.
8
+
9
+ ## Installation
10
+
11
+ ```console
12
+ pip install redditadmin
13
+ ```
14
+
15
+ For instructions on installing Python and `pip` see "The Hitchhiker's Guide to Python"
16
+ [Installation Guides](https://docs.python-guide.org/en/latest/starting/installation/).
17
+
18
+ ## Quickstart
19
+
20
+ `reddit-admin` requires two things in order for it to work:
21
+
22
+ - Valid OAuth script application credentials i.e. `client_id`, `client_secret`, `username`, `password` and `user_agent` (see more about that [here](https://github.com/reddit-archive/reddit/wiki/OAuth2-Quick-Start-Example#first-steps))
23
+ - A list of plugins (will discuss more about how to implement these later)
24
+
25
+ Assuming that both of these are provided for, the bot may be run in this way:
26
+
27
+ ```py
28
+ from redditadmin import get_reddit_admin, BotCredentials
29
+
30
+ # Enter the OAuth credentials into the BotCredentials constructor
31
+ bot_credentials = BotCredentials(
32
+ client_id="example_id",
33
+ client_secret="example_secret",
34
+ user_agent="example_useragent",
35
+ username="example_username",
36
+ password="example_password"
37
+ )
38
+
39
+ # List of plugins provided by the user
40
+ plugins = [plugin1, plugin2, ...]
41
+
42
+ # Built-in function to get an instance of the reddit-admin bot
43
+ reddit_admin = get_reddit_admin(
44
+ plugins=plugins
45
+ )
46
+
47
+ # Running the bot
48
+ reddit_admin.run(
49
+ bot_credentials=bot_credentials,
50
+ listen=False # (Default value)
51
+ )
52
+ ```
53
+
54
+ _NOTE: `RedditAdmin.run()` is a blocking command, meaning that no further code will execute until either the `RedditAdmin.stop()` function is called elsewhere, or if the bot receives a `SIGINT` or `SIGTERM` signal._
55
+
56
+ Console output:
57
+
58
+ ```
59
+ redditadmin.core : Initializing the bot
60
+ Asynchronous Plugins Executor : Initializing Plugins Executor
61
+ Asynchronous Plugins Executor : Retrieving initial program commands
62
+ Asynchronous Plugins Executor : Executing initial program commands
63
+ Asynchronous Plugins Executor : Running program 'plugin1_program'
64
+ Asynchronous Plugins Executor : Running program 'plugin2_program'
65
+ Asynchronous Plugins Executor : Programs Executor initialized
66
+ redditadmin.core : Bot successfully initialized
67
+ redditadmin.core : The bot is now running
68
+ ```
69
+
70
+ ### Bot modes
71
+
72
+ The bot runs in two modes: 'listening' mode and 'autonomous' mode. In listening mode, the bot is capable of receiving commands through the console input, while in autonomous mode, the bot only responds to system signals (e.g. `SIGINT`).
73
+
74
+ Listening mode bot commands:
75
+
76
+ - `status` - displays the status of running plugin programs
77
+ - `run` - runs a plugin program (provided one is not already running)
78
+ - `shutdown/quit/exit` - shuts down the bot
79
+
80
+ ## Plugins
81
+
82
+ Plugins are mini-applications run and managed by Reddit Admin which instantiate a specific task or program.
83
+
84
+ The `redditadminplugins` Python package contains some useful plugins which may be adapted to the user's needs (see more [here](https://pypi.org/project/redditadminplugins/)).
85
+
86
+ To create a custom plugin, you need to do 2 things:
87
+
88
+ - To implement a `Program`
89
+ - To implement a `Plugin` based on the implemented program
90
+
91
+ For example, we may create a plugin which automatically posts a submission to the r/test subreddit when run as follows:
92
+
93
+ Program:
94
+
95
+ ```py
96
+ from redditadmin import Plugin, Program, get_reddit_admin
97
+
98
+
99
+ class MyProgram[Program]:
100
+ """The program to post our submission"""
101
+
102
+ def __init__(praw_reddit):
103
+ super().__init__("My Program")
104
+ self.praw_reddit = praw_reddit
105
+
106
+ def execute(self, *args, **kwargs):
107
+ """Overriden from the Program superclass"""
108
+
109
+ self.praw_reddit.subreddit('test').submit(
110
+ title="Testing 123",
111
+ url="https://google.com"
112
+ )
113
+ ```
114
+
115
+ Plugin:
116
+
117
+ ```py
118
+ class MyPlugin[Plugin[MyProgram]]
119
+ """The plugin for our program"""
120
+
121
+ def __init__():
122
+ super().__init__("myprogram")
123
+
124
+ def get_program(self, reddit_interface):
125
+ """Overriden from Plugin superclass"""
126
+
127
+ praw_reddit = reddit_interface.get_praw_reddit
128
+
129
+ return MyProgram(praw_reddit)
130
+ ```
131
+
132
+ Voila! We may now supply our plugin to the bot and run it just as we did before
133
+
134
+ ```py
135
+ plugin = MyPlugin()
136
+ bot_credentials = ...
137
+
138
+ reddit_admin = get_reddit_admin(
139
+ plugins=[plugin]
140
+ )
141
+
142
+ reddit_admin.run(
143
+ bot_credentials=bot_credentials
144
+ )
145
+ ```
146
+
147
+ For more information on how to use PRAW in your plugins, see the official repository [here](https://github.com/praw-dev/praw).
148
+
149
+ ## See more
150
+
151
+ - [reddit-admin-plugins](https://github.com/Grod56/reddit-admin-plugins)
152
+ - [PRAW](https://github.com/praw-dev/praw)
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "redditadmin"
7
- version = "0.0.4"
7
+ version = "0.0.6"
8
8
  authors = [
9
9
  { name="Grod56", email="providenceuniversalstudios@gmail.com" },
10
10
  ]
@@ -0,0 +1,2 @@
1
+ praw
2
+ prawcore
@@ -1,184 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="AutoImportSettings">
4
- <option name="autoReloadType" value="SELECTIVE" />
5
- </component>
6
- <component name="ChangeListManager">
7
- <list default="true" id="195f63d3-192c-4e64-8cd8-909be23b7f21" name="Changes" comment="">
8
- <change beforePath="$PROJECT_DIR$/.gitignore" beforeDir="false" afterPath="$PROJECT_DIR$/.gitignore" afterDir="false" />
9
- <change beforePath="$PROJECT_DIR$/.idea/reddit-admin.iml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/reddit-admin.iml" afterDir="false" />
10
- <change beforePath="$PROJECT_DIR$/Dockerfile" beforeDir="false" />
11
- <change beforePath="$PROJECT_DIR$/Procfile" beforeDir="false" />
12
- <change beforePath="$PROJECT_DIR$/RedditAdmin.py" beforeDir="false" />
13
- <change beforePath="$PROJECT_DIR$/botapplicationtools/__init__.py" beforeDir="false" />
14
- <change beforePath="$PROJECT_DIR$/botapplicationtools/general/ContributionsUtility.py" beforeDir="false" />
15
- <change beforePath="$PROJECT_DIR$/botapplicationtools/general/Decorators.py" beforeDir="false" />
16
- <change beforePath="$PROJECT_DIR$/botapplicationtools/general/RedditInterface.py" beforeDir="false" />
17
- <change beforePath="$PROJECT_DIR$/botapplicationtools/general/Submission.py" beforeDir="false" />
18
- <change beforePath="$PROJECT_DIR$/botapplicationtools/general/__init__.py" beforeDir="false" />
19
- <change beforePath="$PROJECT_DIR$/botapplicationtools/general/botcredentials/BotCredentials.py" beforeDir="false" />
20
- <change beforePath="$PROJECT_DIR$/botapplicationtools/general/botcredentials/InvalidBotCredentialsError.py" beforeDir="false" />
21
- <change beforePath="$PROJECT_DIR$/botapplicationtools/general/botcredentials/__init__.py" beforeDir="false" />
22
- <change beforePath="$PROJECT_DIR$/botapplicationtools/general/exceptions/BotInitializationError.py" beforeDir="false" />
23
- <change beforePath="$PROJECT_DIR$/botapplicationtools/general/exceptions/InitializationError.py" beforeDir="false" />
24
- <change beforePath="$PROJECT_DIR$/botapplicationtools/general/exceptions/__init__.py" beforeDir="false" />
25
- <change beforePath="$PROJECT_DIR$/botapplicationtools/program/Program.py" beforeDir="false" />
26
- <change beforePath="$PROJECT_DIR$/botapplicationtools/program/RecurringProgram.py" beforeDir="false" />
27
- <change beforePath="$PROJECT_DIR$/botapplicationtools/program/__init__.py" beforeDir="false" />
28
- <change beforePath="$PROJECT_DIR$/botapplicationtools/program/streamprocessingprogram/CommentStreamFactory.py" beforeDir="false" />
29
- <change beforePath="$PROJECT_DIR$/botapplicationtools/program/streamprocessingprogram/CustomStreamFactory.py" beforeDir="false" />
30
- <change beforePath="$PROJECT_DIR$/botapplicationtools/program/streamprocessingprogram/StreamFactory.py" beforeDir="false" />
31
- <change beforePath="$PROJECT_DIR$/botapplicationtools/program/streamprocessingprogram/StreamProcessingProgram.py" beforeDir="false" />
32
- <change beforePath="$PROJECT_DIR$/botapplicationtools/program/streamprocessingprogram/SubmissionStreamFactory.py" beforeDir="false" />
33
- <change beforePath="$PROJECT_DIR$/botapplicationtools/program/streamprocessingprogram/__init__.py" beforeDir="false" />
34
- <change beforePath="$PROJECT_DIR$/botapplicationtools/programsexecutor/AsynchronousProgramsExecutor.py" beforeDir="false" />
35
- <change beforePath="$PROJECT_DIR$/botapplicationtools/programsexecutor/ProgramsExecutor.py" beforeDir="false" />
36
- <change beforePath="$PROJECT_DIR$/botapplicationtools/programsexecutor/__init__.py" beforeDir="false" />
37
- <change beforePath="$PROJECT_DIR$/botapplicationtools/programsexecutor/exceptions/ProgramsExecutorInitializationError.py" beforeDir="false" />
38
- <change beforePath="$PROJECT_DIR$/botapplicationtools/programsexecutor/exceptions/__init__.py" beforeDir="false" />
39
- <change beforePath="$PROJECT_DIR$/botapplicationtools/programsexecutor/programsexecutortools/RedditInterfaceFactory.py" beforeDir="false" />
40
- <change beforePath="$PROJECT_DIR$/botapplicationtools/programsexecutor/programsexecutortools/__init__.py" beforeDir="false" />
41
- <change beforePath="$PROJECT_DIR$/plugins/ProgramFactory.py" beforeDir="false" />
42
- <change beforePath="$PROJECT_DIR$/plugins/ProgramFactoryInitializationError.py" beforeDir="false" />
43
- <change beforePath="$PROJECT_DIR$/plugins/adminupdater/AdminUpdaterFactory.py" beforeDir="false" />
44
- <change beforePath="$PROJECT_DIR$/plugins/adminupdater/tools/AdminUpdate.py" beforeDir="false" />
45
- <change beforePath="$PROJECT_DIR$/plugins/adminupdater/tools/AdminUpdateDAO.py" beforeDir="false" />
46
- <change beforePath="$PROJECT_DIR$/plugins/adminupdater/tools/AdminUpdater.py" beforeDir="false" />
47
- <change beforePath="$PROJECT_DIR$/plugins/adminupdater/tools/FormattingTools.py" beforeDir="false" />
48
- <change beforePath="$PROJECT_DIR$/plugins/adminupdater/tools/RedditTools.py" beforeDir="false" />
49
- <change beforePath="$PROJECT_DIR$/plugins/adminupdater/tools/__init__.py" beforeDir="false" />
50
- <change beforePath="$PROJECT_DIR$/plugins/messagecommandprocessor/MessageCommandProcessorFactory.py" beforeDir="false" />
51
- <change beforePath="$PROJECT_DIR$/plugins/messagecommandprocessor/tools/MessageCommandProcessor.py" beforeDir="false" />
52
- <change beforePath="$PROJECT_DIR$/plugins/messagecommandprocessor/tools/__init__.py" beforeDir="false" />
53
- <change beforePath="$PROJECT_DIR$/plugins/messagecommandprocessor/tools/commandprocessors/CommandProcessor.py" beforeDir="false" />
54
- <change beforePath="$PROJECT_DIR$/plugins/messagecommandprocessor/tools/commandprocessors/__init__.py" beforeDir="false" />
55
- <change beforePath="$PROJECT_DIR$/plugins/messagecommandprocessor/tools/messagecommandprocessortools/CommandProcessorFactory.py" beforeDir="false" />
56
- <change beforePath="$PROJECT_DIR$/plugins/messagecommandprocessor/tools/messagecommandprocessortools/Decorators.py" beforeDir="false" />
57
- <change beforePath="$PROJECT_DIR$/plugins/messagecommandprocessor/tools/messagecommandprocessortools/__init__.py" beforeDir="false" />
58
- <change beforePath="$PROJECT_DIR$/plugins/messagecommandprocessor/tools/messagecommandprocessortools/testfeaturetools/FeatureTester.py" beforeDir="false" />
59
- <change beforePath="$PROJECT_DIR$/plugins/messagecommandprocessor/tools/messagecommandprocessortools/testfeaturetools/FeatureTesterDAO.py" beforeDir="false" />
60
- <change beforePath="$PROJECT_DIR$/plugins/messagecommandprocessor/tools/messagecommandprocessortools/testfeaturetools/__init__.py" beforeDir="false" />
61
- <change beforePath="$PROJECT_DIR$/plugins/scheduledcrossposter/ScheduledCrossposterFactory.py" beforeDir="false" />
62
- <change beforePath="$PROJECT_DIR$/plugins/scheduledcrossposter/tools/CompletedCrosspostDAO.py" beforeDir="false" />
63
- <change beforePath="$PROJECT_DIR$/plugins/scheduledcrossposter/tools/ScheduledCrosspost.py" beforeDir="false" />
64
- <change beforePath="$PROJECT_DIR$/plugins/scheduledcrossposter/tools/ScheduledCrosspostDAO.py" beforeDir="false" />
65
- <change beforePath="$PROJECT_DIR$/plugins/scheduledcrossposter/tools/ScheduledCrossposter.py" beforeDir="false" />
66
- <change beforePath="$PROJECT_DIR$/plugins/scheduledcrossposter/tools/ScheduledCrossposterStorage.py" beforeDir="false" />
67
- <change beforePath="$PROJECT_DIR$/plugins/scheduledcrossposter/tools/__init__.py" beforeDir="false" />
68
- <change beforePath="$PROJECT_DIR$/plugins/scheduledposter/ScheduledPosterFactory.py" beforeDir="false" />
69
- <change beforePath="$PROJECT_DIR$/plugins/scheduledposter/tools/CompletedSubmissionDAO.py" beforeDir="false" />
70
- <change beforePath="$PROJECT_DIR$/plugins/scheduledposter/tools/ScheduledPoster.py" beforeDir="false" />
71
- <change beforePath="$PROJECT_DIR$/plugins/scheduledposter/tools/ScheduledPosterStorage.py" beforeDir="false" />
72
- <change beforePath="$PROJECT_DIR$/plugins/scheduledposter/tools/ScheduledSubmission.py" beforeDir="false" />
73
- <change beforePath="$PROJECT_DIR$/plugins/scheduledposter/tools/ScheduledSubmissionDAO.py" beforeDir="false" />
74
- <change beforePath="$PROJECT_DIR$/plugins/scheduledposter/tools/__init__.py" beforeDir="false" />
75
- <change beforePath="$PROJECT_DIR$/requirements.txt" beforeDir="false" />
76
- <change beforePath="$PROJECT_DIR$/resources/.gitignore" beforeDir="false" />
77
- <change beforePath="$PROJECT_DIR$/resources/plugins.ini" beforeDir="false" />
78
- </list>
79
- <option name="SHOW_DIALOG" value="false" />
80
- <option name="HIGHLIGHT_CONFLICTS" value="true" />
81
- <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
82
- <option name="LAST_RESOLUTION" value="IGNORE" />
83
- </component>
84
- <component name="FileTemplateManagerImpl">
85
- <option name="RECENT_TEMPLATES">
86
- <list>
87
- <option value="Python Script" />
88
- </list>
89
- </option>
90
- </component>
91
- <component name="Git.Settings">
92
- <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
93
- </component>
94
- <component name="MarkdownSettingsMigration">
95
- <option name="stateVersion" value="1" />
96
- </component>
97
- <component name="ProjectId" id="32p8OlMlwQ8WROlkny3tCkSz7AU" />
98
- <component name="ProjectLevelVcsManager">
99
- <ConfirmationsSetting value="1" id="Add" />
100
- </component>
101
- <component name="ProjectViewState">
102
- <option name="hideEmptyMiddlePackages" value="true" />
103
- <option name="showLibraryContents" value="true" />
104
- </component>
105
- <component name="PropertiesComponent">
106
- <property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
107
- <property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
108
- <property name="last_opened_file_path" value="$PROJECT_DIR$/src/redditadmin/core/_redditadminimplementation.py" />
109
- <property name="settings.editor.selected.configurable" value="preferences.keymap" />
110
- </component>
111
- <component name="RecentsManager">
112
- <key name="MoveFile.RECENT_KEYS">
113
- <recent name="C:\Users\IT DIR\Documents\sys\Software Projects\reddit-admin\src\redditadmin" />
114
- <recent name="C:\Users\IT DIR\Documents\sys\Software Projects\reddit-admin\src\redditadmin\plugin" />
115
- <recent name="C:\Users\IT DIR\Documents\sys\Software Projects\reddit-admin\src\redditadmin\pluginsexecutor" />
116
- <recent name="C:\Users\IT DIR\Documents\sys\Software Projects\reddit-admin\src\redditadmin\core" />
117
- <recent name="C:\Users\IT DIR\Documents\sys\Software Projects\reddit-admin\src\redditadmin\main" />
118
- </key>
119
- </component>
120
- <component name="RunManager">
121
- <configuration name="test" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
122
- <module name="reddit-admin" />
123
- <option name="INTERPRETER_OPTIONS" value="" />
124
- <option name="PARENT_ENVS" value="true" />
125
- <envs>
126
- <env name="PYTHONUNBUFFERED" value="1" />
127
- </envs>
128
- <option name="SDK_HOME" value="" />
129
- <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
130
- <option name="IS_MODULE_SDK" value="true" />
131
- <option name="ADD_CONTENT_ROOTS" value="true" />
132
- <option name="ADD_SOURCE_ROOTS" value="true" />
133
- <option name="SCRIPT_NAME" value="$PROJECT_DIR$/test.py" />
134
- <option name="PARAMETERS" value="" />
135
- <option name="SHOW_COMMAND_LINE" value="false" />
136
- <option name="EMULATE_TERMINAL" value="false" />
137
- <option name="MODULE_MODE" value="false" />
138
- <option name="REDIRECT_INPUT" value="false" />
139
- <option name="INPUT_FILE" value="" />
140
- <method v="2" />
141
- </configuration>
142
- <recent_temporary>
143
- <list>
144
- <item itemvalue="Python.test" />
145
- </list>
146
- </recent_temporary>
147
- </component>
148
- <component name="SharedIndexes">
149
- <attachedChunks>
150
- <set>
151
- <option value="bundled-js-predefined-d6986cc7102b-b598e85cdad2-JavaScript-PY-252.25557.178" />
152
- <option value="bundled-python-sdk-ce6832f46686-7b97d883f26b-com.jetbrains.pycharm.pro.sharedIndexes.bundled-PY-252.25557.178" />
153
- </set>
154
- </attachedChunks>
155
- </component>
156
- <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
157
- <component name="TaskManager">
158
- <task active="true" id="Default" summary="Default task">
159
- <changelist id="195f63d3-192c-4e64-8cd8-909be23b7f21" name="Changes" comment="" />
160
- <created>1758106143570</created>
161
- <option name="number" value="Default" />
162
- <option name="presentableId" value="Default" />
163
- <updated>1758106143570</updated>
164
- <workItem from="1758106901905" duration="242000" />
165
- <workItem from="1758116790749" duration="4796000" />
166
- <workItem from="1758191562568" duration="1286000" />
167
- </task>
168
- <servers />
169
- </component>
170
- <component name="TypeScriptGeneratedFilesManager">
171
- <option name="version" value="3" />
172
- </component>
173
- <component name="Vcs.Log.Tabs.Properties">
174
- <option name="TAB_STATES">
175
- <map>
176
- <entry key="MAIN">
177
- <value>
178
- <State />
179
- </value>
180
- </entry>
181
- </map>
182
- </option>
183
- </component>
184
- </project>
@@ -1,15 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: redditadmin
3
- Version: 0.0.4
4
- Summary: Extensible Python administrative bot
5
- Project-URL: Homepage, https://github.com/Grod56/reddit-admin
6
- Project-URL: Issues, https://github.com/Grod56/reddit-admin/issues
7
- Author-email: Grod56 <providenceuniversalstudios@gmail.com>
8
- License-Expression: MIT
9
- License-File: LICENSE
10
- Classifier: Operating System :: OS Independent
11
- Classifier: Programming Language :: Python :: 3
12
- Requires-Python: >=3.9
13
- Description-Content-Type: text/markdown
14
-
15
- Extensible Reddit admin bot
@@ -1 +0,0 @@
1
- Extensible Reddit admin bot
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes