beet-observer 0.1.0__py3-none-any.whl → 0.2.1__py3-none-any.whl
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.
- beet_observer/__init__.py +1 -1
 - beet_observer/data_pack.py +168 -0
 - beet_observer/plugin.py +41 -2
 - beet_observer/resource_pack.py +5 -0
 - {beet_observer-0.1.0.dist-info → beet_observer-0.2.1.dist-info}/METADATA +1 -1
 - beet_observer-0.2.1.dist-info/RECORD +8 -0
 - beet_observer-0.1.0.dist-info/RECORD +0 -6
 - {beet_observer-0.1.0.dist-info → beet_observer-0.2.1.dist-info}/LICENSE +0 -0
 - {beet_observer-0.1.0.dist-info → beet_observer-0.2.1.dist-info}/WHEEL +0 -0
 
    
        beet_observer/__init__.py
    CHANGED
    
    
| 
         @@ -0,0 +1,168 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            from typing import Any
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            from beet import Context, NamespaceProxy
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            def gen_dp_overlays(ctx: Context, ctx_overlay: Context, overlay_dir: str) -> None:
         
     | 
| 
      
 7 
     | 
    
         
            +
                """
         
     | 
| 
      
 8 
     | 
    
         
            +
                Generates overlays between two datapacks.
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                Keyword arguments:</br>
         
     | 
| 
      
 11 
     | 
    
         
            +
                `ctx` -- the build context</br>
         
     | 
| 
      
 12 
     | 
    
         
            +
                `ctx_overlay` -- the overlay context</br>
         
     | 
| 
      
 13 
     | 
    
         
            +
                `overlay_dir` -- the directory of the overlay</br>
         
     | 
| 
      
 14 
     | 
    
         
            +
                """
         
     | 
| 
      
 15 
     | 
    
         
            +
                # create list of all datapack file types
         
     | 
