<commit_before>Convey is a lightweight event bus and reactive datastore for Java. It lets you publish events and add subscribers which listen for them. Values can also be associated with events, and these values can optionally be stored until they are needed. This makes it easy to write asynchronous loading code.

For example, imagine that you want to run some code after you've finished loading the user's Facebook profile and you've loaded the current game state. When each of the loading operations is finished, you can use `Bus#produce` to produce the result:

```java
bus.produce(Keys.FACEBOOK_PROFILE, profile);
...
bus.produce(Keys.GAME, game);
```

Then, you can schedule some code to run once both keys are produced:

```java
bus.once(Keys.FACEBOOK_PROFILE, Keys.GAME, new Subscriber2<Profile, Game>() {
  @Override
  public void onMessage(String value1, Game value2) {
    // Handle values
  }
});
```<commit_msg>fix readme<commit_after>Convey is a lightweight event bus and reactive datastore for Java. It lets you publish events and add subscribers which listen for them. Values can also be associated with events, and these values can optionally be stored until they are needed. This makes it easy to write asynchronous loading code.

For example, imagine that you want to run some code after you've finished loading the user's Facebook profile and you've loaded the current game state. When each of the loading operations is finished, you can use `Bus#produce` to produce the result:

```java
bus.produce(Keys.FACEBOOK_PROFILE, profile);
...
bus.produce(Keys.GAME, game);
```

Then, you can schedule some code to run once both keys are produced:

```java
bus.once(Keys.FACEBOOK_PROFILE, Keys.GAME, new Subscriber2<Profile, Game>() {
  @Override
  public void onMessage(Profile profile, Game game) {
    // Handle values
  }
});
```
{'fraction_non_alphanumeric': 0.07579859231185707, 'fraction_numerical': 0.002165674066053059, 'mean_word_length': 4.668711656441718, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2289671', 'n_tokens_mistral': 515, 'n_tokens_neox': 482, 'n_words': 249}