Just a reminder that we sent you a DM some time ago, but have yet to receive an answer. Happy cake day :)
-The admin team
Just a reminder that we sent you a DM some time ago, but have yet to receive an answer. Happy cake day :)
-The admin team
Appreciate the offer, but we want to try to avoid another situation with reports not being seen by mods for weeks.
Added as moderator
Added as a moderator, we will likely add at least one more if there are more volunteers showing up.
programming.dev will migrate over to (lemmy compatible) Sublinks once it’s ready, which will feature a different set of mod features. For that reason we will need new moderators to have an active programming.dev account. If you’re willing keep an active user account on our instance let me know. We would prefer people we know will actively use their mod account to make sure reports are handled in a timely manner.
Personally I would recommend to use regex instead for parsing, which would also allow you to more easily test your expressions. You could then get the list as
import re
result = re.findall(r'[\w_]+|\S', yourstring) # This will preserve ULLONG_MAX as a single word if that's what you want
As for what’s wrong with your expressions:
First expression: Once you hit (
, OneOrMore(Char(printables))
will take over and continue matching every printable char.
Instead you should use OR (|
) with the alphanumerical first for priority OneOrMore(word | Char(printables))
Second expression. You’re running into the same issue with your use of +
. Once string.punctuation takes over, it will continue matching until it encounters a char that is not a punctuation and then stop the matching.
Instead you can write:
parser = OneOrMore(Word(alphanums) | Word(string.punctuation))
result = parser.parseString(yourstring)
Do note that underscore is considered a punctutation so ULLONG_MAX will be split, not sure if that’s what you want or not.
I don’t have any experience with pipx and personally prefer to just skip the .toml and place the whole pyprojectsetup in setup.py.
With that method, I would write inside setup()
packages=find_packages() # Include every python packages
package_data={ # Specify additional data files
'yourpackagename': [
'config/*'
etc...
]
}
This would however require you to have a package folder which all your package files/folders are inside, meaning the top level repo folder should not have any files or other folders that you want to distribute. Your MANIFEST.in looks fine.
deleted by creator
deleted by creator
You can, but you may need to edit some registers to avoid windows reseting them.
As others have suggested, ffmpeg is a great cli tool. If you aren’t comfortable with the terminal you can do it via python like this:
import os
import sys
import subprocess
def crop_media(file_name: str, w: int, h: int, x: int, y: int, new_dir: str) -> None:
try:
subprocess.run(f'ffmpeg -i "{file_name}" -vf "crop={w}:{h}:{x}:{y}" temp.gif -y',
shell=True, check=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
os.rename('temp.gif', os.path.join(new_dir, file_name))
# Print the error and continue with other gifs, remove try block if you want a complete stop
except subprocess.CalledProcessError as e:
print(e)
except KeyboardInterrupt:
print('KeyboardInterrupt, cleaning up files...')
os.remove('temp.gif')
sys.exit(0)
def crop_directory(directory: str, w: int, h: int, x: int, y: int, new_dir: str) -> None:
for root, _, files in directory:
for file in files:
if not file.endswith('.gif'):
continue
if os.path.isfile(os.path.join(new_dir, file)):
print(f'{file} already exists in {new_dir}, skipping...')
continue
file_path = os.path.normpath(os.path.join(root, file))
crop_media(file_path, w, h, x, y, new_dir)
if __name__ == '__main__':
width = 0
height = 0
x_offset = 0
y_offset = 0
gif_directory = ''
new_directory = ''
crop_directory(gif_directory, width, height, x_offset, y_offset, new_directory)
This should go through every file in the directory and subdirectories and call the ffmpeg command on each .gif. With new_directory
you can set a directory to store every cropped .gif. The ffmpeg command is based on johnpiers suggestion.
The script assumes unique filenames for each gif and should work with spaces in the filenames. If they aren’t unique, you can just remove the new_directory
part, but you will then lose the original gif that you cropped.
But I think that both are useless because you can put what you want in a list in python.
You can say that about all type hinting, but assuming you actually adhere to the type hints, it’s a great tool to make python projects manageable.
Got a few minutes into the context video before I head to close it. Do people actually enjoy YouTubers presenting stuff in this manner?
4 spaces, although I’ll die on the hill that tabs should always be used instead of space for indentation. Not just in python.
Python are fine with whatever number of spaces you want to use. You can use 8 spaces which forces you carefully consider each nest, you can use 1 if you’re a monster, or you can use tabs if you’re enlightened, python only demands consistency.
U.S. commercial reactors have generated about 90,000 metric tons of spent fuel since the 1950s. If all of it were able to be stacked together, it could fit on a single football field at a depth of less than 10 yards. Nuclear waste is solid, it’s not that difficult to store it. We get more nuclear waste leaked into our nature from coal plants.
As a reference, here is the room that Switzerland stores their nuclear waste.
Nothing you said other than expenses is an argument against nuclear. If anything, the take from you argument is that we should construct even more nuclear, not less.
If you care about energy density, nuclear is the best solution, not coal. I guess Germans don’t care though
For modding, it’s very useful to not have everything statically linked. DLSS swapping is probably the most prominent use case nowadays.
From the perspective of the admin team, as long as reports are consistently resolved in a timely manner we are happy.
If you have any questions or want help with finding extra moderators, feel free to ask it here or via DM, otherwise we also have a Discord server and a Matrix space where we can talk.