| 
      
 16 
     | 
    
         
            +
                file_types: list[tuple[NamespaceProxy[Any], NamespaceProxy[Any]]] = [
         
     | 
| 
      
 17 
     | 
    
         
            +
                    (ctx.data.advancements, ctx_overlay.data.advancements),
         
     | 
| 
      
 18 
     | 
    
         
            +
                    (ctx.data.functions, ctx_overlay.data.functions),
         
     | 
| 
      
 19 
     | 
    
         
            +
                    (ctx.data.item_modifiers, ctx_overlay.data.item_modifiers),
         
     | 
| 
      
 20 
     | 
    
         
            +
                    (ctx.data.loot_tables, ctx_overlay.data.loot_tables),
         
     | 
| 
      
 21 
     | 
    
         
            +
                    (ctx.data.predicates, ctx_overlay.data.predicates),
         
     | 
| 
      
 22 
     | 
    
         
            +
                    (ctx.data.recipes, ctx_overlay.data.recipes),
         
     | 
| 
      
 23 
     | 
    
         
            +
                    (ctx.data.trim_pattern, ctx_overlay.data.trim_pattern),
         
     | 
| 
      
 24 
     | 
    
         
            +
                    (ctx.data.trim_material, ctx_overlay.data.trim_material),
         
     | 
| 
      
 25 
     | 
    
         
            +
                    (ctx.data.structures, ctx_overlay.data.structures),
         
     | 
| 
      
 26 
     | 
    
         
            +
                    (ctx.data.chat_type, ctx_overlay.data.chat_type),
         
     | 
| 
      
 27 
     | 
    
         
            +
                    (ctx.data.damage_type, ctx_overlay.data.damage_type),
         
     | 
| 
      
 28 
     | 
    
         
            +
                    (ctx.data.banner_patterns, ctx_overlay.data.banner_patterns),
         
     | 
| 
      
 29 
     | 
    
         
            +
                    (ctx.data.wolf_variants, ctx_overlay.data.wolf_variants),
         
     | 
| 
      
 30 
     | 
    
         
            +
                    (ctx.data.enchantments, ctx_overlay.data.enchantments),
         
     | 
| 
      
 31 
     | 
    
         
            +
                    (ctx.data.enchantment_providers, ctx_overlay.data.enchantment_providers),
         
     | 
| 
      
 32 
     | 
    
         
            +
                    (ctx.data.jukebox_songs, ctx_overlay.data.jukebox_songs),
         
     | 
| 
      
 33 
     | 
    
         
            +
                    (ctx.data.painting_variants, ctx_overlay.data.painting_variants),
         
     | 
| 
      
 34 
     | 
    
         
            +
                    (ctx.data.block_tags, ctx_overlay.data.block_tags),
         
     | 
| 
      
 35 
     | 
    
         
            +
                    (ctx.data.entity_type_tags, ctx_overlay.data.entity_type_tags),
         
     | 
| 
      
 36 
     | 
    
         
            +
                    (ctx.data.fluid_tags, ctx_overlay.data.fluid_tags),
         
     | 
| 
      
 37 
     | 
    
         
            +
                    (ctx.data.function_tags, ctx_overlay.data.function_tags),
         
     | 
| 
      
 38 
     | 
    
         
            +
                    (ctx.data.game_event_tags, ctx_overlay.data.game_event_tags),
         
     | 
| 
      
 39 
     | 
    
         
            +
                    (ctx.data.item_tags, ctx_overlay.data.item_tags),
         
     | 
| 
      
 40 
     | 
    
         
            +
                    (ctx.data.chat_type_tags, ctx_overlay.data.chat_type_tags),
         
     | 
| 
      
 41 
     | 
    
         
            +
                    (ctx.data.damage_type_tags, ctx_overlay.data.damage_type_tags),
         
     | 
| 
      
 42 
     | 
    
         
            +
                    (ctx.data.banner_pattern_tags, ctx_overlay.data.banner_pattern_tags),
         
     | 
| 
      
 43 
     | 
    
         
            +
                    (ctx.data.cat_variant_tags, ctx_overlay.data.cat_variant_tags),
         
     | 
| 
      
 44 
     | 
    
         
            +
                    (ctx.data.enchantment_tags, ctx_overlay.data.enchantment_tags),
         
     | 
| 
      
 45 
     | 
    
         
            +
                    (ctx.data.instrument_tags, ctx_overlay.data.instrument_tags),
         
     | 
| 
      
 46 
     | 
    
         
            +
                    (ctx.data.painting_variant_tags, ctx_overlay.data.painting_variant_tags),
         
     | 
| 
      
 47 
     | 
    
         
            +
                    (
         
     | 
| 
      
 48 
     | 
    
         
            +
                        ctx.data.point_of_interest_type_tags,
         
     | 
| 
      
 49 
     | 
    
         
            +
                        ctx_overlay.data.point_of_interest_type_tags,
         
     | 
| 
      
 50 
     | 
    
         
            +
                    ),
         
     | 
| 
      
 51 
     | 
    
         
            +
                ]
         
     | 
| 
      
 52 
     | 
    
         
            +
                # for each file type, check for required overlays
         
     | 
| 
      
 53 
     | 
    
         
            +
                for registry, registry_overlay in file_types:
         
     | 
| 
      
 54 
     | 
    
         
            +
                    check_registry(ctx, ctx_overlay, overlay_dir, registry, registry_overlay)
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                # get pack.mcmeta overlay entries
         
     | 
| 
      
 57 
     | 
    
         
            +
                mcmeta: dict[str, dict[str, list[dict[str, Any]]]] = ctx.data.mcmeta.data.copy()
         
     | 
| 
      
 58 
     | 
    
         
            +
                if "overlays" not in mcmeta:
         
     | 
| 
      
 59 
     | 
    
         
            +
                    mcmeta["overlays"] = {}
         
     | 
| 
      
 60 
     | 
    
         
            +
                if "entries" not in mcmeta["overlays"]:
         
     | 
| 
      
 61 
     | 
    
         
            +
                    mcmeta["overlays"]["entries"] = []
         
     | 
| 
      
 62 
     | 
    
         
            +
                entries = mcmeta["overlays"]["entries"]
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
                # add overlays to pack.mcmeta
         
     | 
| 
      
 65 
     | 
    
         
            +
                for overlay in ctx.data.overlays:
         
     | 
| 
      
 66 
     | 
    
         
            +
                    # check if it's the top-level overlay
         
     | 
| 
      
 67 
     | 
    
         
            +
                    if overlay == ctx.meta["observer"]["default_dir_dp"]:
         
     | 
| 
      
 68 
     | 
    
         
            +
                        # delete pack.mcmeta from overlay (required for tests)
         
     | 
