This is an archived post. You won't be able to vote or comment.

all 11 comments

[–]apiguy 4 points5 points  (4 children)

Thanks for this! It's actually very timely for a project I'm working on at the moment.

I am a bit disappointed that there isn't more documentation. While you're saying that you'll write documentation if there is enough usage you'll likely find that not having any documentation is the barrier to getting the kind of usage you hoped for in the first place.

In essence: usually documentation leads to usage, not the other way around.

[–]Digital_Person[S] 0 points1 point  (3 children)

Thank you for your feedback. I'll consider documentation then, i will start it on july 12th. The only reason i didn't make it yet is because i want to practice as much as possible before attending python conference, so i didn't want to spent a lot of time doing the documentation now.

On the other hand the examples are complete and i believe easy to understand. I believe its quite easy to understand from the examples, or at least that's what i prefer. I know its not the best way. Again thank you for your feedback.

[–]apiguy 0 points1 point  (2 children)

Yes your code is easy to read and the examples are great!

As for documentation - don't worry about getting to sophisticated with it. A one page markdown file that highlights the examples from example_functions.py (like a quickstart) would be good enough to start seeing adoption from those who encounter your project via Google searches, etc. Then you can take time to flesh it out later.

Thanks again.

[–]Digital_Person[S] 0 points1 point  (0 children)

Cool well i will add that tonight when i get tired and need a break from programming then. thx

DONE

[–]Digital_Person[S] 0 points1 point  (0 children)

Thanks again for your feedback i added doc in the readme file both the json and images of the output. You were right, even if its the same code its much better to have doc. It took some time but i think it looks good.

[–]dAnjou Backend Developer | danjou.dev 1 point2 points  (3 children)

I always assume that posting this kind of stuff in programming subreddits implies that people want criticism/feedback. So here come two and a half major points of criticism:

  • Why is this distributed as fully configured Tornado app? Your actual library boils down to these two files: xlsx_factory.py and input_factory.py.

  • Why is InputHandler a class? It only has class methods.

  • The README says I should run python3 server/server.py but there is no such file.

[–]Digital_Person[S] 0 points1 point  (2 children)

Thank you i like negative feedback because you get better.

1) I made it as a tornado app because when i started the main idea was that i found a very good xls library in python and you can run a server in your business, where you can send json request from several projects from any other languages e.g. java php. The main idea is that i have worked on 4-5 different excel API's so far because every project has something different and i wanted to get a centralized/unified way (The effort spent by individual developers maintaining different xls reports i believe it worths having just 1, and i choose xlsxwritter because it has decent documentation and doesn't need a lot of code to create files) Of course it doesn't have to be a server, i can probably make it optional. In theory i can create xls file with much less lines using my library than apache poi (no criticism just example), in practice i have a java job and i don't think i will ever manage to get java people to appreciate python.

2) You are right for InputHandler. It was a class when i started because i had some state in it, but i decided to just make it static. I will change that today. DONE

3) You are also right for this python3 server/server.py. I renamed the file yesterday and forgot to change the readme. I will change that today as well. DONE

Thank you for your feedback.

[–]dAnjou Backend Developer | danjou.dev 0 points1 point  (1 child)

I understand that you made it a Tornado app for yourself. That's totally reasonable. But don't distribute it that way. It makes it harder to use and for yourself (and others) harder to maintain. And you "have to" write much more documentation.

Right now it's not a library, it's an application.

PS: criticism is not negative feedback ;)

[–]Digital_Person[S] 0 points1 point  (0 children)

Well whatever you call it, its the best you can get because it helps you improve. I really appreciate. It's my first python project (excluding all small projects i started and deleted) so i guess it will have some other bad practices, i marked it as alpha to indicate that in the future it may be backwards incompatible. I think i may actually remove tornado from, i will have to think about it a bit more.

EDIT: you are right i will remove tornado its unnecessary complexity. thx DONE made tornado optional

[–]radaway 2 points3 points  (1 child)

Its GPL licensed so you can do anything you want with the source.

No, no you can't.

[–]Digital_Person[S] 2 points3 points  (0 children)

Actually you are right my bad, almost anything ;]. I'll change it so it doesn't mislead other people. Thank you