Giter Club home page Giter Club logo

archan's Introduction

pawamoy

about language music

πŸͺ Hello world

Hi, I'm TimothΓ©e Mazzucotelli. I develop open-source software, primarily Python tools and libraries. I do this full time: I earn my keep through sponsorships from individual users and companies, which is what makes these projects sustainable and gives you a chance to use them.

You can say hello to me on Mastodon, X, LinkedIn, Matrix, Discord, Telegram, Signal, or by email at [email protected] πŸ“« πŸ‘‹πŸΌ

🌱 Features

  • πŸŽ“ learned computer science at a french university
  • 🐍 about 10 years of experience in development, particularly with Python
  • 🎠 really enjoy sharing code and contributing to other projects
  • πŸ‘” working full time on open-source projects (following a sponsorware strategy)

🌲 Projects

πŸ“˜ Documentation πŸͺ› [Developer] tools #️⃣ Shell stuff
mkdocstrings griffe shellman
mkdocstrings-python aria2p shenv/shenv
mkdocstrings-shell πŸ”’ duty shellm-org/core
mkdocstrings-typescript πŸ”’ failprint shellm-org/cover
mkdocs-autorefs git-changelog shellm-org/daemon
mkdocs-coverage copier-uv shellm-org/debug
mkdocs-manpage copier-pdm shellm-org/format
mkdocs-spellcheck dependenpy shellm-org/loop
mkdocs-pygments πŸ”’ devboard πŸ”’ shellm-org/profiler
markdown-exec pypi-insiders πŸ”’ shellm-org/template
markdown-pycon πŸ”’ insiders-project πŸ”’ shellm-org/trace
happy-path πŸ”’

πŸ‹ See also

Have some green lemon:

green lemon

archan's People

Contributors

kyleking avatar pawamoy avatar pyup-bot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

woosuk1103

archan's Issues

Initial Update

Hi πŸ‘Š

This is my first visit to this fine repo, but it seems you have been working hard to keep all dependencies updated so far.

Once you have closed this issue, I'll create seperate pull requests for every update as soon as I find one.

That's it for now!

Happy merging! πŸ€–

Update documentation

  • new ignore param on all checkers
  • new identifier class attributes on every plugin
  • usage of self.logger in plugins
  • new YAML format: identifier, name and description

Rework the way archan uses groups

Currently, the user is forced to use the following names for groups:

  • framework
  • core_lib
  • app_lib
  • app_module
  • broker
  • data

It must be more flexible. It would allow a better integration in django-archan

Quick Start Questions

I started asking a question, then mostly answered it. This is the condensed version number ~5. Essentially I just ran into a bunch of issues understanding how archan works and how to apply it to my project. I think my below notes might be helpful to others and could be optionally integrated to the README

Would you consider reordering the example commands? I think creating the CSV with dependenpy might be the most common use case and would be helpful if listed first. I wasn't sure where the CSV files were coming from until I dug further

# Generate CSV DSM data for archan (dependenpy must be installed)
dependenpy archan --format=csv archan_dsm.csv

# No configuration, read CSV data from file
archan --no-config --input archan_dsm.csv
# or read CSV data from STDIN
dependenpy archan --format=csv | archan --no-config

# Load configuration file and run archan (see Configuration section to know how archan finds the config file)
archan
# or specify the configuration file to load
archan --config my_config.yml

# Output the list of available plugins in the current environment
archan --list-plugins

I created a modified version of the archan config, but I had to comment out the names to prevent skipping the steps:

analysis:
  archan_pylint.PylintProvider:
    # name: Pylint
    arguments:
      pylint_args:
        - dash_charts
    checkers:
      archan.CodeClean:
        allow_failure: true
        arguments:
          threshold: 10
  dependenpy.InternalDependencies:
    # name: Software Architecture
    arguments:
      packages:
        - dash_charts
    checkers:
      - archan.CompleteMediation
      - archan.EconomyOfMechanism:
          allow_failure: true
          arguments:
            simplicity_factor: 2
      - archan.LayeredArchitecture
      - archan.LeastCommonMechanism:
          allow_failure: true
          arguments:
            independence_factor: 5
  Open Design:
    Source Code: true

Installed the dependencies and ran archan

> poetry add dependenpy git+https://github.com/pawamoy/archan-pylint.git git+https://github.com/pawamoy/archan.git -D

Updating dependencies
Resolving dependencies... (25.4s)

Writing lock file

Package operations: 8 installs, 0 updates, 0 removals

  β€’ Installing dependenpy (3.3.0)
  β€’ Installing lazy-object-proxy (1.4.3)
  β€’ Installing wrapt (1.12.1)
  β€’ Installing astroid (2.4.2)
  β€’ Installing pylint (2.6.0)
  β€’ Installing archan-pylint (0.1.0 ef4a609)
  β€’ Installing tap.py (3.0)
  β€’ Installing archan (0.3.0 9443064)

❯ poetry run archan -c .archan.yaml
TAP version 13
# TAP results for Pylint Provider: Issues per Module
ok 1 Code Clean (ALLOWED FAILURE)
# TAP results for Internal Dependencies
ok 2 Complete Mediation
ok 3 Economy of Mechanism
ok 4 Layered Architecture
ok 5 Least Common Mechanism (ALLOWED FAILURE)
# TAP results for Open Design
ok 6 Source Code

On a side-note, can you publish a new wheel to PyPi? The current one has a typo bug for .ingo and some API differences (notably analyzers vs. analysis)

Windows?

What work is there to port this to windows?

Implement checks

  • Layered architecture
  • Code clean: some pyflakes and mccabe on app modules
  • Open design: will be okay when all others will be implemented
  • Least privileges: need user/object access matrix
  • Separation of privileges: like above

Example CSV files?

Would it be too much to ask to include examples of CSV files to help people try to reverse engineer how this software is working please?

Add capabilities to DSM class

The DSM class should beneficiates from other methods related to adjacency matrices. See the wikipedia pages to list some functions that could be of interest, then implement them. We could have functions to change/sort the order of the elements, and also transitive closure function.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.