| 
      
 69 
     | 
    
         
            +
                        default_dir = ctx.meta["observer"]["default_dir_dp"]
         
     | 
| 
      
 70 
     | 
    
         
            +
                        if ctx.data.overlays[default_dir].mcmeta:
         
     | 
| 
      
 71 
     | 
    
         
            +
                            del ctx.data.overlays[default_dir].mcmeta
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
                        # get pack format from build context
         
     | 
| 
      
 74 
     | 
    
         
            +
                        if "default_format" in ctx.meta["observer"]:
         
     | 
| 
      
 75 
     | 
    
         
            +
                            formats = ctx.meta["observer"]["default_format"]
         
     | 
| 
      
 76 
     | 
    
         
            +
                        else:
         
     | 
| 
      
 77 
     | 
    
         
            +
                            formats = ctx.data.mcmeta.data["pack"]["pack_format"]
         
     | 
| 
      
 78 
     | 
    
         
            +
                    else:
         
     | 
| 
      
 79 
     | 
    
         
            +
                        # get formats from overlay pack
         
     | 
| 
      
 80 
     | 
    
         
            +
                        if "supported_formats" in ctx_overlay.data.mcmeta.data["pack"]:
         
     | 
| 
      
 81 
     | 
    
         
            +
                            formats = ctx_overlay.data.mcmeta.data["pack"]["supported_formats"]
         
     | 
| 
      
 82 
     | 
    
         
            +
                        else:
         
     | 
| 
      
 83 
     | 
    
         
            +
                            formats = ctx_overlay.data.mcmeta.data["pack"]["pack_format"]
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
                    # update pack.mcmeta overlay entries
         
     | 
| 
      
 86 
     | 
    
         
            +
                    entries.append(
         
     | 
| 
      
 87 
     | 
    
         
            +
                        {
         
     | 
| 
      
 88 
     | 
    
         
            +
                            "formats": formats,
         
     | 
| 
      
 89 
     | 
    
         
            +
                            "directory": overlay,
         
     | 
| 
      
 90 
     | 
    
         
            +
                        }
         
     | 
| 
      
 91 
     | 
    
         
            +
                    )
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
                # save overlay entries in pack.mcmeta
         
     | 
| 
      
 94 
     | 
    
         
            +
                if len(entries) > 0:
         
     | 
| 
      
 95 
     | 
    
         
            +
                    ctx.data.mcmeta.data.update({"overlays": {"entries": entries}})
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
             
     | 
| 
      
 98 
     | 
    
         
            +
            def check_registry(
         
     | 
| 
      
 99 
     | 
    
         
            +
                ctx: Context,
         
     | 
| 
      
 100 
     | 
    
         
            +
                ctx_overlay: Context,
         
     | 
| 
      
 101 
     | 
    
         
            +
                overlay_dir: str,
         
     | 
| 
      
 102 
     | 
    
         
            +
                registry: NamespaceProxy[Any],
         
     | 
| 
      
 103 
     | 
    
         
            +
                registry_overlay: NamespaceProxy[Any],
         
     | 
| 
      
 104 
     | 
    
         
            +
            ) -> None:
         
     | 
| 
      
 105 
     | 
    
         
            +
                """
         
     | 
| 
      
 106 
     | 
    
         
            +
                Generates overlays for each namespace proxy.
         
     | 
| 
      
 107 
     | 
    
         
            +
             
     | 
| 
      
 108 
     | 
    
         
            +
                Keyword arguments:</br>
         
     | 
| 
      
 109 
     | 
    
         
            +
                `ctx` -- the build context</br>
         
     | 
| 
      
 110 
     | 
    
         
            +
                `ctx_overlay` -- the overlay context</br>
         
     | 
| 
      
 111 
     | 
    
         
            +
                `overlay_dir` -- the directory of the overlay</br>
         
     | 
| 
      
 112 
     | 
    
         
            +
                `registry` -- the namespace proxy from the build context</br>
         
     | 
| 
      
 113 
     | 
    
         
            +
                `registry_overlay` -- the namespace proxy from the overlay context</br>
         
     | 
| 
      
 114 
     | 
    
         
            +
                """
         
     | 
| 
      
 115 
     | 
    
         
            +
                # check each file in the build pack
         
     | 
| 
      
 116 
     | 
    
         
            +
                for name in list(registry):
         
     | 
