Comments (1)
Hi @StrangeTcy,
Metaclasses are used for defining constants with ASCII color codes. I wanted to implement the coloring interface that resembles colorama and other popular libraries:
print(f"The following text will be red: {TextStyle.RED}red text{TextStyle.RESET}")
The usual convention among Linux tools (e.g. grep
) is to enable coloring when stdout is terminal and disable it when stdout is a file, so initially I wrote code like this:
if sys.stdout.isatty():
class TextStyle:
RESET = "\033[0m"
BOLD = "\033[1m"
RED = "\033[31m"
BLUE = "\033[34m"
PURPLE = "\033[35m"
ORANGE = "\033[38;5;208m"
else:
class TextStyle:
RESET = BOLD = RED = BLUE = PURPLE = ORANGE = ""
# It's not the exact code that was there, but this snippet shows the main idea
After a while, it turned out that it's not enough because sometimes you want to toggle coloring in your script on the fly. For example, before we added the in_ipython()
function to hivemind, there was no convenient way to explicitly enable coloring in Jupyter/Colab in downstream apps like Petals. Also, some apps may want to toggle colors if a user provides --color
or --no-color
args (e.g. grep
supports this), even though hivemind is already imported.
So, I decided to write code that (a) keeps the previous interface with constants and (b) changes the values of the "constants" depending on a certain bool
variable. The solution with metaclasses was the easiest thing that came to my mind, and I'm not sure if there are less hacky ways of doing it (let me know if they exist).
from hivemind.
Related Issues (20)
- Failed to connect to bootstrap peers HOT 1
- AttributeError in MPFuture HOT 2
- hivemind.compression: TypedStorage is deprecated HOT 1
- Failed to close hivemind.P2P HOT 1
- Local Gradient Accumulation is slower than the PyTorch implementation.
- [BUG] hivemind.compression is not compatible with bitsandbytes == 0.39.1 HOT 2
- How well does it scale? HOT 2
- [BUG] Getting '[Errno 13] Permission denied' when import hivemind
- forking before initialization of the MPFuture handler - server runtime not initialized in WSL --new_hive HOT 1
- proto/runtime_pb2.py missing when installing from sources HOT 1
- does/can hivemind work with deepspeed ZeRO-3 Offload? [Feature Request]
- Support for fully homomorphic encryption on training, finetuning, and inference
- [BUG] Unable to start hivemind server when using gradient clipping HOT 2
- Support for windows HOT 1
- pydantic < 2.0.0 is starting to conflict with other dependencies HOT 1
- connecting to private petals using ec2 dht problems
- question about how rpc works in the hivemind package
- How to get list of nearest peers connected in the DHT network?
- [BUG] GradScaler does not work with torch 2.3.0 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from hivemind.