bleachbit / bleachbit Goto Github PK
View Code? Open in Web Editor NEWBleachBit system cleaner for Windows and Linux
Home Page: https://www.bleachbit.org
License: GNU General Public License v3.0
BleachBit system cleaner for Windows and Linux
Home Page: https://www.bleachbit.org
License: GNU General Public License v3.0
Firefox URL History does not get cleaned even when it is selected under Firefox options.
Both Windows and Mac has same issue.
BleachBit version 1.10
GTK version 2.16.6
local_cleaners_dir = C:\Program Files (x86)\cleaners
locale_dir = C:\Program Files (x86)\BleachBit\share\locale
options_dir = C:\Users\user\AppData\Roaming\BleachBit
personal_cleaners_dir = C:\Users\user\AppData\Roaming\BleachBit\cleaners
system_cleaners_dir = C:\Program Files (x86)\BleachBit\share\cleaners
locale.getdefaultlocale = ('en_US', 'cp1252')
os.getenv('APPDATA') = C:\Users\user\AppData\Roaming
os.getenv('LocalAppData') = C:\Users\user\AppData\Local
os.getenv('LocalAppDataLow') = C:\Users\user\AppData\LocalLow
os.getenv('Music') = C:\Users\user\Music
os.getenv('USERPROFILE') = C:\Users\user
os.getenv('ProgramFiles') = C:\Program Files (x86)
os.getenv('ProgramW6432') = C:\Program Files
os.getenv('TMP') = C:\Users\user\AppData\Local\Temp
os.path.expanduser('~') = C:\Users\user
platform.win32_ver1 = 6.1.7601
platform.platform = Windows-Vista-6.1.7601-SP1
platform.version = 6.1.7601
sys.argv = ['C:\Program Files (x86)\BleachBit\bleachbit.exe']
sys.executable = C:\Program Files (x86)\BleachBit\bleachbit.exe
sys.version = 2.5.4 (r254:67916, Dec 23 2008, 15:10:54) [MSC v.1310 32 bit (Intel)]
win32com.shell.shell.IsUserAnAdmin() = True
file = C:\Program Files (x86)\BleachBit\library.zip\bleachbit\Diagnostic.pyo
@moimael : Interested?
First @az0 thank you for this great project!
I don't know the stats but I think Bleachbit is used by far too few people and needs to replace CCleaner as the standard in peoples minds.
It's all about design and how something is marketed for most people/users.
Some ideas about how to improve the project in unsorted order:
This are just some ideas. What do you think?
I am looking into "repairing" the bleachbit chocolatey package (https://chocolatey.org/packages/bleachbit)!!
It is totally outdated because the maintainer abandoned the package and it was not an "automatic" package. Which means he had to manually submit the new version.
I want to make the choco bleachbit
package "automatic" which means it will fetch new releases (automatically) regularly.
We need predictable and lasting download urls for all versions!!
Since sourceforge is drifting off into a bad direction I would suggest hosting the files as GitHub releases. Currently sourceforge urls break for all old versions and the bit advantage of package managers is the ability to revert/install older versions if you wish to. But for that to work all old dl urls need to be valid in the future.
If needed you could use https://bintray.com/ to distribute the files.
If you need download stats for the releases and think they are not available on github you can use http://www.somsubhra.com/github-release-stats/?username=az0&repository=bleachbit to get the download_count. The bleachbit repo has no releases so there is no data found by the direkt link. (Working example: http://www.somsubhra.com/github-release-stats/?username=chocolatey&repository=ChocolateyGUI)
I'm using BleachBit 1.10 on Windows 10 Pro x64. Every time I start or close BleachBit, a message box is shown saying:
Errors occurred See the logfile 'C:\Program Files (x86)\BleachBit\bleachbit.exe.log' for details
The following section is placed in that log file for each time the message box appears:
exception when getting special folder path for music Traceback (most recent call last): File "bleachbit\Windows.pyo", line 131, in csidl_to_environ com_error: (-2147467259, 'Niet nader omschreven fout', None, None) exception when getting special folder path for pictures Traceback (most recent call last): File "bleachbit\Windows.pyo", line 131, in csidl_to_environ com_error: (-2147467259, 'Niet nader omschreven fout', None, None) exception when getting special folder path for video Traceback (most recent call last): File "bleachbit\Windows.pyo", line 131, in csidl_to_environ com_error: (-2147467259, 'Niet nader omschreven fout', None, None)
"Niet nader omschreven fout" is Dutch for "Unspecified error" (because I use the Dutch locale on Windows). I think BleachBit may not like the fact that I don't have Music/Pictures/Video folders in the Documents folder (I removed them because I don't use them), however that should cause any errors.
The errors are created at https://github.com/az0/bleachbit/blob/master/bleachbit/Windows.py#L133. Perhaps it should be changed such that it does not constantly show a message box about this (change logger.exception
to logger.info
?).
Do you have an idea on how to fix this? Aside from the message boxes BleachBit works as expected. If you need more information, feel free to let me know. Thank you for building this awesome piece of software!
Is there anyway we can prevent these messages from appearing while running BB from the command line?
"/usr/lib/python2.7/dist-packages/gtk-2.0/gtk/init.py:57: GtkWarning: could not open display
warnings.warn(str(e), _gtk.Warning)"
Hi,
I have a suggestion to improve in my opinion the user interface. It would be nice to have a graphical (or not) overview of the files to be deleted, maybe using a tree showing the impacted folders, with the total size of each file.
At least, it would be great to have a textual representation of this in the log, to have a global idea of the files to be targeted by the cleaning.
What do you think about this suggestion?
Thank you for your work!
Anyone have any idea as to where the passwords are stored for Opera? We got to get that in there.
Here's a funny bug!
I have tried replicating this in Windows but I can not for the life of me even try to figure out how to cause an Error 13.
On GNU/Linux, if you run BleachBit using the "BleachBit as Admin" option, set a directory that you do not have permission to wipe (I used the / directory), select the option to wipe the Free Disk Space, and run the cleaning process, you will get an Error 13.
After this, try to open BB's preferences menu.
It won't open.
You have to restart BleachBit.
I tested this using BB 1.6 on Linux Mint 17.1 and Trisquel 6 Mini.
I'm going to test this with BB 1.7 Beta.
Symptom is on first startup BleachBit crashes with an error message about a log. The log contains the following information.
BleachBit 1.4 is affected, but not on all Windows systems. BleachBit 1.2 is not affected.
The problem exists on systems with special drives. Microsoft Click and Run sets up a virtual drive like this.
Traceback (most recent call last):
File "bleachbit.py", line 43, in
File "bleachbit\GUI.pyo", line 40, in
File "bleachbit\Cleaner.pyo", line 40, in
File "bleachbit\Special.pyo", line 27, in
File "bleachbit\Options.pyo", line 297, in
File "bleachbit\Options.pyo", line 65, in __init__
File "bleachbit\Options.pyo", line 194, in restore
File "bleachbit\FileUtilities.pyo", line 394, in guess_overwrite_paths
File "bleachbit\FileUtilities.pyo", line 443, in same_partition
File "bleachbit\FileUtilities.pyo", line 324, in free_space
WindowsError: [Error 5] Access is denied.
Try the fixed version: download BleachBit 1.5 1.5.1 (beta)
LOL, I just noticed that BleachBit calculates file sizes in factors of 1000 (1 BleachBit Kilobyte = 1000 Bytes), rather than in factors of 1024. While this is stricly SI-conform, it is very confusing because many operatings systems and programs use 1024 as factor.
The best solution would be to simply switch to binary prefixes:
1 KiB = 1024 B, 1 MiB = 1024 KiB, and so on.
See here: https://en.wikipedia.org/wiki/Binary_prefix#Adoption_by_IEC.2C_NIST_and_ISO
@moimael : I am guessing you do not want to work on this one.
Hi,
I'm bleachbit's Debian Maintainer.
In order to improve the security of bleachbit's releases, I suggest to start signing them. Signing releases allows bleachbit's users to ensure they can trust the code they're downloading.
Here is some help you might need to do it.
Thanks for your work,
Hugo
I'm working on porting the Firefox cleaner to CleanerML for CleanerML issue 9, and it seems command="mozilla_url_history"
is no longer working right. When I try to preview or clean the URL history option, I get an error:
'NoneType' object has no attribute 'execute'
Disk space to be recovered: 0
Files to be deleted: 0
Errors: 1
"See the logfile C:\Program Files (x86)\BleachBit\bleachbit.exe.log' for details":
Traceback (most recent call last):
File "bleachbit\Worker.pyo", line 82, in execute
AttributeError: 'NoneType' object has no attribute 'execute'
The cleaner I'm using is here, and I encountered the error using:
Windows: 8; Firefox: 9.0.1, 36.0.4; BleachBit: 1.6
Ubuntu 14.10; Firefox: 36.0.1; BleachBit: 1.6
The error does not occur using the python Firefox cleaner. Sorry if this issue belongs in the CleanerML repo, but to me the problem doesn't seem to be CleanerML, but rather the Python scripts acting on the CleanerML.
I encountered following issue. Example:
Virtualbox is available for Win and Linux.
<cleaner id="virtualbox">
<label>VirtualBox</label>
<description>Virtual machine</description>
<option id="logs">
<label>Logs</label>
<description>Delete the logs</description>
<action command="delete" search="walk.all" path="$USERPROFILE\.VirtualBox\" regex="\w+\.log(\.\d+)$"/>
<action command="delete" search="walk.all" path="~/.VirtualBox/" regex="\.log(\.[0-9]+)?$"/>
<!-- Chakra 2014.02 has ~/.config/VirtualBox -->
<action command="delete" search="walk.all" path="~/.config/VirtualBox/" regex="\.log(\.[0-9]+)?$"/>
</option>
</cleaner>
I know that these delete actions are a little different but produce duplicate results.
path="~/.VirtualBox/"
shouldn't even be run on Windows but both actions run and files are found with /
and \
as path delimiters.
I thought a solution could be to separate win/linux cleaners by setting <cleaner id="virtualbox" os="windows">
and <cleaner id="virtualbox" os="linux">
.
But if I do that and both files are in the cleaners folder (on Windows) both actions are run. Resulting in the same issue.
I know that the Nexuiz cleaner means the free software game by AlienTrap, not the proprietary game by IllFonic.
But nothing in the cleaner disambiguates this. Probably just rename it “Nexiuz (AlienTrap)” and change the description to make it clear which game is meant.
Is it possible that the function setup_environment()
( SEE: https://github.com/az0/bleachbit/blob/96500aafb38c0539159b764a53be1fef55988762/bleachbit/Windows.py#L538-L544 ) is broken on Windows >=7?
My issue here bleachbit/cleanerml#61 with the $MUSIC
variable might be caused by the deprecation of CSIDL https://msdn.microsoft.com/en-us/library/windows/desktop/bb762494%28v=vs.85%29.aspx in Vista.
The CSIDL system is supported under Windows Vista for compatibility reasons. However, new development should use KNOWNFOLDERID values rather than CSIDL values.
I am running Win 8.1 so it might be possible that CSIDL values are not available anymore!?
Almost every modern distro uses systemd, so a new cleaner for journal files is needed.
This should be quite simple, I'll try it this week.
I am waiting on these changes to avoid merge conflicts
ignore_missing
in FileUtilitiesversion_info
sys.hexversion
Hi,
I'm bleachbit's Debian Maintainer.
Today I've received the following bug (also available online here):
Dear Maintainer,
~/.macromedia/Flash_Player/macromedia.com/support/flashplayer/sys/settings.sol
Please, notice that this bug have been reported against bleachbit's version 1.4, currently available on Debian Jessie.
I haven't reproduced this bug on later versions (lack of time, sorry). I've decided to directly forward the bug since it may be a security issue.
Thanks for your work,
Hugo
Use Chrome XML for Opera above 15:
https://news.ycombinator.com/item?id=11231673
https://news.ycombinator.com/item?id=11231305
Love to see Mac OSX Support.
i started working on it but love to see more people helping me with the effort , i am beginner python coder
so it might be over ambitious project.
@moimael: Would you please take a look? Happens when deleting
Traceback (most recent call last):
File "/bleachbit/Worker.py", line 270, in run
self.ui.update_total_size(self.total_bytes)
AttributeError: 'GUI' object has no attribute 'update_total_size'
Hi,
When is it possible to include an appdata file with the tarball? I'd like to let users find bleachbit in GNOME Software center.
Thanks.
[1]---https://wiki.gnome.org/Initiatives/GnomeGoals/AppDataGnomeSoftware
[2]---http://people.freedesktop.org/~hughsient/appdata/
@moimael: Would you please take a look?
In modernization branch add whitespace to any cleaner/*xml file and restart BleachBit GUI. Then you will see some warnings
/bleachbit/bleachbit/RecognizeCleanerML.py:59: PyGTKDeprecationWarning: The "flags" argument for dialog construction is deprecated. Please use initializer keywords: modal=True and/or destroy_with_parent=True. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
flags=Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT)
/usr/lib/python2.7/dist-packages/gi/overrides/Gtk.py:500: PyGTKDeprecationWarning: The keyword(s) "parent" have been deprecated in favor of "transient_for" respectively. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
self._init(*args, **new_kwargs)
/bleachbit/bleachbit/RecognizeCleanerML.py:65: DeprecationWarning: Gtk.set_from_stock is deprecated
image.set_from_stock(Gtk.STOCK_DIALOG_WARNING, Gtk.IconSize.DIALOG)
/bleachbit/bleachbit/RecognizeCleanerML.py:70: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
_("These cleaner definitions are new or have changed. Malicious definitions can damage your system. If you do not trust these changes, delete the files or quit."))
/bleachbit/bleachbit/RecognizeCleanerML.py:98: DeprecationWarning: Gtk.add_with_viewport is deprecated
scrolled_window.add_with_viewport(treeview)
Blocklists directory could contain a cached blocklist file corresponding to one downloaded from single URL provided in settings. The file Transmission uses to store cached blocklist in this case is "[config dir]/blocklists/blocklist.bin". However, this directory could also contain additional blocklist files put there manually by user; those files are either already in the format used by Transmission for blocklist cache (in which case they should have ".bin" extension) or in the format that Transmission is able to parse (in which case they should not have ".bin" extension and Transmission will parse and create/update cache files named "[config dir]/blocklists/[original file base name].bin" during initialization, or on SIGHUP if transmission-daemon is used). The issue is, both ".bin" and non-".bin" files are being removed, while only the former are considered "cache" (and even then, some of those could be user-provided).
Resume directory, if managed solely by Transmission without user's intervention, could only contain files with ".resume" extension. Those files are used to track torrent download/seed progress/statistics, current files location (complete and incomplete files could be stored in different directories on per-torrent basis), file download priorities and "do not download" flags, bandwidth/seeding limits overrides, paused state, real file names on disk (in case any files/directories inside torrent were renamed by user). As you could see, none of this information could be considered "cache". Each ".resume" file though should have a corresponding ".torrent" file in "[config dir]/torrents" directory (with matching base name); and only those ".resume" files which do not have corresponding ".torrent" files could be safely removed.
I see cleaners are simple XML files, while they used to be implemented in Python. I would've made a pull request right away if they still were in Python, but I suppose this XML description format doesn't provide what's necessary for a proper cleaning implementation (correct me if I'm wrong). Thus I propose you to either fix Transmission cleaning (if that's possible) or remove this cleaner.
I couldn't find any information on which python versions should be supported.
Currently, the tests are running for 2.6 which isn't supported any more since 2013 while making support for 3.x impossible.
What are the future plans for the supported versions?
@moimael: Would you please take a look? I am using Ubuntu 14.04, which is a relatively new distribution. I would prefer not to lose support for any new systems like this.
Traceback (most recent call last):
File "/bleachbit/bleachbit/Application.py", line 129, in about
builder.add_from_file('data/AboutDialog.ui')
gi._glib.GError: data/AboutDialog.ui: required gtk+ version 3.12, current version is 3.10
http://git.io/vCOGl package info
http://git.io/vCOZR system info
When I copy the preview list and try to paste it into a text file the application crashes (almost every time). The list is big and has 45869 files to be deleted.
This is the output from the console,
(bleachbit.py:27168): Gdk-ERROR **: The program 'bleachbit.py' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadWindow (invalid Window parameter)'.
(Details: serial 169182 error_code 3 request_code 18 minor_code 0)
(Note to programmers: normally, X errors are reported asynchronously;
that is, you will receive the error a while after causing it.
To debug your program, run it with the --sync command line
option to change this behavior. You can then get a meaningful
backtrace from your debugger if you break on the gdk_x_error() function.)
Trace/breakpoint trap (core dumped)
I wanted to try --sync
as suggested in the error message but didn't know how
(system Fedora 23 64bit with KDE 5)
@moimael: Would you please look at including strings from data/app-menu.ui in bleachbit.pot using po/Makefile, so the strings can be translated?
.po
files for the strings in data/app-menu.ui
Tried to install in python 2x:
Traceback (most recent call last): File "setup.py", line 27, in <module> import bleachbit.Common File "C:\Users\ivandro\Subtitles\bleachbit-1.2\bleachbit-1.2\bleachbit\Common. py", line 32, in <module> from win32com.shell import shell, shellcon ImportError: No module named win32com.shell
@moimael : Interested?
Using fslint, I found three duplicate cleaners.
bleachbit/cleaners/adobe_reader.xml
cleanerml/pending/adobe_reader.xml
bleachbit/cleaners/octave.xml
cleanerml/pending/octave.xml
cleanerml/pending/playonlinux.xml
cleanerml/release/playonlinux.xml
I take it they should be merged?
Error in Worker()
Traceback (most recent call last):
File "/usr/share/bleachbit/GUI.py", line 366, in preview_or_run_operations
raise RuntimeError('test')
RuntimeError: test
I would like to see an export option for the preview list, to export the list of files that need to be deleted.
Advantages:
Currently I can copy / paste the list of files but i still need to parse it to remove stuff not related to file names. Also the copy/paste cause the program to crash (see #125)
This code shows "a lot" instead of petabytes, but it looks like you intended to show petabytes.
Otherwise, the new code looks good, and I added unit tests for IEC units.
from bleachbit.FileUtilities import bytes_to_human;from bleachbit.Options import options
options.set('units_iec', False)
bytes_to_human(1000**5)
options.set('units_iec', True)
bytes_to_human(1024**5)
@tstenner , would you please take a look?
Hi,
I just started porting bleachbit to GtkheaderBar (as a first step to a more radical UI redesign, if my propositions are accepted). Since it means UI redesign, i'd like to have some thoughts on it.
It's based on the earlier gtk 3 porting i've done in modernization branch.
It looks like this right now :
The vlc cleaner currently doesn't erase a list of network streams saved in ~/.config/vlc/vlc-qt-interface.conf
. To generate the list click on Media > Open Network Stream...
(or use hot-key: Ctrl N
), enter an mrl to a video stream (for example: https://upload.wikimedia.org/wikipedia/commons/b/bd/Elephants_Dream.ogg
), and after closing vlc a new section in vlc-qt-interface.conf
will be created named [OpenDialog]
under which has a list of recently opened network streams:
netMRL=https://upload.wikimedia.org/wikipedia/commons/b/bd/Elephants_Dream.ogg
which will hold a handful of history as you use it more:
netMRL=https://upload.wikimedia.org/wikipedia/commons/b/bd/Elephants_Dream.ogg, "https://www.youtube.com/watch?v=Fj46zIqn2bQ", "https://www.youtube.com/watch?v=KjSTAAacWFE", http://youtu.be/KjSTAAacWFE, "https://www.youtube.com/watch?v=7DRWJ7cHF9A", http://youtu.be/7DRWJ7cHF9A
I would write a patch myself, but I couldn't find documentation on how command="ini"
works.
Traceback in BleachBit 1.9.2 beta on Slackware 14.1 x86_64
Traceback (most recent call last):
File "/usr/share/bleachbit/Worker.py", line 330, in run_operations
for dummy in self.clean_operation(operation):
File "/usr/share/bleachbit/Worker.py", line 127, in clean_operation
assert(isinstance(operation_options, list))
AssertionError
Strange GUI where Localizations is at the top level (not under System)
Reported by BBUser on the forum
@tstenner Do you think this is related to changes to put localizations in XML? Would you please mind taking a closer look?
See #36
I have rewritten Firefox cleaner and made few changes:
Added telemetry data cleaner
Changed in paths ".default" to "*"
Changed "/.cache/mozilla" to "/.cache/mozilla/firefox/" in cache cleaner
Propably messed up cache and vacuum cleaner
https://gist.github.com/devmapper0/e9e21ac211461d438ad2a6f7d68ca678
~/.easytag/easytagrc
will store some usage history, but it also stores user settings. Does someone know of a way to clean this without deleting the settings?
To recreate the data I’m talking about, select an album, click the “Write Playlist” button, (optionally) select “Use mask” and enter whatever you want, save, and whatever was in the “Use mask” field will be written to easytagrc as playlist_name=<whatever you entered>
. The next time you go to create a playlist, this data will be recalled to the “Use Mask” field, and will be used to recreate play_list_name.mask if that file was deleted.
This is limited to the last entry, and I suspect something similar is happening with playlist_content.mask
i get below error but work fine when i make this below change.
ERROR:
Exception while running operation 'firefox': ''NoneType' object has no attribute 'split''
Traceback (most recent call last):
File "/Users/nshetty/bleachbit/bleachbit/Worker.py", line 336, in run_operations
for dummy in self.clean_operation(operation):
File "/Users/nshetty/bleachbit/bleachbit/Worker.py", line 139, in clean_operation
if self.really_delete and backends[operation].is_running():
File "/Users/nshetty/bleachbit/bleachbit/Cleaner.py", line 159, in is_running
if Unix.is_running(pathname):
File "/Users/nshetty/bleachbit/bleachbit/Unix.py", line 496, in is_running
return is_running_darwin(exename)
File "/Users/nshetty/bleachbit/bleachbit/Unix.py", line 467, in is_running_darwin
processess = (re.split(r"\s+", p, 10)[10] for p in run_ps().split("\n") if p != "")
AttributeError: 'NoneType' object has no attribute 'split'
CODE:
def is_running_darwin(exename, run_ps=None):
if run_ps is None:
def run_ps():
subprocess.check_output(["ps", "aux", "-c"])
try:
processess = (re.split(r"\s+", p, 10)[10] for p in run_ps().split("\n") if p != "")
next(processess) # drop the header
return exename in processess
except IndexError:
raise RuntimeError("Unexpected output from ps")
CHANGE:
processess = (re.split(r"\s+", p, 10)[10] for p in subprocess.check_output(["ps", "aux", "-c"]).split("\n") if p != "")
Please can anybody help me understand/fix SQLite traceback error.
Issue:
Error in execution of <bleachbit.Command.Function instance at 0x106c7bcb0>
Traceback (most recent call last):
File "/Users/user/bleachbit/bleachbit/Worker.py", line 84, in execute
for ret in cmd.execute(self.really_delete):
File "/Users/user/bleachbit/bleachbit/Command.py", line 146, in execute
self.func(self.path)
File "/Users/user/bleachbit/bleachbit/Special.py", line 280, in delete_mozilla_url_history
FileUtilities.execute_sqlite3(path, cmds)
File "/Users/user/bleachbit/bleachbit/FileUtilities.py", line 307, in execute_sqlite3
'%s: %s' % (Common.decode_str(exc), path))
DatabaseError: UNIQUE constraint failed: moz_places.url: /Users/user/Library/Application Support/Firefox/Profiles/lawxndmw.default/places.sqlite
System Info:
platform.mac_ver() = ('10.10.5', ('', '', ''), 'x86_64')
platform.platform = Darwin-14.5.0-x86_64-i386-64bit
platform.version = Darwin Kernel Version 14.5.0: Tue Sep 1 21:23:09 PDT 2015; root:xnu-2782.50.1~1/RELEASE_X86_64
sys.argv = ['bleachbit.py', '--sysinfo']
sys.executable = /usr/local/opt/python/bin/python2.7
sys.version = 2.7.11 (default, Jan 22 2016, 08:28:37)
Python 2 raises localized exceptions using system encoding, e.g. if you use Russian Windows you may spot in log such error:
error: (5, 'MoveFileEx', '\xce\xf2\xea\xe0\xe7\xe0\xed\xee \xe2 \xe4\xee\xf1\xf2\xf3\xef\xe5.')
The mystery part was encoded in cp1251, and it’s supposed to be
error: (5, 'MoveFileEx', 'Отказано в доступе.')
locale.getpreferredencoding()
tries to guess the system encoding, and from my experience it guesses correctly on Windows, here is example of my implementation for that stuff in another project (note ST3 in example’s code means Py3), I do not imply that how it must be done, it’s just an example which works, perhaps it might be done better.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.