| 
      
 117 
     | 
    
         
            +
                    if name in registry_overlay:
         
     | 
| 
      
 118 
     | 
    
         
            +
                        # exists in both, so check if an overlay is needed
         
     | 
| 
      
 119 
     | 
    
         
            +
                        gen_registry_overlay(ctx, overlay_dir, name, registry, registry_overlay)
         
     | 
| 
      
 120 
     | 
    
         
            +
                    else:
         
     | 
| 
      
 121 
     | 
    
         
            +
                        # exists only in overlay, so create a deletion overlay
         
     | 
| 
      
 122 
     | 
    
         
            +
                        gen_registry_overlay(
         
     | 
| 
      
 123 
     | 
    
         
            +
                            ctx, overlay_dir, name, registry, registry_overlay, "deletion"
         
     | 
| 
      
 124 
     | 
    
         
            +
                        )
         
     | 
| 
      
 125 
     | 
    
         
            +
             
     | 
| 
      
 126 
     | 
    
         
            +
                # for all remaining files (of this type) in the overlay pack, add to build pack as an overlay
         
     | 
| 
      
 127 
     | 
    
         
            +
                for name in list(registry_overlay):
         
     | 
| 
      
 128 
     | 
    
         
            +
                    gen_registry_overlay(
         
     | 
| 
      
 129 
     | 
    
         
            +
                        ctx, overlay_dir, name, registry, registry_overlay, "addition"
         
     | 
| 
      
 130 
     | 
    
         
            +
                    )
         
     | 
| 
      
 131 
     | 
    
         
            +
             
     | 
| 
      
 132 
     | 
    
         
            +
             
     | 
| 
      
 133 
     | 
    
         
            +
            def gen_registry_overlay(
         
     | 
| 
      
 134 
     | 
    
         
            +
                ctx: Context,
         
     | 
| 
      
 135 
     | 
    
         
            +
                overlay_dir: str,
         
     | 
| 
      
 136 
     | 
    
         
            +
                name: str,
         
     | 
| 
      
 137 
     | 
    
         
            +
                registry: NamespaceProxy[Any],
         
     | 
| 
      
 138 
     | 
    
         
            +
                registry_overlay: NamespaceProxy[Any],
         
     | 
| 
      
 139 
     | 
    
         
            +
                type: str = "",
         
     | 
| 
      
 140 
     | 
    
         
            +
            ) -> None:
         
     | 
| 
      
 141 
     | 
    
         
            +
                """
         
     | 
| 
      
 142 
     | 
    
         
            +
                Checks if two functions have the same contents and generate an overlay if they don't.
         
     | 
| 
      
 143 
     | 
    
         
            +
             
     | 
| 
      
 144 
     | 
    
         
            +
                Keyword arguments:</br>
         
     | 
| 
      
 145 
     | 
    
         
            +
                `ctx` -- the build context</br>
         
     | 
| 
      
 146 
     | 
    
         
            +
                `overlay_dir` -- the directory of the generated overlay</br>
         
     | 
| 
      
 147 
     | 
    
         
            +
                `name` -- the name of the file</br>
         
     | 
| 
      
 148 
     | 
    
         
            +
                `registry` -- the namespace proxy from the build context</br>
         
     | 
| 
      
 149 
     | 
    
         
            +
                `registry_overlay` -- the namespace proxy from the overlay context</br>
         
     | 
| 
      
 150 
     | 
    
         
            +
                `type` -- either "deletion" or "addition" (default: `""`)</br>
         
     | 
| 
      
 151 
     | 
    
         
            +
                """
         
     | 
| 
      
 152 
     | 
    
         
            +
                if type == "deletion":
         
     | 
| 
      
 153 
     | 
    
         
            +
                    # move file from build pack to overlay in build pack
         
     | 
| 
      
 154 
     | 
    
         
            +
                    default_dir = ctx.meta["observer"]["default_dir_dp"]
         
     | 
| 
      
 155 
     | 
    
         
            +
                    ctx.data.overlays[default_dir][name] = registry[name]
         
     | 
| 
      
 156 
     | 
    
         
            +
                    del registry[name]
         
     | 
| 
      
 157 
     | 
    
         
            +
                elif type == "addition":
         
     | 
| 
      
 158 
     | 
    
         
            +
                    # move function from overlay pack to overlay in build pack
         
     | 
| 
      
 159 
     | 
    
         
            +
                    ctx.data.overlays[overlay_dir][name] = registry_overlay[name]
         
     | 
| 
      
 160 
     | 
    
         
            +
                else:
         
     | 
| 
      
 161 
     | 
    
         
            +
                    # check if files are exactly the same
         
     | 
| 
      
 162 
     | 
    
         
            +
                    if registry[name] != registry_overlay[name]:
         
     | 
| 
      
 163 
     | 
    
         
            +
                        # move function from overlay pack to overlay in build pack
         
     | 
| 
      
 164 
     | 
    
         
            +
                        ctx.data.overlays[overlay_dir][name] = registry_overlay[name]
         
     | 
| 
      
 165 
     | 
    
         
            +
             
     | 
| 
      
 166 
     | 
    
         
            +
                # remove file from overlay pack
         
     | 
| 
      
 167 
     | 
    
         
            +
                if name in registry_overlay:
         
     | 
| 
      
 168 
     | 
    
         
            +
                    del registry_overlay[name]
         
     | 
    
        beet_observer/plugin.py
    CHANGED
    
    | 
         @@ -1,5 +1,44 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            from beet import Context
         
     | 
| 
      
 1 
     | 
    
         
            +
            from beet import Context, run_beet
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            from .data_pack import *
         
     | 
| 
      
 4 
     | 
    
         
            +
            from .resource_pack import *
         
     | 
| 
       2 
5 
     | 
    
         | 
| 
       3 
6 
     | 
    
         | 
| 
       4 
7 
     | 
    
         
             
            def beet_default(ctx: Context):
         
     | 
| 
       5 
     | 
    
         
            -
                 
     | 
| 
      
 8 
     | 
    
         
            +
                if "observer" not in ctx.meta:
         
     | 
| 
      
 9 
     | 
    
         
            +
                    return
         
     | 
| 
      
 10 
     | 
    
         
            +
                # get default directories
         
     | 
| 
      
 11 
     | 
    
         
            +
                if "default_dir" not in ctx.meta["observer"]:
         
     | 
| 
      
 12 
     | 
    
         
            +
                    # default dir not defined
         
     | 
| 
      
 13 
     | 
    
         
            +
                    ctx.meta["observer"]["default_dir_dp"] = "default_overlay"
         
     | 
| 
      
 14 
     | 
    
         
            +
                    ctx.meta["observer"]["default_dir_rp"] = "default_overlay"
         
     | 
| 
      
 15 
     | 
    
         
            +
                elif isinstance(ctx.meta["observer"]["default_dir"], str):
         
     | 
| 
      
 16 
     | 
    
         
            +
                    # default dir is the same for dp and rp
         
     | 
| 
      
 17 
     | 
    
         
            +
                    ctx.meta["observer"]["default_dir_dp"] = ctx.meta["observer"]["default_dir"]
         
     | 
| 
      
 18 
     | 
    
         
            +
                    ctx.meta["observer"]["default_dir_rp"] = ctx.meta["observer"]["default_dir"]
         
     | 
| 
      
 19 
     | 
    
         
            +
                else:
         
     | 
| 
      
 20 
     | 
    
         
            +
                    # default dir is different for dp and rp
         
     | 
| 
      
 21 
     | 
    
         
            +
                    ctx.meta["observer"]["default_dir_dp"] = ctx.meta["observer"]["default_dir"][
         
     | 
| 
      
 22 
     | 
    
         
            +
                        "dp"
         
     | 
| 
      
 23 
     | 
    
         
            +
                    ]
         
     | 
| 
      
 24 
     | 
    
         
            +
                    ctx.meta["observer"]["default_dir_rp"] = ctx.meta["observer"]["default_dir"][
         
     | 
| 
      
 25 
     | 
    
         
            +
                        "rp"
         
     | 
| 
      
 26 
     | 
    
         
            +
                    ]
         
     | 
| 
      
 27 
     | 
    
         
            +
                # loop through all overlays
         
     | 
| 
      
 28 
     | 
    
         
            +
                for overlay in ctx.meta["observer"]["overlays"]:
         
     | 
| 
      
 29 
     | 
    
         
            +
                    # create relative path
         
     | 
| 
      
 30 
     | 
    
         
            +
                    path = f"{ctx.directory}/{overlay['process']}"
         
     | 
| 
      
 31 
     | 
    
         
            +
                    # generate context for overlay pack
         
     | 
| 
      
 32 
     | 
    
         
            +
                    with run_beet(
         
     | 
| 
      
 33 
     | 
    
         
            +
                        config={"data_pack": {"load": "."}, "resource_pack": {"load": "."}},
         
     | 
| 
      
 34 
     | 
    
         
            +
                        directory=path,
         
     | 
| 
      
 35 
     | 
    
         
            +
                    ) as ctx_overlay:
         
     | 
| 
      
 36 
     | 
    
         
            +
                        if "directory" not in overlay:
         
     | 
| 
      
 37 
     | 
    
         
            +
                            dp_dir = f"overlay_{ctx_overlay.data.pack_format}"
         
     | 
| 
      
 38 
     | 
    
         
            +
                            rp_dir = f"overlay_{ctx_overlay.assets.pack_format}"
         
     | 
| 
      
 39 
     | 
    
         
            +
                        else:
         
     | 
| 
      
 40 
     | 
    
         
            +
                            dp_dir = overlay["directory"]
         
     | 
| 
      
 41 
     | 
    
         
            +
                            rp_dir = overlay["directory"]
         
     | 
| 
      
 42 
     | 
    
         
            +
                        # compare build pack and overlay pack
         
     | 
| 
      
 43 
     | 
    
         
            +
                        gen_dp_overlays(ctx, ctx_overlay, dp_dir)
         
     | 
| 
      
 44 
     | 
    
         
            +
                        gen_rp_overlays(ctx, ctx_overlay, rp_dir)
         
     | 
| 
         @@ -0,0 +1,8 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            beet_observer/__init__.py,sha256=wrNZq4cbCCTtIPOQhShOufEQmAhkL5Ww1yOOzF74DTw,45
         
     | 
| 
      
 2 
     | 
    
         
            +
            beet_observer/data_pack.py,sha256=OYGy9vDePpWyDhVpTl2Y-P49UEhsivihOqo17dfNKTM,7166
         
     | 
| 
      
 3 
     | 
    
         
            +
            beet_observer/plugin.py,sha256=DGpWvV2q6yeJ_EyBLShigZl4dutN2yCFDKzzcCGiu8o,1808
         
     | 
| 
      
 4 
     | 
    
         
            +
            beet_observer/resource_pack.py,sha256=ePNdQjeMrEKEkLdDBsnHcMdrne8g505Cd8vfzX5S_cc,111
         
     | 
| 
      
 5 
     | 
    
         
            +
            beet_observer-0.2.1.dist-info/LICENSE,sha256=oBbP6j7sgG9darFSRZxV7iO8yPR1aZiDspSK3mcLpXI,1062
         
     | 
| 
      
 6 
     | 
    
         
            +
            beet_observer-0.2.1.dist-info/METADATA,sha256=WUsicEsv5Vs3qknF4a_rb9KuwQT2QR5WjMPP9lLHnIs,633
         
     | 
| 
      
 7 
     | 
    
         
            +
            beet_observer-0.2.1.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
         
     | 
| 
      
 8 
     | 
    
         
            +
            beet_observer-0.2.1.dist-info/RECORD,,
         
     | 
| 
         @@ -1,6 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            beet_observer/__init__.py,sha256=8wK7UYe2MSHQIJxHDkITKHHyF12XajTz0V6ch1WRbcc,45
         
     | 
| 
       2 
     | 
    
         
            -
            beet_observer/plugin.py,sha256=WduK3CPT2uVndkKst9yOzXWrU2gqafNXi3A0s7BXlcw,70
         
     | 
| 
       3 
     | 
    
         
            -
            beet_observer-0.1.0.dist-info/LICENSE,sha256=oBbP6j7sgG9darFSRZxV7iO8yPR1aZiDspSK3mcLpXI,1062
         
     | 
| 
       4 
     | 
    
         
            -
            beet_observer-0.1.0.dist-info/METADATA,sha256=BJ2V2Y0qO4QMXTUauoQb-u8yma_R8mLDyy4VZ2jOqXY,633
         
     | 
| 
       5 
     | 
    
         
            -
            beet_observer-0.1.0.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
         
     | 
| 
       6 
     | 
    
         
            -
            beet_observer-0.1.0.dist-info/RECORD,,
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     |